[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56227] trunk/blender/source/blender/ editors/transform/transform.c: Fix #35056: crash running bpy.ops.transform. rotate() in background mode.

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Apr 22 23:27:45 CEST 2013


Revision: 56227
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56227
Author:   blendix
Date:     2013-04-22 21:27:44 +0000 (Mon, 22 Apr 2013)
Log Message:
-----------
Fix #35056: crash running bpy.ops.transform.rotate() in background mode.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2013-04-22 21:13:30 UTC (rev 56226)
+++ trunk/blender/source/blender/editors/transform/transform.c	2013-04-22 21:27:44 UTC (rev 56227)
@@ -1941,17 +1941,20 @@
 		return 0;
 	}
 
-	/* Stupid code to have Ctrl-Click on manipulator work ok */
 	if (event) {
-		/* do this only for translation/rotation/resize due to only this
+		/* keymap for shortcut header prints */
+		t->keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap);
+
+		/* Stupid code to have Ctrl-Click on manipulator work ok
+		 *
+		 * do this only for translation/rotation/resize due to only this
 		 * moded are available from manipulator and doing such check could
 		 * lead to keymap conflicts for other modes (see #31584)
 		 */
 		if (ELEM3(mode, TFM_TRANSLATION, TFM_ROTATION, TFM_RESIZE)) {
-			wmKeyMap *keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap);
 			wmKeyMapItem *kmi;
 
-			for (kmi = keymap->items.first; kmi; kmi = kmi->next) {
+			for (kmi = t->keymap->items.first; kmi; kmi = kmi->next) {
 				if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) {
 					if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) &&   event->ctrl)  ||
 					    (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) ||
@@ -1964,11 +1967,8 @@
 				}
 			}
 		}
-
 	}
 
-	t->keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap);
-
 	initSnapping(t, op); // Initialize snapping data AFTER mode flags
 
 	/* EVIL! posemode code can switch translation to rotate when 1 bone is selected. will be removed (ton) */
@@ -4134,7 +4134,7 @@
 	}
 	ofs += BLI_snprintf(str + ofs, MAX_INFO_LEN - ofs, ", (");
 
-	{
+	if (t->keymap) {
 		wmKeyMapItem *kmi = WM_modalkeymap_find_propvalue(t->keymap, TFM_MODAL_RESIZE);
 		if (kmi) {
 			ofs += WM_keymap_item_to_string(kmi, str + ofs, MAX_INFO_LEN - ofs);
@@ -6900,7 +6900,7 @@
 
 	ofs += BLI_snprintf(str + ofs, MAX_INFO_LEN - ofs, IFACE_("Sequence Slide: %s%s, ("), &tvec[0], t->con.text);
 
-	{
+	if (t->keymap) {
 		wmKeyMapItem *kmi = WM_modalkeymap_find_propvalue(t->keymap, TFM_MODAL_TRANSLATE);
 		if (kmi) {
 			ofs += WM_keymap_item_to_string(kmi, str + ofs, MAX_INFO_LEN - ofs);




More information about the Bf-blender-cvs mailing list