Panel icon sizing bug in 4.4

Mike Kasick mkasick-pd at club.cc.cmu.edu
Sun May 23 18:53:15 CEST 2010


Hi folks,

This issue was first raised on the KDE community forums [1], for which
my reply is fifth in the thread.  It was recommended that I post the
issue here.

There appears to be a bug, or at least a change in behavior for panel icon
sizing in KDE 4.4 (specifically Debian 4.4.3-2).  In previous versions of
KDE (e.g., 4.3), panel icons would resize with the panel up to at least
48x48.  However, as of KDE 4.4 panel icons appear to be restricted to 32x32
in size.

I'm not sure if this change was intentional or a bug.  From the thread, it
sounds as if it was intended to cap panel icon sizes so they don't become
too large, but that 32x32 may be an unintentionally low cap.

Personally, I like using a "large" (tall, height 69 I believe) panel as
this is the minimum size that allows System Tray icons to stack in two
rows.  It allow for a three-row Pager and Task Manager with a reasonable
per-row size, and affords widgets like System Monitor enough height to show
intersting features.  In such a configuration, 48x48 panel icons are an
ideal size.  Unfortunately the current 32x32 icon cap looks a bit silly in
this configuration.

Anyways, I've traced the immediate problem to the addition of the method
"IconWidget::sizeHint" in libplasma. In KDE 4.3 this method didn't exist,
and so would fall back on the superclass QGraphicsWidget's implementation.
In the new implementation, sizeHint returns KIconLoader::SizeMedium (i.e.,
32x32) when queried for the "PreferredSize".

There's a few solutions to this problem. A simple one is to remove the
IconWidget::sizeHint method entirely, so it falls back on QGraphicsWidget's
implementation, restoring the behavior of KDE 4.3.  Another is to modify
IconWidget::sizeHint to return SizeLarge (48x48) for PreferredSize instead.

Presumably though the IconWidget::sizeHint method was added for a
particular purpose (out of curiosity, does anyone have a pointer to a
comment/post that describes why?), and so modifying it as such may have
unintended consequences elsewhere.  In which case, a more appropriate fix
might be to add a IconApplet::sizeHint (or IconApplet::preferredSize?  I'm
not very familiar with the Plasma API) method which returns
(KIconLoader::SizeLarge + margin) or whichever math is appropriate.  A
similar method would have to be added to the kickoff applet and any other
that uses IconWidget and should behavior similarly.

Thoughts?

Thanks!

[1] http://forum.kde.org/viewtopic.php?f=67&t=86555


More information about the Plasma-devel mailing list