[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