From 0570bdc13d297a80c702a69f72bf28f8d4e2e9b5 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 26 Nov 2013 10:29:36 +0100 Subject: 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! --- source/blender/editors/interface/interface_layout.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'source/blender/editors/interface/interface_layout.c') 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 */ -- cgit v1.2.3