diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-05-23 18:24:40 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-05-23 18:24:40 +0400 |
commit | 28002edb6bf295d7d58c71cc402fd86d260faf2f (patch) | |
tree | 70d869810130779f978eb0dcdd164a30d0c73914 /source/blender/editors/interface | |
parent | 9b45f607c927028960406bb558a9fe7d9f67c0ba (diff) |
Finish changes in up/down arrows for menus
Restored single triangle for special menus, which still isn't perfect but
probably makes more sense.
Added drawflag bit flags to button, which is currently used to declare, that
button need to have up/down arrows. This is needed because it's tricky to
distinguish if button should have such arrows. For example, ID search buttons
is a simple block button which doesn't directly mean it'll have pop-up menu
and not all buttons which cases pop-up menu to display need to have such
arrows.
So currently only ID selector button is forcing up/down arrows to be displayed,
all the rest buttons now behaves in the same way as it used to be before.
Diffstat (limited to 'source/blender/editors/interface')
4 files changed, 17 insertions, 4 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 0c13b5de02e..c0cd17d16d2 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -3356,6 +3356,16 @@ void uiButClearFlag(uiBut *but, int flag) but->flag &= ~flag; } +void uiButSetDrawFlag(uiBut *but, int flag) +{ + but->drawflag |= flag; +} + +void uiButClearDrawFlag(uiBut *but, int flag) +{ + but->drawflag &= ~flag; +} + int uiButGetRetVal(uiBut *but) { return but->retval; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 2c4ec9ac482..5d12bdf71da 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -150,7 +150,7 @@ typedef struct { struct uiBut { struct uiBut *next, *prev; - int flag; + int flag, drawflag; short type, pointype, bit, bitnr, retval, strwidth, ofs, pos, selsta, selend, alignnr; short pad1; diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 6b0ffb1b54e..6d1766c8bf1 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -376,6 +376,9 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str else if (flag & UI_ID_BROWSE) { but = uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X * 1.6, UI_UNIT_Y, TIP_(template_id_browse_tip(type))); + + uiButSetDrawFlag(but, UI_BUT_DRAW_ENUM_ARROWS); + if (type) { but->icon = RNA_struct_ui_icon(type); /* default dragging of icon for id browse buttons */ diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 2edc2b22e7e..4d483b69ca2 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -3136,10 +3136,10 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct /* no text, with icon */ else if (!but->str[0] && but->icon) { - if (but->flag & UI_ICON_PREVIEW) - wt = widget_type(UI_WTYPE_MENU_ICON_RADIO); /* no arrows */ - else + if (but->drawflag & UI_BUT_DRAW_ENUM_ARROWS) wt = widget_type(UI_WTYPE_MENU_RADIO); /* with arrows */ + else + wt = widget_type(UI_WTYPE_MENU_ICON_RADIO); /* no arrows */ } /* with menu arrows */ else |