From 5bb11cfde2526a849e0b2de791f99293abf7615b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 11 Sep 2018 10:56:08 +1000 Subject: UI: split theme draw style into separate field Was using UI_BLOCK_LOOP to control draw style, this meant we couldn't use popup theme colors for cases where it the interface has the same purpose as a popup but happens not to use this flag. --- source/blender/editors/interface/interface.c | 5 +++++ source/blender/editors/interface/interface_intern.h | 3 ++- .../blender/editors/interface/interface_region_color_picker.c | 1 + source/blender/editors/interface/interface_region_menu_pie.c | 1 + .../blender/editors/interface/interface_region_menu_popup.c | 1 + source/blender/editors/interface/interface_region_popup.c | 1 + source/blender/editors/interface/interface_templates.c | 2 ++ source/blender/editors/interface/interface_widgets.c | 11 ++++++----- 8 files changed, 19 insertions(+), 6 deletions(-) (limited to 'source/blender/editors/interface') diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index a0ea5bbfe19..2e4cab5ec24 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2879,6 +2879,11 @@ void UI_block_emboss_set(uiBlock *block, char dt) block->dt = dt; } +void UI_block_theme_style_set(uiBlock *block, char theme_style) +{ + block->theme_style = theme_style; +} + /** * \param but: Button to update. * \param validate: When set, this function may change the button value. diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 75f2efdf3aa..11691fd8365 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -404,9 +404,10 @@ struct uiBlock { short alignnr; char direction; + char theme_style; /* UI_BLOCK_THEME_STYLE_* */ char dt; /* drawtype: UI_EMBOSS, UI_EMBOSS_NONE ... etc, copied to buttons */ bool auto_open; - char _pad[7]; + char _pad[6]; double auto_open_last; const char *lockstr; diff --git a/source/blender/editors/interface/interface_region_color_picker.c b/source/blender/editors/interface/interface_region_color_picker.c index 00462b456ea..afa3486cf6c 100644 --- a/source/blender/editors/interface/interface_region_color_picker.c +++ b/source/blender/editors/interface/interface_region_color_picker.c @@ -629,6 +629,7 @@ uiBlock *ui_block_func_COLOR(bContext *C, uiPopupBlockHandle *handle, void *arg_ ui_block_colorpicker(block, handle->retvec, &but->rnapoin, but->rnaprop, show_picker); block->flag = UI_BLOCK_LOOP | UI_BLOCK_KEEP_OPEN | UI_BLOCK_OUT_1 | UI_BLOCK_MOVEMOUSE_QUIT; + UI_block_theme_style_set(block, UI_BLOCK_THEME_STYLE_POPUP); UI_block_bounds_set_normal(block, 0.5 * UI_UNIT_X); block->block_event_func = ui_colorpicker_small_wheel_cb; diff --git a/source/blender/editors/interface/interface_region_menu_pie.c b/source/blender/editors/interface/interface_region_menu_pie.c index 41001d65d82..ef2d273bab6 100644 --- a/source/blender/editors/interface/interface_region_menu_pie.c +++ b/source/blender/editors/interface/interface_region_menu_pie.c @@ -87,6 +87,7 @@ static uiBlock *ui_block_func_PIE(bContext *UNUSED(C), uiPopupBlockHandle *handl UI_block_layout_resolve(block, &width, &height); UI_block_flag_enable(block, UI_BLOCK_LOOP | UI_BLOCK_NUMSELECT); + UI_block_theme_style_set(block, UI_BLOCK_THEME_STYLE_POPUP); block->minbounds = minwidth; block->bounds = 1; diff --git a/source/blender/editors/interface/interface_region_menu_popup.c b/source/blender/editors/interface/interface_region_menu_popup.c index fa7113f195e..fac96fc2154 100644 --- a/source/blender/editors/interface/interface_region_menu_popup.c +++ b/source/blender/editors/interface/interface_region_menu_popup.c @@ -235,6 +235,7 @@ static uiBlock *ui_block_func_POPUP(bContext *C, uiPopupBlockHandle *handle, voi uiBut *but_activate = NULL; UI_block_flag_enable(block, UI_BLOCK_LOOP | UI_BLOCK_NUMSELECT); + UI_block_theme_style_set(block, UI_BLOCK_THEME_STYLE_POPUP); UI_block_direction_set(block, direction); /* offset the mouse position, possibly based on earlier selection */ diff --git a/source/blender/editors/interface/interface_region_popup.c b/source/blender/editors/interface/interface_region_popup.c index 656c59055af..93fd62b5c66 100644 --- a/source/blender/editors/interface/interface_region_popup.c +++ b/source/blender/editors/interface/interface_region_popup.c @@ -502,6 +502,7 @@ uiBlock *ui_popup_block_refresh( } block->flag |= UI_BLOCK_LOOP; + UI_block_theme_style_set(block, UI_BLOCK_THEME_STYLE_POPUP); /* defer this until blocks are translated (below) */ block->oldblock = NULL; diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 941153ff179..d9be0abfb78 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -267,6 +267,7 @@ static uiBlock *id_search_menu(bContext *C, ARegion *ar, void *arg_litem) block = UI_block_begin(C, ar, "_popup", UI_EMBOSS); UI_block_flag_enable(block, UI_BLOCK_LOOP | UI_BLOCK_SEARCH_MENU); + UI_block_theme_style_set(block, UI_BLOCK_THEME_STYLE_POPUP); /* preview thumbnails */ if (template_ui.prv_rows > 0 && template_ui.prv_cols > 0) { @@ -1774,6 +1775,7 @@ static uiBlock *ui_icon_view_menu_cb(bContext *C, ARegion *ar, void *arg_litem) block = UI_block_begin(C, ar, "_popup", UI_EMBOSS_PULLDOWN); UI_block_flag_enable(block, UI_BLOCK_LOOP | UI_BLOCK_NO_FLIP); + UI_block_theme_style_set(block, UI_BLOCK_THEME_STYLE_POPUP); RNA_property_enum_items(C, &args.ptr, args.prop, &item, NULL, &free); diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index a7de70629d1..be7bba23c90 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1473,7 +1473,7 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b #endif /* cut string in 2 parts - only for menu entries */ - if ((but->block->flag & UI_BLOCK_LOOP) && + if ((but->block->theme_style == UI_BLOCK_THEME_STYLE_POPUP) && (but->editstr == NULL)) { if (but->flag & UI_BUT_HAS_SEP_CHAR) { @@ -3749,7 +3749,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct wt->wcol_theme = &tui->wcol_box; wt->state = widget_state; } - else if (but->block->flag & UI_BLOCK_LOOP) { + else if (but->block->theme_style == UI_BLOCK_THEME_STYLE_POPUP) { wt->wcol_theme = &tui->wcol_menu_back; wt->state = widget_state; } @@ -3785,8 +3785,9 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct case UI_BTYPE_SEARCH_MENU: wt = widget_type(UI_WTYPE_NAME); - if (but->block->flag & UI_BLOCK_LOOP) + if (but->block->theme_style == UI_BLOCK_THEME_STYLE_POPUP) { wt->wcol_theme = &btheme->tui.wcol_menu_back; + } break; case UI_BTYPE_BUT_TOGGLE: @@ -3805,9 +3806,9 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct wt = widget_type(UI_WTYPE_TOGGLE); /* option buttons have strings outside, on menus use different colors */ - if (but->block->flag & UI_BLOCK_LOOP) + if (but->block->theme_style == UI_BLOCK_THEME_STYLE_POPUP) { wt->state = widget_state_option_menu; - + } break; case UI_BTYPE_MENU: -- cgit v1.2.3