[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23539] trunk/blender/source/blender/ editors: Fix drawing of MENU buttons with only an icon, was not aligned right

Brecht Van Lommel brecht at blender.org
Mon Sep 28 17:59:10 CEST 2009


Revision: 23539
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23539
Author:   blendix
Date:     2009-09-28 17:59:09 +0200 (Mon, 28 Sep 2009)

Log Message:
-----------
Fix drawing of MENU buttons with only an icon, was not aligned right
and showing unneeded triangles (+ buttons in Boids Brain).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_intern.h
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/interface/interface_widgets.c

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2009-09-28 15:49:26 UTC (rev 23538)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2009-09-28 15:59:09 UTC (rev 23539)
@@ -424,6 +424,7 @@
 uiBut *uiDefPulldownBut(uiBlock *block, uiBlockCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip);
 uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip);
 uiBut *uiDefIconTextMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip);
+uiBut *uiDefIconMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, short x1, short y1, short x2, short y2, char *tip);
 
 uiBut *uiDefBlockBut(uiBlock *block, uiBlockCreateFunc func, void *func_arg1, char *str, short x1, short y1, short x2, short y2, char *tip);
 uiBut *uiDefBlockButN(uiBlock *block, uiBlockCreateFunc func, void *argN, char *str, short x1, short y1, short x2, short y2, char *tip);

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2009-09-28 15:49:26 UTC (rev 23538)
+++ trunk/blender/source/blender/editors/interface/interface.c	2009-09-28 15:59:09 UTC (rev 23539)
@@ -3064,6 +3064,20 @@
 	return but;
 }
 
+uiBut *uiDefIconMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, short x1, short y1, short x2, short y2, char *tip)
+{
+	uiBut *but= ui_def_but(block, PULLDOWN, 0, "", x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
+
+	but->icon= (BIFIconID) icon;
+	but->flag |= UI_HAS_ICON;
+	but->flag &=~ UI_ICON_LEFT;
+
+	but->menu_create_func= func;
+	ui_check_but(but);
+
+	return but;
+}
+
 /* Block button containing both string label and icon */
 uiBut *uiDefIconTextBlockBut(uiBlock *block, uiBlockCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip)
 {

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h	2009-09-28 15:49:26 UTC (rev 23538)
+++ trunk/blender/source/blender/editors/interface/interface_intern.h	2009-09-28 15:59:09 UTC (rev 23539)
@@ -72,6 +72,7 @@
 	
 	/* menus */
 	UI_WTYPE_MENU_RADIO,
+	UI_WTYPE_MENU_ICON_RADIO,
 	UI_WTYPE_MENU_POINTER_LINK,
 	
 	UI_WTYPE_PULLDOWN,

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c	2009-09-28 15:49:26 UTC (rev 23538)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c	2009-09-28 15:59:09 UTC (rev 23539)
@@ -1183,8 +1183,10 @@
 	if(layout->root->type == UI_LAYOUT_HEADER) /* ugly .. */
 		w -= 10;
 
-	if(icon)
+	if(name[0] && icon)
 		but= uiDefIconTextMenuBut(block, func, arg, icon, (char*)name, 0, 0, w, h, "");
+	else if(icon)
+		but= uiDefIconMenuBut(block, func, arg, icon, 0, 0, w, h, "");
 	else
 		but= uiDefMenuBut(block, func, arg, (char*)name, 0, 0, w, h, "");
 

Modified: trunk/blender/source/blender/editors/interface/interface_widgets.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_widgets.c	2009-09-28 15:49:26 UTC (rev 23538)
+++ trunk/blender/source/blender/editors/interface/interface_widgets.c	2009-09-28 15:59:09 UTC (rev 23539)
@@ -1973,7 +1973,19 @@
 	
 	/* text space */
 	rect->xmax -= (rect->ymax-rect->ymin);
+}
+
+static void widget_menuiconbut(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
+{
+	uiWidgetBase wtb;
 	
+	widget_init(&wtb);
+	
+	/* half rounded */
+	round_box_edges(&wtb, roundboxalign, rect, 4.0f);
+	
+	/* decoration */
+	widgetbase_draw(&wtb, wcol);
 }
 
 static void widget_pulldownbut(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
@@ -2209,13 +2221,17 @@
 			wt.wcol_theme= &btheme->tui.wcol_menu;
 			wt.draw= widget_menubut;
 			break;
+
+		case UI_WTYPE_MENU_ICON_RADIO:
+			wt.wcol_theme= &btheme->tui.wcol_menu;
+			wt.draw= widget_menuiconbut;
+			break;
 			
 		case UI_WTYPE_MENU_POINTER_LINK:
 			wt.wcol_theme= &btheme->tui.wcol_menu;
 			wt.draw= widget_menubut;
 			break;
 			
-			
 		case UI_WTYPE_PULLDOWN:
 			wt.wcol_theme= &btheme->tui.wcol_pulldown;
 			wt.draw= widget_pulldownbut;
@@ -2405,7 +2421,10 @@
 			case MENU:
 			case BLOCK:
 			case ICONTEXTROW:
-				wt= widget_type(UI_WTYPE_MENU_RADIO);
+				if(!but->str[0] && but->icon)
+					wt= widget_type(UI_WTYPE_MENU_ICON_RADIO);
+				else
+					wt= widget_type(UI_WTYPE_MENU_RADIO);
 				break;
 				
 			case PULLDOWN:





More information about the Bf-blender-cvs mailing list