[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