[Bf-blender-cvs] [85eb2ea3] temp-ui-widget-refactor: Avoid special drawing calls for labels within menus by adding a widget type for them

Julian Eisel noreply at git.blender.org
Thu Jul 16 21:56:37 CEST 2015


Commit: 85eb2ea3bb81d8fdfc7741c5a1bb2b318858a8e0
Author: Julian Eisel
Date:   Thu Jul 16 19:50:21 2015 +0200
Branches: temp-ui-widget-refactor
https://developer.blender.org/rB85eb2ea3bb81d8fdfc7741c5a1bb2b318858a8e0

Avoid special drawing calls for labels within menus by adding a widget type for them

===================================================================

M	source/blender/editors/interface/interface_intern.h
M	source/blender/editors/interface/interface_widgets.c
M	source/blender/editors/interface/widgets/widgets.h
M	source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c

===================================================================

diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index c935438..adeb7cf 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -84,8 +84,9 @@ typedef enum {
 	UI_WTYPE_MENU_ICON_RADIO,
 	UI_WTYPE_MENU_POINTER_LINK,
 	UI_WTYPE_MENU_NODE_LINK,
-	
+
 	UI_WTYPE_PULLDOWN,
+	UI_WTYPE_MENU_LABEL,
 	UI_WTYPE_MENU_ITEM,
 	UI_WTYPE_MENU_ITEM_RADIAL,
 	UI_WTYPE_MENU_BACK,
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 390e3bf..fe9f2e3 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -1287,6 +1287,11 @@ static uiWidgetType *widget_type(uiWidgetTypeEnum type)
 			break;
 			
 		/* in menus */
+		case UI_WTYPE_MENU_LABEL:
+			wt.wcol_theme = &btheme->tui.wcol_menu_back;
+			wt.draw_type = draw_style->menu_label;
+			break;
+
 		case UI_WTYPE_MENU_ITEM:
 			wt.wcol_theme = &btheme->tui.wcol_menu_item;
 			wt.draw_type = draw_style->menu_item;
@@ -1416,7 +1421,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
 	if (but->dt == UI_EMBOSS_PULLDOWN) {
 		switch (but->type) {
 			case UI_BTYPE_LABEL:
-				widget_draw_text_icon(&style->widgetlabel, &tui->wcol_menu_back, but, rect);
+				wt = widget_type(UI_WTYPE_MENU_LABEL);
 				break;
 			case UI_BTYPE_SEPR_LINE:
 				ui_draw_separator(rect, &tui->wcol_menu_item);
@@ -1438,12 +1443,13 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
 
 		switch (but->type) {
 			case UI_BTYPE_LABEL:
-				if (but->block->flag & UI_BLOCK_LOOP)
-					widget_draw_text_icon(&style->widgetlabel, &tui->wcol_menu_back, but, rect);
+				if (but->block->flag & UI_BLOCK_LOOP) {
+					wt = widget_type(UI_WTYPE_MENU_LABEL);
+				}
 				else {
 					wt = widget_type(UI_WTYPE_LABEL);
-					fstyle = &style->widgetlabel;
 				}
+				fstyle = &style->widgetlabel;
 				break;
 
 			case UI_BTYPE_SEPR:
@@ -1642,7 +1648,11 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
 		if (disabled)
 			ui_widget_color_disabled(wt);
 
-		wt->draw_type->state(wt, state);
+		/* *** callback routine *** */
+
+		if (wt->draw_type->state) {
+			wt->draw_type->state(wt, state);
+		}
 
 		if (wt->draw_type->custom) {
 			wt->draw_type->custom(but, &wt->wcol, rect, state, roundboxalign);
diff --git a/source/blender/editors/interface/widgets/widgets.h b/source/blender/editors/interface/widgets/widgets.h
index 3a981e7..3823de4 100644
--- a/source/blender/editors/interface/widgets/widgets.h
+++ b/source/blender/editors/interface/widgets/widgets.h
@@ -86,6 +86,7 @@ typedef struct uiWidgetDrawStyle {
 	                 *menu_icon_radio,
 	                 *menu_item,
 	                 *menu_item_radial,
+	                 *menu_label,
 	                 *menu_node_link,
 	                 *menu_pointer_link,
 	                 *menu_radio,
diff --git a/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c b/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c
index c8a875a..c29e397 100644
--- a/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c
+++ b/source/blender/editors/interface/widgets/widgets_draw/drawstyle_classic.c
@@ -943,6 +943,13 @@ uiWidgetDrawType drawtype_classic_menu_item_radial = {
 	/* text */   widget_draw_text_icon,
 };
 
+uiWidgetDrawType drawtype_classic_menu_label = {
+	/* state */  widget_state_nothing,
+	/* draw */   NULL,
+	/* custom */ NULL,
+	/* text */   widget_draw_text_icon,
+};
+
 uiWidgetDrawType drawtype_classic_menu_node_link = {
 	/* state */  widget_state,
 	/* draw */   widget_menunodebut,
@@ -1062,6 +1069,7 @@ uiWidgetDrawStyle WidgetStyle_Classic = {
 	/* menu_icon_radio */   &drawtype_classic_menu_icon_radio,
 	/* menu_item */         &drawtype_classic_menu_item,
 	/* menu_item_radial */  &drawtype_classic_menu_item_radial,
+	/* menu_item_label */   &drawtype_classic_menu_label,
 	/* menu_node_link */    &drawtype_classic_menu_node_link,
 	/* menu_pointer_link */ &drawtype_classic_menu_pointer_link, /* not used (yet?) */
 	/* menu_radio */        &drawtype_classic_menu_radio,




More information about the Bf-blender-cvs mailing list