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

Ton Roosendaal ton at blender.org
Thu Jan 1 19:05:13 CET 2009


Revision: 18218
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18218
Author:   ton
Date:     2009-01-01 19:05:12 +0100 (Thu, 01 Jan 2009)

Log Message:
-----------
2.5

- Put back vertex/edge/face select 
- Mode menu allows going in/out editmode

- Tested some tweak event stuff in WM, made tweak event follow
  user preset for 'action' or 'select' mouse.
  (Wanted to try this for transform, but better get advise from
  Martin first :)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenlib/BLI_editVert.h
    branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c
    branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
    branches/blender2.5/blender/source/blender/editors/include/ED_object.h
    branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.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/editors/space_view3d/view3d_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
    branches/blender2.5/blender/source/blender/editors/transform/transform.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
    branches/blender2.5/blender/source/blender/windowmanager/wm_event_types.h

Modified: branches/blender2.5/blender/source/blender/blenlib/BLI_editVert.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenlib/BLI_editVert.h	2009-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/blenlib/BLI_editVert.h	2009-01-01 18:05:12 UTC (rev 18218)
@@ -173,7 +173,7 @@
 	EditFace *act_face; 
 	
 	/* copy from scene */
-	int selectmode;
+	short selectmode;
 	
 	struct DerivedMesh *derivedCage, *derivedFinal;
 	/* the custom data layer mask that was last used to calculate

Modified: branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c	2009-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/editors/animation/anim_markers.c	2009-01-01 18:05:12 UTC (rev 18218)
@@ -340,25 +340,6 @@
 }
 
 
-/* for tweak handlers, check configuration for how to interpret events */
-int WM_modal_tweak_check(wmEvent *evt, int tweak_event)
-{
-	/* user preset?? dunno... */
-	int tweak_modal= 1;
-	
-	switch(tweak_event) {
-		case EVT_TWEAK_L:
-		case EVT_TWEAK_M:
-		case EVT_TWEAK_R:
-			if(evt->val==tweak_modal)
-				return 1;
-		default:
-			/* this case is when modal callcback didnt get started with a tweak */
-			if(evt->val)
-				return 1;
-	}
-	return 0;
-}
 
 static int ed_marker_move_modal(bContext *C, wmOperator *op, wmEvent *evt)
 {
@@ -377,7 +358,7 @@
 		case LEFTMOUSE:
 		case MIDDLEMOUSE:
 		case RIGHTMOUSE:
-			if(WM_modal_tweak_check(evt, mm->event_type)) {
+			if(WM_modal_tweak_exit(evt, mm->event_type)) {
 				ed_marker_move_exit(C, op);
 				WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
 				return OPERATOR_FINISHED;
@@ -625,6 +606,7 @@
 	
 	WM_event_add_notifier(C, NC_SCENE|ND_MARKERS, NULL);
 
+	/* allowing tweaks */
 	return OPERATOR_PASS_THROUGH;
 }
 

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h	2009-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h	2009-01-01 18:05:12 UTC (rev 18218)
@@ -109,6 +109,8 @@
 void		EM_select_face_fgon(struct EditMesh *em, struct EditFace *efa, int val);
 void		EM_selectmode_flush(struct EditMesh *em);
 void		EM_deselect_flush(struct EditMesh *em);
+void		EM_selectmode_set(struct EditMesh *em);
+void		EM_convertsel(struct EditMesh *em, short oldmode, short selectmode);
 			
 			/* exported to transform */
 int			EM_get_actSelection(struct EditMesh *em, struct EditSelection *ese);

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-01-01 18:05:12 UTC (rev 18218)
@@ -44,6 +44,12 @@
 
 void ED_base_object_free_and_unlink(struct Scene *scene, struct Base *base);
 
+/* bitflags for enter/exit editmode */
+#define EM_FREEDATA		1
+#define EM_FREEUNDO		2
+#define EM_WAITCURSOR	4
+void ED_object_exit_editmode(struct bContext *C, int flag);
+void ED_object_enter_editmode(struct bContext *C, int flag);
 
 /* cleanup */
 int object_data_is_libdata(struct Object *ob);

Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h	2009-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h	2009-01-01 18:05:12 UTC (rev 18218)
@@ -109,11 +109,9 @@
 void EM_remove_selection(EditMesh *em, void *data, int type);
 void EM_set_actFace(EditMesh *em, EditFace *efa);
 void EM_select_face(EditFace *efa, int sel);
-void EM_selectmode_set(EditMesh *em);
 void EM_clear_flag_all(EditMesh *em, int flag);
 void EM_select_flush(EditMesh *em);
 void EM_set_flag_all(EditMesh *em, int flag);
-void EM_convertsel(EditMesh *em, short oldmode, short selectmode);
 
 void EM_add_data_layer(EditMesh *em, CustomData *data, int type);
 

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-01-01 18:05:12 UTC (rev 18218)
@@ -113,6 +113,7 @@
 
 #include "ED_anim_api.h"
 #include "ED_mesh.h"
+#include "ED_object.h"
 #include "ED_screen.h"
 #include "ED_types.h"
 #include "ED_util.h"
@@ -131,7 +132,6 @@
 #include "object_intern.h"	// own include
 
 /* ************* XXX **************** */
-#define EM_WAITCURSOR 0
 static void allqueue() {}
 static void BIF_undo_push() {}
 static void error() {}
@@ -250,7 +250,7 @@
 	
 	exit_paint_modes();
 
-// XXX	if (G.obedit) exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */
+// XXX	if (G.obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */
 	ob= add_object(type);
 //	ED_base_object_activate(C, BASACT);
 	base_init_from_view3d(BASACT, v3d);
@@ -1992,21 +1992,20 @@
 
 /* ******************* toggle editmode operator  ***************** */
 
-static void exit_editmode(bContext *C, wmOperator *op, int flag)	/* freedata==0 at render, 1= freedata, 2= do undo buffer too */
+void ED_object_exit_editmode(bContext *C, int flag)
 {
 	Scene *scene= CTX_data_scene(C);
 	Object *ob;
 //	Object *obedit= CTX_data_edit_object(C);
-	int freedata = flag; // XXX & EM_FREEDATA;
+	int freedata = flag & EM_FREEDATA;
 	
 	if(G.obedit==NULL) return;
 	
-//	if(flag & EM_WAITCURSOR) waitcursor(1);
+	if(flag & EM_WAITCURSOR) waitcursor(1);
 	if(G.obedit->type==OB_MESH) {
 		Mesh *me= G.obedit->data;
 		
 //		if(EM_texFaceCheck())
-//			allqueue(REDRAWIMAGE, 0);
 		
 //		if(retopo_mesh_paint_check())
 //			retopo_end_okee();
@@ -2059,14 +2058,14 @@
 	if(G.obedit==NULL) // XXX && (flag & EM_FREEUNDO)) 
 		ED_undo_push(C, "Editmode");
 	
-	//	if(flag & EM_WAITCURSOR) waitcursor(0);
+	if(flag & EM_WAITCURSOR) waitcursor(0);
 	
 	WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, ob);
 
 }
 
 
-static void enter_editmode(bContext *C, wmOperator *op)
+void ED_object_enter_editmode(bContext *C, int flag)
 {
 	Scene *scene= CTX_data_scene(C);
 	Base *base= CTX_data_active_base(C);
@@ -2085,7 +2084,7 @@
 		return;
 	}
 	
-	//if(wc) waitcursor(1);
+	if(flag & EM_WAITCURSOR) waitcursor(1);
 	
 	if(ob->type==OB_MESH) {
 		Mesh *me= ob->data;
@@ -2144,24 +2143,23 @@
 	}
 	
 	if(ok) {
-	
 		DAG_object_flush_update(scene, G.obedit, OB_RECALC_DATA);
-		
 	}
 	else {
 		G.obedit= NULL;
 		WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, ob);
 	}
 	
+	if(flag & EM_WAITCURSOR) waitcursor(0);
 }
 
 static int toggle_editmode_exec(bContext *C, wmOperator *op)
 {
 	
 	if(!CTX_data_edit_object(C))
-		enter_editmode(C, op);
+		ED_object_enter_editmode(C, EM_WAITCURSOR);
 	else
-		exit_editmode(C, op, 1);
+		ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);
 	
 	return OPERATOR_FINISHED;
 }
@@ -2188,7 +2186,7 @@
 	
 	if (G.obedit==0 || G.obedit->type==type) return;
 
-// XXX	exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */
+// XXX	ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */
 }
 
 /* 0 == do center, 1 == center new, 2 == center cursor */
@@ -3339,8 +3337,8 @@
 	/* texspace and normals */
 	if(!basen) BASACT= base;
 
-// XXX	enter_editmode(scene, v3d, EM_WAITCURSOR);
-// XXX	exit_editmode(EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */
+// XXX	ED_object_enter_editmode(C, 0);
+// XXX	exit_editmode(C, EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */
 	BASACT= basact;
 
 	allqueue(REDRAWVIEW3D, 0);
@@ -4337,9 +4335,9 @@
 				
 				/* texspace and normals */
 				BASACT= base;
-// XXX				enter_editmode(scene, v3d, EM_WAITCURSOR);
+// XXX				ED_object_enter_editmode(C, 0);
 				BIF_undo_push("Applied object");	/* editmode undo itself */
-// XXX				exit_editmode(EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */
+// XXX				ED_object_exit_editmode(C, EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */
 				BASACT= basact;
 				
 				change = 1;
@@ -4413,9 +4411,9 @@
 				
 				/* texspace and normals */
 				BASACT= base;
-// XXX				enter_editmode(scene, v3d, EM_WAITCURSOR);
+// XXX				ED_object_enter_editmode(C, 0);
 				BIF_undo_push("Applied object");	/* editmode undo itself */
-// XXX				exit_editmode(EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */
+// XXX				ED_object_exit_editmode(C, EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */
 				BASACT= basact;
 				
 				change = 1;

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-01-01 16:27:02 UTC (rev 18217)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c	2009-01-01 18:05:12 UTC (rev 18218)
@@ -64,6 +64,7 @@
 
 #include "ED_screen.h"
 #include "ED_object.h"
+#include "ED_mesh.h"
 #include "ED_util.h"
 #include "ED_types.h"
 
@@ -5306,8 +5307,12 @@
 	View3D *v3d= sa->spacedata.first;
 	Object *ob= OBACT;
 	Object *obedit = CTX_data_edit_object(C);
-	int bit, shift=0; // XXX shift arg?
-
+	EditMesh *em= NULL;
+	int bit, ctrl=0, shift=0; // XXX shift arg?
+	
+	if(obedit && obedit->type==OB_MESH) {
+		em= ((Mesh *)obedit->data)->edit_mesh;
+	}
 	/* watch it: if sa->win does not exist, check that when calling direct drawing routines */
 
 	switch(event) {
@@ -5362,13 +5367,13 @@
 			v3d->flag &= ~V3D_MODE;
 // XXX			exit_paint_modes();
 // XXX			if(ob) exit_posemode();		/* exit posemode for active object */
-// XXX			if(obedit) exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);	/* exit editmode and undo */
+			if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR);	/* exit editmode and undo */
 		} 
 		else if (v3d->modeselect == V3D_EDITMODE_SEL) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list