diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2013-11-26 13:29:36 +0400 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2013-11-26 13:41:19 +0400 |
commit | 0570bdc13d297a80c702a69f72bf28f8d4e2e9b5 (patch) | |
tree | a48f10eb46414e65c95fb01b2d1d31eb6c0691d0 /source/blender/editors/interface/interface_layout.c | |
parent | a6188afaf341780e69d59bf76aa5154a09a7b553 (diff) |
Fix own regression in rB254aa8f3a0fb: Titles and sub-titles in menus were drawn shifted to the right.
Reported by plasmasolution over IRC, thanks.
Also fixes wrong handling of "sub-titles" with icons in EnumO menus (they were just treated as text-only ones).
Dev notes: in fact, that clean up commit revealed kind of an "hidden bug that happend to work well"
(or at least, a very bad hack): with titles without icon, code used to use uiItemL with ICON_NONE.
However, as the root layout is a menu one, internal ui code would add a dummy blank icon,
and set UI_HAS_ICON flag for the label button. But in the affected menus, code afterward assigned
UI_TEXT_LEFT to but->flag, thus erasing the (internal) UI_HAS_ICON. As UI_TEXT_LEFT was moved to
but->drawflag, the internal flag was no more erased, and the fake icon was drawn, creating that
shift-to-the-right effect. Turns out we do not even have to set UI_TEXT_LEFT in these cases,
just add label buttons without icon is enough!
Diffstat (limited to 'source/blender/editors/interface/interface_layout.c')
-rw-r--r-- | source/blender/editors/interface/interface_layout.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index 28055ba6c26..3cd022bc640 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -908,9 +908,15 @@ void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname block->flag |= UI_BLOCK_NO_FLIP; } - uiItemL(column, item->name, ICON_NONE); - but = block->buttons.last; - but->drawflag = UI_BUT_TEXT_LEFT; + if (item->icon) { + uiItemL(column, item->name, item->icon); + but = block->buttons.last; + } + else { + /* Do not use uiItemL here, as our root layout is a menu one, it will add a fake blank icon! */ + but = uiDefBut(block, LABEL, 0, item->name, 0, 0, UI_UNIT_X * 5, UI_UNIT_Y, NULL, + 0.0, 0.0, 0, 0, ""); + } ui_but_tip_from_enum_item(but, item); } else { /* XXX bug here, colums draw bottom item badly */ |