[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25976] trunk/blender/source/blender: Fix [#20663] Mouse cursor icon changes back to default in edit mode

Matt Ebb matt at mke3.net
Thu Jan 14 02:48:06 CET 2010


Revision: 25976
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25976
Author:   broken
Date:     2010-01-14 02:47:25 +0100 (Thu, 14 Jan 2010)

Log Message:
-----------
Fix [#20663] Mouse cursor icon changes back to default in edit mode

Seemed simple but actually turned out to be quite complex.

ND_MODE notifier was being misused, changed to ND_TOOLSETTINGS

Note: Although the fix itself doesn't involve this much, debugging uncovered 
that listeners can't rely on notifier->swinid to be correct, since notifiers can 
now be added from RNA without a region context.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/blender/windowmanager/WM_types.h
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-01-14 00:03:58 UTC (rev 25975)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-01-14 01:47:25 UTC (rev 25976)
@@ -3773,7 +3773,7 @@
 {
 	Scene *scene= CTX_data_scene(C);
 	
-	WM_event_add_notifier(C, NC_SCENE|ND_SCENEDELETE, scene);
+	WM_event_add_notifier(C, NC_SCENE|NA_REMOVED, scene);
 	
 	return OPERATOR_FINISHED;
 }

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2010-01-14 00:03:58 UTC (rev 25975)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2010-01-14 01:47:25 UTC (rev 25976)
@@ -573,6 +573,7 @@
 				case ND_OB_SELECT:
 				case ND_MODE:
 				case ND_LAYER:
+				case ND_TOOLSETTINGS:
 					ED_region_tag_redraw(ar);
 					break;
 			}

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c	2010-01-14 00:03:58 UTC (rev 25975)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c	2010-01-14 01:47:25 UTC (rev 25976)
@@ -628,7 +628,7 @@
 	}
 
 	WM_main_add_notifier(NC_GEOM|ND_SELECT, me);
-	WM_main_add_notifier(NC_SCENE|ND_MODE, NULL); /* header redraw */
+	WM_main_add_notifier(NC_SCENE|ND_TOOLSETTINGS, NULL);
 }
 
 #else
@@ -717,13 +717,13 @@
 	RNA_def_property_enum_sdna(prop, NULL, "proportional");
 	RNA_def_property_enum_items(prop, proportional_editing_items);
 	RNA_def_property_ui_text(prop, "Proportional Editing", "Proportional editing mode.");
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	prop= RNA_def_property(srna, "proportional_editing_falloff", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "prop_mode");
 	RNA_def_property_enum_items(prop, proportional_falloff_items);
 	RNA_def_property_ui_text(prop, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	prop= RNA_def_property(srna, "normal_size", PROP_FLOAT, PROP_DISTANCE);
 	RNA_def_property_float_sdna(prop, NULL, "normalsize");
@@ -740,37 +740,37 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP);
 	RNA_def_property_ui_text(prop, "Snap", "Snap during transform.");
 	RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1);
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_ROTATE);
 	RNA_def_property_ui_text(prop, "Snap Align Rotation", "Align rotation with the snapping target.");
 	RNA_def_property_ui_icon(prop, ICON_SNAP_NORMAL, 0);
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	prop= RNA_def_property(srna, "snap_element", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "snap_mode");
 	RNA_def_property_enum_items(prop, snap_element_items);
 	RNA_def_property_ui_text(prop, "Snap Element", "Type of element to snap to.");
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	prop= RNA_def_property(srna, "snap_target", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "snap_target");
 	RNA_def_property_enum_items(prop, snap_target_items);
 	RNA_def_property_ui_text(prop, "Snap Target", "Which part to snap onto the target.");
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PEEL_OBJECT);
 	RNA_def_property_ui_text(prop, "Snap Peel Object", "Consider objects as whole when finding volume center.");
 	RNA_def_property_ui_icon(prop, ICON_SNAP_PEEL_OBJECT, 0);
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 	
 	prop= RNA_def_property(srna, "snap_project", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PROJECT);
 	RNA_def_property_ui_text(prop, "Project Individual Elements", "DOC_BROKEN");
 	RNA_def_property_ui_icon(prop, ICON_RETOPO, 0);
-	RNA_def_property_update(prop, NC_SCENE|ND_MODE, NULL); /* header redraw */
+	RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
 
 	/* Auto Keying */
 	prop= RNA_def_property(srna, "enable_auto_key", PROP_BOOLEAN, PROP_NONE);

Modified: trunk/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_types.h	2010-01-14 00:03:58 UTC (rev 25975)
+++ trunk/blender/source/blender/windowmanager/WM_types.h	2010-01-14 01:47:25 UTC (rev 25976)
@@ -106,7 +106,7 @@
 	struct wmWindowManager *wm;
 	struct wmWindow *window;
 	
-	int swinid;
+	int swinid;			/* can't rely on this, notifiers can be added without context, swinid of 0 */
 	unsigned int category, data, subtype, action;
 	
 	void *reference;
@@ -171,7 +171,7 @@
 #define ND_RENDER_RESULT	(10<<16)
 #define ND_COMPO_RESULT		(11<<16)
 #define ND_KEYINGSET		(12<<16)
-#define ND_SCENEDELETE		(13<<16)
+#define ND_TOOLSETTINGS		(13<<16)
 #define ND_LAYER			(14<<16)
 #define	ND_SEQUENCER_SELECT	(15<<16)
 

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2010-01-14 00:03:58 UTC (rev 25975)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2010-01-14 01:47:25 UTC (rev 25976)
@@ -193,13 +193,15 @@
 						if(G.f & G_DEBUG)
 							printf("scene set %p\n", note->reference);
 					}
-					if(note->data==ND_SCENEDELETE) {
+					else if(note->data==ND_FRAME)
+						do_anim= 1;
+					
+					if(note->action == NA_REMOVED) {
 						ED_screen_delete_scene(C, note->reference);	// XXX hrms, think this over!
 						if(G.f & G_DEBUG)
 							printf("scene delete %p\n", note->reference);
 					}
-					else if(note->data==ND_FRAME)
-						do_anim= 1;
+						
 				}
 			}
 			if(ELEM4(note->category, NC_SCENE, NC_OBJECT, NC_GEOM, NC_SCENE)) {





More information about the Bf-blender-cvs mailing list