[Bf-blender-cvs] [78653cfb8cf] blender2.8: Merge branch 'master' into blender2.8
Campbell Barton
noreply at git.blender.org
Thu Jun 21 16:45:00 CEST 2018
Commit: 78653cfb8cf53074a107e09bfe46c36192aa54d7
Author: Campbell Barton
Date: Thu Jun 21 16:43:39 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB78653cfb8cf53074a107e09bfe46c36192aa54d7
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/editors/interface/interface_handlers.c
index d25488670e4,fa76113fa6f..9d202c87077
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@@ -6714,15 -6837,33 +6714,35 @@@ static void ui_but_menu_add_path_operat
RNA_string_set(&props_ptr, "filepath", dir);
}
+ static void ui_but_menu_lazy_init(
+ bContext *C, uiBut *but,
+ uiPopupMenu **pup_p, uiLayout **layout_p)
+ {
+ if (*pup_p != NULL) {
+ return;
+ }
+
+ uiStringInfo label = {BUT_GET_LABEL, NULL};
+
+ /* highly unlikely getting the label ever fails */
+ UI_but_string_info_get(C, but, &label, NULL);
+
+ *pup_p = UI_popup_menu_begin(C, label.strinfo ? label.strinfo : "", ICON_NONE);
+ *layout_p = UI_popup_menu_layout(*pup_p);
+ if (label.strinfo) {
+ MEM_freeN(label.strinfo);
+ }
+ uiLayoutSetOperatorContext(*layout_p, WM_OP_INVOKE_DEFAULT);
+ }
+
static bool ui_but_menu(bContext *C, uiBut *but)
{
- uiPopupMenu *pup;
- uiLayout *layout;
+ uiPopupMenu *pup = NULL;
+ uiLayout *layout = NULL;
MenuType *mt = WM_menutype_find("WM_MT_button_context", true);
bool is_array, is_array_component;
- uiStringInfo label = {BUT_GET_LABEL, NULL};
+ wmOperatorType *ot;
+ PointerRNA op_ptr;
/* if ((but->rnapoin.data && but->rnaprop) == 0 && but->optype == NULL)*/
/* return 0;*/
@@@ -6732,17 -6873,9 +6752,8 @@@
return false;
}
- /* highly unlikely getting the label ever fails */
- UI_but_string_info_get(C, but, &label, NULL);
-
- pup = UI_popup_menu_begin(C, label.strinfo ? label.strinfo : "", ICON_NONE);
- layout = UI_popup_menu_layout(pup);
- if (label.strinfo)
- MEM_freeN(label.strinfo);
-
- uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_DEFAULT);
-
if (but->rnapoin.data && but->rnaprop) {
+ ui_but_menu_lazy_init(C, but, &pup, &layout);
-
PointerRNA *ptr = &but->rnapoin;
PropertyRNA *prop = but->rnaprop;
const PropertyType type = RNA_property_type(prop);
More information about the Bf-blender-cvs
mailing list