[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22453] branches/blender2.5/blender/source /blender: 2.5/Paint modes:

Nicholas Bishop nicholasbishop at gmail.com
Fri Aug 14 17:47:32 CEST 2009


Revision: 22453
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22453
Author:   nicholasbishop
Date:     2009-08-14 17:47:32 +0200 (Fri, 14 Aug 2009)

Log Message:
-----------
2.5/Paint modes:

* Fixed one of the items from Brecht's TODO mail. Exiting edit mode now restores any paint mode you might have been in, rather than going to object mode.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_object_types.h

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-08-14 13:13:36 UTC (rev 22452)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-08-14 15:47:32 UTC (rev 22453)
@@ -131,7 +131,8 @@
 int lasso_inside_edge(short mcords[][2], short moves, int x0, int y0, int x1, int y1);
 
 /* modes */
-void ED_view3d_exit_paint_modes(struct bContext *C);
+int ED_view3d_exit_paint_modes(struct bContext *C);
+void ED_view3d_restore_paint_modes(struct bContext *C, int);
 /* get 3d region from context, also if mouse is in header or toolbar */
 struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C);
 

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-08-14 13:13:36 UTC (rev 22452)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-08-14 15:47:32 UTC (rev 22453)
@@ -3724,7 +3724,7 @@
 		load_editMball(obedit);
 		if(freedata) free_editMball(obedit);
 	}
-	
+
 	/* freedata only 0 now on file saves */
 	if(freedata) {
 		/* for example; displist make is different in editmode */
@@ -3739,6 +3739,8 @@
 	
 		WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene);
 	}
+
+	ED_view3d_restore_paint_modes(C, obedit->restore_mode);
 }
 
 
@@ -3772,7 +3774,7 @@
 	
 	if(flag & EM_WAITCURSOR) waitcursor(1);
 
-	ED_view3d_exit_paint_modes(C);
+	ob->restore_mode = ED_view3d_exit_paint_modes(C);
 	
 	if(ob->type==OB_MESH) {
 		Mesh *me= ob->data;

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c	2009-08-14 13:13:36 UTC (rev 22452)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c	2009-08-14 15:47:32 UTC (rev 22453)
@@ -134,28 +134,37 @@
 
 /* end XXX ************* */
 
-
-/* well... in this file a lot of view mode manipulation happens, so let's have it defined here */
-void ED_view3d_exit_paint_modes(bContext *C)
+static int ED_toggle_paint_modes(bContext *C, int mode)
 {
-	if(G.f & G_TEXTUREPAINT)
+	if(mode & G_TEXTUREPAINT)
 		WM_operator_name_call(C, "PAINT_OT_texture_paint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
-	if(G.f & G_VERTEXPAINT)
+	if(mode & G_VERTEXPAINT)
 		WM_operator_name_call(C, "PAINT_OT_vertex_paint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
-	else if(G.f & G_WEIGHTPAINT)
+	else if(mode & G_WEIGHTPAINT)
 		WM_operator_name_call(C, "PAINT_OT_weight_paint_toggle", WM_OP_EXEC_REGION_WIN, NULL);
 
-	if(G.f & G_SCULPTMODE)
+	if(mode & G_SCULPTMODE)
 		WM_operator_name_call(C, "SCULPT_OT_sculptmode_toggle", WM_OP_EXEC_REGION_WIN, NULL);
-	if(G.f & G_PARTICLEEDIT)
+	if(mode & G_PARTICLEEDIT)
 		WM_operator_name_call(C, "PARTICLE_OT_particle_edit_toggle", WM_OP_EXEC_REGION_WIN, NULL);
-	
-	G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE+G_PARTICLEEDIT);
 }
 
+/* well... in this file a lot of view mode manipulation happens, so let's have it defined here */
+int ED_view3d_exit_paint_modes(bContext *C)
+{
+	int restore = G.f;
 
+	ED_toggle_paint_modes(C, G.f);
+	
+	G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE+G_PARTICLEEDIT);
 
+	return restore;
+}
 
+void ED_view3d_restore_paint_modes(struct bContext *C, int mode)
+{
+	ED_toggle_paint_modes(C, mode);
+}
 
 static void do_view3d_header_buttons(bContext *C, void *arg, int event);
 

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_object_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_object_types.h	2009-08-14 13:13:36 UTC (rev 22452)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_object_types.h	2009-08-14 15:47:32 UTC (rev 22453)
@@ -227,8 +227,9 @@
 	int lastDataMask;			/* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
 	unsigned int state;			/* bit masks of game controllers that are active */
 	unsigned int init_state;	/* bit masks of initial state as recorded by the users */
-	int pad2;
 
+	int restore_mode;		/* Keep track of what mode to return to after edit mode exits */
+
 	ListBase gpulamp;		/* runtime, for lamps only */
 } Object;
 





More information about the Bf-blender-cvs mailing list