From 13ca63d2adad0da7b73ed3e38da53363e1de3428 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 1 Jun 2018 15:04:51 +0200 Subject: Draw background on pulldown widgets if the header is transparent. Since the viewport header now supports transparency, text on pulldowns can be hard to read if their color matches the viewport content. Background is drawn using the 'inner' theme color, that was unused until now. --- .../blender/editors/interface/interface_widgets.c | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'source/blender/editors/interface/interface_widgets.c') diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index e4faac5129e..928ac8c9171 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -2626,15 +2626,9 @@ static void widget_state_nothing(uiWidgetType *wt, int UNUSED(state)) } /* special case, button that calls pulldown */ -static void widget_state_pulldown(uiWidgetType *wt, int state) +static void widget_state_pulldown(uiWidgetType *wt, int UNUSED(state)) { wt->wcol = *(wt->wcol_theme); - - copy_v4_v4_char(wt->wcol.inner, wt->wcol.inner_sel); - copy_v3_v3_char(wt->wcol.outline, wt->wcol.inner); - - if (state & UI_ACTIVE) - copy_v3_v3_char(wt->wcol.text, wt->wcol.text_sel); } /* special case, pie menu items */ @@ -3812,10 +3806,23 @@ static void widget_menunodebut(uiWidgetColors *wcol, rcti *rect, int UNUSED(stat static void widget_pulldownbut(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) { - if (state & UI_ACTIVE) { + float back[4]; + UI_GetThemeColor4fv(TH_BACK, back); + + if ((state & UI_ACTIVE) || (back[3] < 1.0f)) { uiWidgetBase wtb; const float rad = wcol->roundness * U.widget_unit; + if (state & UI_ACTIVE) { + copy_v4_v4_char(wcol->inner, wcol->inner_sel); + copy_v3_v3_char(wcol->text, wcol->text_sel); + copy_v3_v3_char(wcol->outline, wcol->inner); + } + else { + wcol->inner[3] *= 1.0f - back[3]; + wcol->outline[3] = 0.0f; + } + widget_init(&wtb); /* half rounded */ -- cgit v1.2.3