[PATCH] Fix menu item widths in KStyle-based styles

Maksim Orlovich mo85 at cornell.edu
Wed Jan 2 16:41:00 GMT 2008


<snip>

> Meanwhile QMenuPrivate::calcActionRects() iterates over each action in
> the menu to be displayed and calculates the maximum item width (using
> the current style's sizeFromContents() which includes the shortcut
> text width) and also the maximum "tab width" (width of the shortcut
> text).  It then adds the maximum tab width to the maximum item width
> at the end to get the final width.

Thanks. Nice catch.

>
> I think the error here is in the QMenu code, since I would consider
> the shortcut text part of the contents of a menu item and so the style
> should have control over the amount of space allocated for it.
> However, I also don't think this bug can be fixed within Qt since it
> would break existing 3rd-party styles.

The expectation has always been that styles are coded against whatever Qt
does, and not anything one would think logical or find in the
documentation.


Attached is a trivial patch
> against KStyle which fixes the problem, although the documentation
> needs updates as well to explain the problem.
>
> One question is what to do about the AccelSpace enum value in
> kstyle.h.  Removing it would be BIC.

How about the attached alternative? There is no reason to not add the
margin, is there?

Note: if you're fine with it, please commit, I have no net access on my
development machine atm, and might not for a few days

-Maks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: menu-item-width.diff
Type: application/octet-stream
Size: 1075 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080102/87662d09/attachment.obj>


More information about the kde-core-devel mailing list