Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ebb <matt@mke3.net>2010-04-06 11:02:16 +0400
committerMatt Ebb <matt@mke3.net>2010-04-06 11:02:16 +0400
commit5304a65b50103c405cc5130a479a36833ec7f9bd (patch)
tree9cb6c9928f475a1963bd0fe52a73841db6479ee2 /source/blender/editors/interface
parentb9d60f20102b4bf621a9bca244f627177af1cd99 (diff)
Fix [#21516] UI artifacts in array modifier
Modify the glClearColor used to draw disabled buttons, when creating a ROUNDBOX ui element. Made a convenience function and rippled it though, too.
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface.c2
-rw-r--r--source/blender/editors/interface/interface_widgets.c22
-rw-r--r--source/blender/editors/interface/resources.c8
3 files changed, 30 insertions, 2 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 1267a1c1737..77958b3454b 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -749,6 +749,8 @@ void uiDrawBlock(const bContext *C, uiBlock *block)
wmOrtho2(-0.01f, ar->winx-0.01f, -0.01f, ar->winy-0.01f);
+ UI_ThemeClearColor(TH_BACK);
+
/* back */
if(block->flag & UI_BLOCK_LOOP)
ui_draw_menu_back(&style, block, &rect);
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index af990214686..dac689ca933 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -2318,6 +2318,22 @@ static void widget_radiobut(uiWidgetColors *wcol, rcti *rect, int state, int rou
}
+static void widget_box(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
+{
+ uiWidgetBase wtb;
+
+ widget_init(&wtb);
+
+ /* half rounded */
+ round_box_edges(&wtb, roundboxalign, rect, 4.0f);
+
+ widgetbase_draw(&wtb, wcol);
+
+ /* store the box bg as gl clearcolor, to retrieve later when drawing semi-transparent rects
+ * over the top to indicate disabled buttons */
+ glClearColor(wcol->inner[0]/255.0, wcol->inner[1]/255.0, wcol->inner[2]/255.0, 1.0);
+}
+
static void widget_but(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
{
uiWidgetBase wtb;
@@ -2384,10 +2400,11 @@ static void widget_disabled(rcti *rect)
/* can't use theme TH_BACK or TH_PANEL... undefined */
glGetFloatv(GL_COLOR_CLEAR_VALUE, col);
glColor4f(col[0], col[1], col[2], 0.5f);
+
/* need -1 and +1 to make it work right for aligned buttons,
* but problem may be somewhere else? */
- glRectf(rect->xmin-1, rect->ymin, rect->xmax, rect->ymax+1);
-
+ glRectf(rect->xmin-1, rect->ymin-1, rect->xmax, rect->ymax+1);
+
glDisable(GL_BLEND);
}
@@ -2504,6 +2521,7 @@ static uiWidgetType *widget_type(uiWidgetTypeEnum type)
break;
case UI_WTYPE_BOX:
+ wt.custom= widget_box;
wt.wcol_theme= &btheme->tui.wcol_box;
break;
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index b22ef5bbe52..e2bd8fc163e 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -944,6 +944,14 @@ void UI_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, in
col[2] = b;
}
+void UI_ThemeClearColor(int colorid)
+{
+ float col[3];
+
+ UI_GetThemeColor3fv(colorid, col);
+ glClearColor(col[0], col[1], col[2], 0.0);
+}
+
void UI_make_axis_color(char *src_col, char *dst_col, char axis)
{
switch(axis)