[Bf-blender-cvs] [0eaf4a2] temp_pie_max_items_fix: Minor API cleanup
Campbell Barton
noreply at git.blender.org
Mon Feb 15 19:06:35 CET 2016
Commit: 0eaf4a27a69120e2af44544da34a0761d8642f0d
Author: Campbell Barton
Date: Tue Feb 16 04:50:36 2016 +1100
Branches: temp_pie_max_items_fix
https://developer.blender.org/rB0eaf4a27a69120e2af44544da34a0761d8642f0d
Minor API cleanup
Avoid passing duplicate args
===================================================================
M source/blender/editors/include/UI_interface.h
M source/blender/editors/interface/interface_intern.h
M source/blender/editors/interface/interface_layout.c
M source/blender/editors/interface/interface_regions.c
===================================================================
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 8c89b5d..cee4bcd 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -977,11 +977,13 @@ void uiItemEnumR(uiLayout *layout, const char *name, int icon, struct PointerRNA
void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *value, const char *name, int icon);
void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname);
void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, struct PointerRNA *searchptr, const char *searchpropname, const char *name, int icon);
-void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname, struct IDProperty *properties, int context, int flag);
-void uiItemsFullEnumO_array(
- uiLayout *layout, EnumPropertyItem *item_array, const int totitem,
- struct wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop, const char *propname, IDProperty *properties,
- const int context, const int flag);
+void uiItemsFullEnumO(
+ uiLayout *layout, const char *opname, const char *propname,
+ struct IDProperty *properties, int context, const int flag);
+void uiItemsFullEnumO_items(
+ uiLayout *layout, struct wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop,
+ IDProperty *properties, int context, const int flag,
+ const EnumPropertyItem *item_array, const int totitem);
void uiItemL(uiLayout *layout, const char *name, int icon); /* label */
void uiItemLDrag(uiLayout *layout, struct PointerRNA *ptr, const char *name, int icon); /* label icon for dragging */
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index ccf030a..66510fb 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -612,7 +612,7 @@ uiPopupBlockHandle *ui_popup_menu_create(
void ui_pie_menu_level_create(
uiBlock *block, struct wmOperatorType *ot, const char *propname, IDProperty *properties,
- EnumPropertyItem *items, int totitem, int context, int flag);
+ const EnumPropertyItem *items, int totitem, int context, int flag);
void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle);
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 076f22d..501be46 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -720,7 +720,7 @@ void UI_context_active_but_prop_get_filebrowser(
/**
* Update a buttons tip with an enum's description if possible.
*/
-static void ui_but_tip_from_enum_item(uiBut *but, EnumPropertyItem *item)
+static void ui_but_tip_from_enum_item(uiBut *but, const EnumPropertyItem *item)
{
if (but->tip == NULL || but->tip[0] == '\0') {
if (item->description && item->description[0]) {
@@ -891,35 +891,22 @@ static bool ui_layout_is_radial(const uiLayout *layout)
/**
* Create ui items for enum items in \a item_array.
+ *
+ * A version of #uiItemsFullEnumO that takes pre-calculated item array.
*/
-void uiItemsFullEnumO_array(
- uiLayout *layout, EnumPropertyItem *item_array, const int totitem,
- wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop, const char *propname, IDProperty *properties,
- const int context, const int flag)
+void uiItemsFullEnumO_items(
+ uiLayout *layout, wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop, IDProperty *properties,
+ const int context, const int flag,
+ const EnumPropertyItem *item_array, const int totitem)
{
- /* passing prop and ptr is optional, search for them if needed */
- if (!ptr.data) {
- WM_operator_properties_create_ptr(&ptr, ot);
- /* so the context is passed to itemf functions (some need it) */
- WM_operator_properties_sanitize(&ptr, false);
- }
- if (!prop) {
- prop = RNA_struct_find_property(&ptr, propname);
- }
-
- if (!(prop && RNA_property_type(prop) == PROP_ENUM)) {
- if (prop) {
- RNA_warning("%s.%s, not an enum type", RNA_struct_identifier(ptr.type), propname);
- }
- else {
- RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname);
- }
+ const char *propname = RNA_property_identifier(prop);
+ if (RNA_property_type(prop) != PROP_ENUM) {
+ RNA_warning("%s.%s, not an enum type", RNA_struct_identifier(ptr.type), propname);
return;
}
-
uiLayout *target, *split = NULL;
- EnumPropertyItem *item;
+ const EnumPropertyItem *item;
uiBlock *block = layout->root->block;
const bool radial = ui_layout_is_radial(layout);
int i;
@@ -1000,7 +987,7 @@ void uiItemsFullEnumO_array(
void uiItemsFullEnumO(
uiLayout *layout, const char *opname, const char *propname, IDProperty *properties,
- int context, int flag)
+ int context, const int flag)
{
wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */
@@ -1035,7 +1022,9 @@ void uiItemsFullEnumO(
}
/* add items */
- uiItemsFullEnumO_array(layout, item_array, totitem, ot, ptr, prop, propname, properties, context, flag);
+ uiItemsFullEnumO_items(
+ layout, ot, ptr, prop, properties, context, flag,
+ item_array, totitem);
if (free) {
MEM_freeN(item_array);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 742b166..e8b0cf3 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -2993,8 +2993,21 @@ static void ui_pie_menu_level_invoke(bContext *C, void *argN, void *arg2)
layout = uiLayoutRadial(layout);
- uiItemsFullEnumO_array(layout, item_array, lvl->totitem, lvl->ot, PointerRNA_NULL, NULL, lvl->propname,
- lvl->properties, lvl->context, lvl->flag);
+ PointerRNA ptr;
+
+ WM_operator_properties_create_ptr(&ptr, lvl->ot);
+ /* so the context is passed to itemf functions (some need it) */
+ WM_operator_properties_sanitize(&ptr, false);
+ PropertyRNA *prop = RNA_struct_find_property(&ptr, lvl->propname);
+
+ if (prop) {
+ uiItemsFullEnumO_items(
+ layout, lvl->ot, ptr, prop, lvl->properties, lvl->context, lvl->flag,
+ item_array, lvl->totitem);
+ }
+ else {
+ RNA_warning("%s.%s, not an enum type", RNA_struct_identifier(ptr.type), lvl->propname);
+ }
UI_pie_menu_end(C, pie);
}
@@ -3004,7 +3017,7 @@ static void ui_pie_menu_level_invoke(bContext *C, void *argN, void *arg2)
*/
void ui_pie_menu_level_create(
uiBlock *block, wmOperatorType *ot, const char *propname, IDProperty *properties,
- EnumPropertyItem *items, int totitem, int context, int flag)
+ const EnumPropertyItem *items, int totitem, int context, int flag)
{
const int totitem_parent = PIE_MAX_ITEMS - 1;
const int totitem_remain = totitem - totitem_parent;
More information about the Bf-blender-cvs
mailing list