[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