[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51647] trunk/blender/source/blender: fix [#30087] operator_context is different for popup and submenu's *TODO, after 2.62*

Campbell Barton ideasman42 at gmail.com
Fri Oct 26 08:22:55 CEST 2012


Revision: 51647
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51647
Author:   campbellbarton
Date:     2012-10-26 06:22:54 +0000 (Fri, 26 Oct 2012)
Log Message:
-----------
fix [#30087] operator_context is different for popup and submenu's *TODO, after 2.62*

having context different for menu vs submenu is quite confusing, now they are both: WM_OP_INVOKE_REGION_WIN
this changes WM_menu_invoke behavior.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_layout.c
    trunk/blender/source/blender/editors/interface/interface_regions.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c
    trunk/blender/source/blender/windowmanager/intern/wm_window.c

Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c	2012-10-26 06:19:49 UTC (rev 51646)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c	2012-10-26 06:22:54 UTC (rev 51647)
@@ -1450,6 +1450,11 @@
 
 	menu.type = mt;
 	menu.layout = layout;
+
+	if (G.debug & G_DEBUG_WM) {
+		printf("%s: opening menu \"%s\"\n", __func__, mt->idname);
+	}
+
 	mt->draw(C, &menu);
 }
 

Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c	2012-10-26 06:19:49 UTC (rev 51646)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c	2012-10-26 06:22:54 UTC (rev 51647)
@@ -46,6 +46,7 @@
 
 #include "BKE_context.h"
 #include "BKE_screen.h"
+#include "BKE_global.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -2510,6 +2511,9 @@
 	pup->block->flag |= UI_BLOCK_POPUP_MEMORY;
 	pup->block->puphash = ui_popup_menu_hash(title);
 	pup->layout = uiBlockLayout(pup->block, UI_LAYOUT_VERTICAL, UI_LAYOUT_MENU, 0, 0, 200, 0, style);
+
+	/* note, this intentionally differs from the menu & submenu default because many operators
+	 * use popups like this to select one of their options - where having invoke doesn't make sense */
 	uiLayoutSetOperatorContext(pup->layout, WM_OP_EXEC_REGION_WIN);
 
 	/* create in advance so we can let buttons point to retval already */
@@ -2721,6 +2725,10 @@
 	menu.layout = layout;
 	menu.type = mt;
 
+	if (G.debug & G_DEBUG_WM) {
+		printf("%s: opening menu \"%s\"\n", __func__, idname);
+	}
+
 	mt->draw(C, &menu);
 
 	uiPupMenuEnd(C, pup);

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2012-10-26 06:19:49 UTC (rev 51646)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2012-10-26 06:22:54 UTC (rev 51647)
@@ -3082,6 +3082,9 @@
 		}
 		else {
 			if (sync) {
+				/* note: this is very simplistic,
+				 * its has problem that it may skip too many frames.
+				 * however at least this gives a less jittery playback */
 				const int step = max_ii(1, floor((wt->duration - sad->last_duration) * FPS));
 
 				/* skip frames */

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-10-26 06:19:49 UTC (rev 51646)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-10-26 06:22:54 UTC (rev 51647)
@@ -674,6 +674,8 @@
 	else {
 		pup = uiPupMenuBegin(C, RNA_struct_ui_name(op->type->srna), ICON_NONE);
 		layout = uiPupMenuLayout(pup);
+		/* set this so the default execution context is the same as submenus */
+		uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_REGION_WIN);
 		uiItemsFullEnumO(layout, op->type->idname, RNA_property_identifier(prop), op->ptr->data, WM_OP_EXEC_REGION_WIN, 0);
 		uiPupMenuEnd(C, pup);
 	}

Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c	2012-10-26 06:19:49 UTC (rev 51646)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c	2012-10-26 06:22:54 UTC (rev 51647)
@@ -1080,7 +1080,7 @@
 		return NULL;
 	
 	/* always convert from \r\n to \n */
-	newbuf = MEM_callocN(strlen(buf) + 1, "WM_clipboard_text_get");
+	newbuf = MEM_callocN(strlen(buf) + 1, __func__);
 
 	for (p = buf, p2 = newbuf; *p; p++) {
 		if (*p != '\r')




More information about the Bf-blender-cvs mailing list