[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22811] branches/blender2.5/blender/source /blender: Grease Pencil: Bugfixes

Joshua Leung aligorith at gmail.com
Thu Aug 27 03:01:15 CEST 2009


Revision: 22811
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22811
Author:   aligorith
Date:     2009-08-27 03:01:13 +0200 (Thu, 27 Aug 2009)

Log Message:
-----------
Grease Pencil: Bugfixes

* Realtime updates now work again
* Fixed problems with clicks to start drawing resulting in a stroke being ended.
* Changed the hotkeys to Ctrl-Alt-Shift-LMB (draw) and Ctrl-Alt-Shift-RMB (erase). Still very temporary stuff, will probably change these a few more times as I experiment with new approaches.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_ops.c
    branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_paint.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h

Modified: branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_ops.c	2009-08-26 20:06:16 UTC (rev 22810)
+++ branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_ops.c	2009-08-27 01:01:13 UTC (rev 22811)
@@ -47,14 +47,18 @@
 
 void gpencil_common_keymap(wmWindowManager *wm, ListBase *keymap)
 {
-	wmKeymapItem *km;
+	wmKeymapItem *kmi;
 	
 	/* if no keymap provided, use default */
 	if (keymap == NULL)
 		keymap= WM_keymap_listbase(wm, "Grease Pencil Generic", 0, 0);
 	
 	/* Draw */
-	WM_keymap_add_item(keymap, "GPENCIL_OT_draw", SKEY, KM_PRESS, 0, DKEY);
+		/* draw */
+	WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0);
+		/* erase */
+	kmi=WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0);
+		RNA_enum_set(kmi->ptr, "mode", 1); // XXX need to make the defines for this public (this is GP_PAINTMODE_ERASER)
 }
 
 /* ****************************************** */

Modified: branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_paint.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_paint.c	2009-08-26 20:06:16 UTC (rev 22810)
+++ branches/blender2.5/blender/source/blender/editors/gpencil/gpencil_paint.c	2009-08-27 01:01:13 UTC (rev 22811)
@@ -859,7 +859,7 @@
 		p->scene->gpd= p->gpd;
 	}
 	
-	/* set edit flags */
+	/* set edit flags - so that buffer will get drawn */
 	G.f |= G_GREASEPENCIL;
 	
 	/* set initial run flag */
@@ -1171,7 +1171,7 @@
 	}
 	
 	/* force refresh */
-	ED_area_tag_redraw(p->sa); // XXX this is crude
+	WM_event_add_notifier(C, NC_SCREEN|ND_GPENCIL|NA_EDITED, NULL); // XXX please work!
 }
 
 /* ------------------------------- */
@@ -1216,6 +1216,18 @@
 	printf("\tGP - handle modal event...\n");
 	
 	switch (event->type) {
+		/* end of stroke -> ONLY when a mouse-button release occurs 
+		 * otherwise, carry on to mouse-move...
+		 */
+		case LEFTMOUSE:
+		case MIDDLEMOUSE:
+		case RIGHTMOUSE: 
+			if (event->val != KM_PRESS) {
+				printf("\t\tGP - end of stroke \n");
+				gpencil_draw_exit(C, op);
+				return OPERATOR_FINISHED;
+			}
+		
 		/* moving mouse - assumed that mouse button is down */
 		case MOUSEMOVE:
 			/* handle drawing event */
@@ -1230,14 +1242,6 @@
 			}
 			break;
 		
-		/* end of stroke - i.e. when a mouse-button release occurs */
-		case LEFTMOUSE:
-		case MIDDLEMOUSE:
-		case RIGHTMOUSE: 
-			printf("\t\tGP - end of stroke \n");
-			gpencil_draw_exit(C, op);
-			return OPERATOR_FINISHED;
-			
 		/* scrolling mouse-wheel increases radius of eraser 
 		 * 	- though this is quite a difficult action to perform
 		 */
@@ -1259,7 +1263,7 @@
 			break;
 			
 		default:
-			return OPERATOR_RUNNING_MODAL|OPERATOR_PASS_THROUGH;
+			printf("\t\tGP unknown event - %d \n", event->type);
 			break;
 	}
 	

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-08-26 20:06:16 UTC (rev 22810)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-08-27 01:01:13 UTC (rev 22811)
@@ -2084,7 +2084,7 @@
 	
 	/* draw grease-pencil stuff */
 	//if (v3d->flag2 & V3D_DISPGP)
-		draw_gpencil_3dview(C, 1);
+		draw_gpencil_3dview((bContext *)C, 1);
 	
 	BDR_drawSketch(C);
 	
@@ -2100,9 +2100,9 @@
 	if(rv3d->persp>1) drawviewborder(scene, ar, v3d);
 	if(rv3d->rflag & RV3D_FLYMODE) drawviewborder_flymode(ar);
 	
-	/* draw grease-pencil stuff */
+	/* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */
 //	if (v3d->flag2 & V3D_DISPGP)
-//		draw_gpencil_3dview(ar, 0);
+		draw_gpencil_3dview((bContext *)C, 0);
 
 	drawcursor(scene, ar, v3d);
 	

Modified: branches/blender2.5/blender/source/blender/windowmanager/WM_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/WM_types.h	2009-08-26 20:06:16 UTC (rev 22810)
+++ branches/blender2.5/blender/source/blender/windowmanager/WM_types.h	2009-08-27 01:01:13 UTC (rev 22811)
@@ -149,6 +149,7 @@
 #define ND_SCREENDELETE		(2<<16)
 #define ND_SCREENCAST		(3<<16)
 #define ND_ANIMPLAY			(4<<16)
+#define ND_GPENCIL			(5<<16)
 
 	/* NC_SCENE Scene */
 #define ND_SCENEBROWSE		(1<<16)





More information about the Bf-blender-cvs mailing list