[Bf-blender-cvs] [a7faad9] master: Code cleanup: UI - de-duplicate menu/row/listrow enum logic
Campbell Barton
noreply at git.blender.org
Wed Mar 12 12:56:38 CET 2014
Commit: a7faad9aa11c5a8cab4497b7eb8345ce05a09814
Author: Campbell Barton
Date: Wed Mar 12 19:11:09 2014 +1100
https://developer.blender.org/rBa7faad9aa11c5a8cab4497b7eb8345ce05a09814
Code cleanup: UI - de-duplicate menu/row/listrow enum logic
===================================================================
M source/blender/editors/interface/interface.c
===================================================================
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 8751741..765a73b 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -3165,52 +3165,46 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s
/* use rna values if parameters are not specified */
if (!str) {
- if (type == MENU && proptype == PROP_ENUM) {
+ if (ELEM3(type, MENU, ROW, LISTROW) && proptype == PROP_ENUM) {
+ /* MENU is handled a little differently here */
EnumPropertyItem *item;
- int totitem, value;
+ int value;
bool free;
int i;
- RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
- value = RNA_property_enum_get(ptr, prop);
- i = RNA_enum_from_value(item, value);
- if (i != -1) {
- str = item[i].name;
- icon = item[i].icon;
+ RNA_property_enum_items(block->evil_C, ptr, prop, &item, NULL, &free);
+
+ if (type == MENU) {
+ value = RNA_property_enum_get(ptr, prop);
}
else {
- str = "";
+ value = (int)max;
}
- if (free) {
- MEM_freeN(item);
- }
+ i = RNA_enum_from_value(item, value);
+ if (i != -1) {
+ str = item[i].name;
+ icon = item[i].icon;
#ifdef WITH_INTERNATIONAL
- str = CTX_IFACE_(RNA_property_translation_context(prop), str);
+ str = CTX_IFACE_(RNA_property_translation_context(prop), str);
#endif
-
- func = ui_def_but_rna__menu;
- }
- else if (ELEM(type, ROW, LISTROW) && proptype == PROP_ENUM) {
- EnumPropertyItem *item, *item_array = NULL;
- bool free;
-
- /* get untranslated, then translate the single string we need */
- RNA_property_enum_items(block->evil_C, ptr, prop, &item_array, NULL, &free);
- for (item = item_array; item->identifier; item++) {
- if (item->identifier[0] && item->value == (int)max) {
- str = CTX_IFACE_(RNA_property_translation_context(prop), item->name);
- icon = item->icon;
- break;
+ }
+ else {
+ if (type == MENU) {
+ str = "";
+ }
+ else {
+ str = RNA_property_ui_name(prop);
}
}
- if (!str) {
- str = RNA_property_ui_name(prop);
+ if (type == MENU) {
+ func = ui_def_but_rna__menu;
}
+
if (free) {
- MEM_freeN(item_array);
+ MEM_freeN(item);
}
}
else {
@@ -3275,7 +3269,9 @@ static uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, const char *s
if (icon) {
but->icon = (BIFIconID)icon;
but->flag |= UI_HAS_ICON;
- but->drawflag |= UI_BUT_ICON_LEFT;
+ if (str[0]) {
+ but->drawflag |= UI_BUT_ICON_LEFT;
+ }
}
if ((type == MENU) && (but->dt == UI_EMBOSSP)) {
More information about the Bf-blender-cvs
mailing list