[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51101] trunk/blender/source/blender: Grease Pencil notifier/listener cleanup

Dan Eicher dan at trollwerks.org
Fri Oct 5 21:51:12 CEST 2012


Revision: 51101
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51101
Author:   dna
Date:     2012-10-05 19:51:11 +0000 (Fri, 05 Oct 2012)
Log Message:
-----------
Grease Pencil notifier/listener cleanup

As suggested by Campbell on the IRC gave grease pencil its own notifier type (NC_GPENCIL) and made the makesrna notifier functions actually update properly.

Also got the #ifdef'd GreasePencil.layers.[new/remove] functions working.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_gpencil.h
    trunk/blender/source/blender/blenkernel/intern/gpencil.c
    trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c
    trunk/blender/source/blender/editors/gpencil/gpencil_edit.c
    trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
    trunk/blender/source/blender/editors/gpencil/gpencil_undo.c
    trunk/blender/source/blender/editors/space_action/space_action.c
    trunk/blender/source/blender/editors/space_clip/space_clip.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/makesrna/intern/rna_gpencil.c
    trunk/blender/source/blender/windowmanager/WM_types.h

Modified: trunk/blender/source/blender/blenkernel/BKE_gpencil.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_gpencil.h	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/blenkernel/BKE_gpencil.h	2012-10-05 19:51:11 UTC (rev 51101)
@@ -44,7 +44,7 @@
 void BKE_gpencil_free(struct bGPdata *gpd);
 
 struct bGPDframe *gpencil_frame_addnew(struct bGPDlayer *gpl, int cframe);
-struct bGPDlayer *gpencil_layer_addnew(struct bGPdata *gpd);
+struct bGPDlayer *gpencil_layer_addnew(struct bGPdata *gpd, const char *name, int setactive);
 struct bGPdata *gpencil_data_addnew(const char name[]);
 
 struct bGPDframe *gpencil_frame_duplicate(struct bGPDframe *src);
@@ -62,6 +62,6 @@
 void gpencil_layer_delframe(struct bGPDlayer *gpl, struct bGPDframe *gpf);
 struct bGPDlayer *gpencil_layer_getactive(struct bGPdata *gpd);
 void gpencil_layer_setactive(struct bGPdata *gpd, struct bGPDlayer *active);
-void gpencil_layer_delactive(struct bGPdata *gpd);
+void gpencil_layer_delete(struct bGPdata *gpd, struct bGPDlayer *gpl);
 
 #endif /*  __BKE_GPENCIL_H__ */

Modified: trunk/blender/source/blender/blenkernel/intern/gpencil.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/gpencil.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/blenkernel/intern/gpencil.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -163,7 +163,7 @@
 }
 
 /* add a new gp-layer and make it the active layer */
-bGPDlayer *gpencil_layer_addnew(bGPdata *gpd)
+bGPDlayer *gpencil_layer_addnew(bGPdata *gpd, const char *name, int setactive)
 {
 	bGPDlayer *gpl;
 	
@@ -182,11 +182,12 @@
 	gpl->thickness = 3;
 	
 	/* auto-name */
-	strcpy(gpl->info, "GP_Layer");
+	strcpy(gpl->info, name);
 	BLI_uniquename(&gpd->layers, gpl, "GP_Layer", '.', offsetof(bGPDlayer, info), sizeof(gpl->info));
 	
 	/* make this one the active one */
-	gpencil_layer_setactive(gpd, gpl);
+	if (setactive)
+	    gpencil_layer_setactive(gpd, gpl);
 	
 	/* return layer */
 	return gpl;
@@ -509,10 +510,8 @@
 }
 
 /* delete the active gp-layer */
-void gpencil_layer_delactive(bGPdata *gpd)
+void gpencil_layer_delete(bGPdata *gpd, bGPDlayer *gpl)
 {
-	bGPDlayer *gpl = gpencil_layer_getactive(gpd);
-	
 	/* error checking */
 	if (ELEM(NULL, gpd, gpl)) 
 		return;

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -75,17 +75,15 @@
 	/* make sure the layer we want to remove is the active one */
 	gpencil_layer_setactive(gpd, gpl);
 	
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); /* XXX please work! */
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
 }
 
 /* delete 'active' layer */
 static void gp_ui_dellayer_cb(bContext *C, void *gpd, void *gpl)
 {
-	/* make sure the layer we want to remove is the active one */
-	gpencil_layer_setactive(gpd, gpl);
-	gpencil_layer_delactive(gpd);
+	gpencil_layer_delete((bGPdata *)gpd, (bGPDlayer *)gpl);
 	
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); /* XXX please work! */
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
 }
 
 

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_edit.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_edit.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_edit.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -224,7 +224,7 @@
 	}
 	
 	/* notifiers */
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); // XXX need a nicer one that will work
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
 	
 	return OPERATOR_FINISHED;
 }
@@ -272,7 +272,7 @@
 	}
 	
 	/* notifiers */
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); // XXX need a nicer one that will work
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL); 
 	
 	return OPERATOR_FINISHED;
 }
@@ -306,10 +306,10 @@
 		*gpd_ptr = gpencil_data_addnew("GPencil");
 		
 	/* add new layer now */
-	gpencil_layer_addnew(*gpd_ptr);
+	gpencil_layer_addnew(*gpd_ptr, "GP_Layer", 1);
 	
 	/* notifiers */
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); // XXX please work!
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
 	
 	return OPERATOR_FINISHED;
 }
@@ -360,7 +360,7 @@
 	gpencil_layer_delframe(gpl, gpf);
 	
 	/* notifiers */
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); // XXX please work!
+	WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
 	
 	return OPERATOR_FINISHED;
 }

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -1143,7 +1143,7 @@
 	/* get active layer (or add a new one if non-existent) */
 	p->gpl = gpencil_layer_getactive(p->gpd);
 	if (p->gpl == NULL) {
-		p->gpl = gpencil_layer_addnew(p->gpd);
+		p->gpl = gpencil_layer_addnew(p->gpd, "GP_Layer", 1);
 		
 		if (p->custom_color[3])
 			copy_v3_v3(p->gpl->color, p->custom_color);
@@ -1616,7 +1616,7 @@
 	gpencil_draw_exit(C, op);
 	
 	/* refreshes */
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); // XXX need a nicer one that will work
+	WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, NULL);
 	
 	/* done */
 	return OPERATOR_FINISHED;
@@ -1677,7 +1677,7 @@
 		//printf("\tGP - hotkey invoked... waiting for click-drag\n");
 	}
 	
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL, NULL);
+	WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, NULL);
 	/* add a modal handler for this operator, so that we can then draw continuous strokes */
 	WM_event_add_modal_handler(C, op);
 	return OPERATOR_RUNNING_MODAL;
@@ -1790,7 +1790,7 @@
 				estate = OPERATOR_RUNNING_MODAL;
 				
 				/* stroke could be smoothed, send notifier to refresh screen */
-				WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL);
+				WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, NULL);
 			}
 			else {
 				//printf("\t\tGP - end of stroke + op\n");
@@ -1880,7 +1880,7 @@
 		case OPERATOR_FINISHED:
 			/* one last flush before we're done */
 			gpencil_draw_exit(C, op);
-			WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL); // XXX need a nicer one that will work
+			WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, NULL);
 			break;
 			
 		case OPERATOR_CANCELLED:

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_undo.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_undo.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_undo.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -111,7 +111,7 @@
 		}
 	}
 
-	WM_event_add_notifier(C, NC_SCREEN | ND_GPENCIL | NA_EDITED, NULL);
+	WM_event_add_notifier(C, NC_GPENCIL | NA_EDITED, NULL);
 
 	return OPERATOR_FINISHED;
 }

Modified: trunk/blender/source/blender/editors/space_action/space_action.c
===================================================================
--- trunk/blender/source/blender/editors/space_action/space_action.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/space_action/space_action.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -357,8 +357,8 @@
 	
 	/* context changes */
 	switch (wmn->category) {
-		case NC_SCREEN:
-			if (wmn->data == ND_GPENCIL) {
+		case NC_GPENCIL:
+			if (wmn->action == NA_EDITED) {
 				/* only handle this event in GPencil mode for performance considerations */
 				if (saction->mode == SACTCONT_GPENCIL)
 					ED_area_tag_redraw(sa);

Modified: trunk/blender/source/blender/editors/space_clip/space_clip.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -407,8 +407,6 @@
 		case NC_SCREEN:
 			switch (wmn->data) {
 				case ND_ANIMPLAY:
-				case ND_GPENCIL:
-					clip_scopes_check_gpencil_change(sa);
 					ED_area_tag_redraw(sa);
 					break;
 			}
@@ -420,6 +418,12 @@
 				ED_area_tag_redraw(sa);
 			}
 			break;
+		case NC_GPENCIL:
+			if (wmn->action == NA_EDITED) {
+				clip_scopes_check_gpencil_change(sa);
+				ED_area_tag_redraw(sa);
+			}
+			break;
 	}
 }
 
@@ -1159,8 +1163,8 @@
 {
 	/* context changes */
 	switch (wmn->category) {
-		case NC_SCREEN:
-			if (wmn->data == ND_GPENCIL)
+		case NC_GPENCIL:
+			if (wmn->action == NA_EDITED)
 				ED_region_tag_redraw(ar);
 			break;
 	}
@@ -1373,8 +1377,8 @@
 			if (wmn->data == ND_SPACE_CLIP)
 				ED_region_tag_redraw(ar);
 			break;
-		case NC_SCREEN:
-			if (wmn->data == ND_GPENCIL)
+		case NC_GPENCIL:
+			if (wmn->action == NA_EDITED)
 				ED_region_tag_redraw(ar);
 			break;
 	}
@@ -1406,8 +1410,8 @@
 {
 	/* context changes */
 	switch (wmn->category) {
-		case NC_SCREEN:
-			if (wmn->data == ND_GPENCIL)
+		case NC_GPENCIL:
+			if (wmn->data == ND_DATA)
 				ED_region_tag_redraw(ar);
 			break;
 		case NC_BRUSH:

Modified: trunk/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/space_image.c	2012-10-05 18:28:11 UTC (rev 51100)
+++ trunk/blender/source/blender/editors/space_image/space_image.c	2012-10-05 19:51:11 UTC (rev 51101)
@@ -708,8 +708,8 @@
 {
 	/* context changes */
 	switch (wmn->category) {
-		case NC_SCREEN:
-			if (wmn->data == ND_GPENCIL)
+		case NC_GPENCIL:
+			if (wmn->action == NA_EDITED)
 				ED_region_tag_redraw(ar);
 			break;
 	}
@@ -737,8 +737,8 @@
 {
 	/* context changes */
 	switch (wmn->category) {
-		case NC_SCREEN:
-			if (wmn->data == ND_GPENCIL)
+		case NC_GPENCIL:
+			if (wmn->data == ND_DATA)
 				ED_region_tag_redraw(ar);
 			break;
 		case NC_BRUSH:


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list