[Bf-blender-cvs] [a6a6c49] wiggly-widgets: Fix some registration issues, also add scale property for sequencer backdrop widget.

Antony Riakiotakis noreply at git.blender.org
Wed Dec 10 19:24:35 CET 2014


Commit: a6a6c493988da78ac14390498cb3c671073fd2c1
Author: Antony Riakiotakis
Date:   Wed Dec 10 19:24:28 2014 +0100
Branches: wiggly-widgets
https://developer.blender.org/rBa6a6c493988da78ac14390498cb3c671073fd2c1

Fix some registration issues, also add scale property for sequencer
backdrop widget.

===================================================================

M	source/blender/editors/space_sequencer/sequencer_draw.c
M	source/blender/editors/space_sequencer/sequencer_view.c
M	source/blender/windowmanager/intern/wm_widgets.c

===================================================================

diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index faace3b..3cbcd2b 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1177,8 +1177,6 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
 		glMatrixMode(GL_MODELVIEW);
 		glPushMatrix();
 		glLoadIdentity();
-		
-		WM_widgets_draw(C, ar->widgetmaps.first);
 	}
 	glBegin(GL_QUADS);
 
@@ -1233,7 +1231,6 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
 		glMatrixMode(GL_PROJECTION);
 		glPopMatrix();
 		glMatrixMode(GL_MODELVIEW);
-		
 	}
 	
 	glBindTexture(GL_TEXTURE_2D, last_texid);
@@ -1252,6 +1249,8 @@ void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq
 		IMB_freeImBuf(ibuf);
 	
 	if (draw_backdrop) {
+		UI_view2d_view_restore(C);
+		WM_widgets_draw(C, ar->widgetmaps.first);
 		return;
 	}
 	
diff --git a/source/blender/editors/space_sequencer/sequencer_view.c b/source/blender/editors/space_sequencer/sequencer_view.c
index c978be7..3691ca1 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/source/blender/editors/space_sequencer/sequencer_view.c
@@ -262,6 +262,7 @@ static void widgetgroup_backdrop_draw(const struct bContext *C, struct wmWidgetG
 		wmWidget *cage = WIDGET_rect_transform_new(wgroup, WIDGET_RECT_TRANSFORM_STYLE_SCALE_UNIFORM | 
 		                                           WIDGET_RECT_TRANSFORM_STYLE_TRANSLATE, ibuf->x, ibuf->y);
 		WM_widget_property(cage, RECT_TRANSFORM_SLOT_OFFSET, op->ptr, "offset");
+		WM_widget_property(cage, RECT_TRANSFORM_SLOT_SCALE, op->ptr, "scale");
 		
 		IMB_freeImBuf(ibuf);
 	}
@@ -284,14 +285,8 @@ static int sequencer_backdrop_transform_modal(bContext *C, wmOperator *op, const
 		case EVT_WIDGET_UPDATE:
 			break;
 			
-		case LEFTMOUSE:
-			if (event->val == KM_DBL_CLICK)
-				/* remove the widgetgroup before exiting */
-				WM_widgetgrouptype_unregister(CTX_data_main(C), op->customdata);
-				return OPERATOR_FINISHED;
-			break;
-			
 		case RETKEY:
+			WM_widgetgrouptype_unregister(CTX_data_main(C), op->customdata);
 			return OPERATOR_FINISHED;
 	}
 	
@@ -316,5 +311,6 @@ void SEQUENCER_OT_backdrop_transform(struct wmOperatorType *ot)
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 	
 	RNA_def_float_array(ot->srna, "offset", 2, default_offset, FLT_MIN, FLT_MAX, "Offset", "Offset of the backdrop", FLT_MIN, FLT_MAX);
+	RNA_def_float(ot->srna, "scale", 1.0f, 0.0f, FLT_MAX, "Scale", "Scale of the backdrop", 0.0f, FLT_MAX);
 }
 
diff --git a/source/blender/windowmanager/intern/wm_widgets.c b/source/blender/windowmanager/intern/wm_widgets.c
index 37b17b0..1522eae 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -144,6 +144,7 @@ struct wmWidgetGroupType *WM_widgetgrouptype_new(
 								
 								/* just add here, drawing will occur on next update */
 								BLI_addtail(&wmap->widgetgroups, wgroup);
+								wm_widgetmap_set_highlighted_widget(wmap, NULL, NULL, 0);
 								ED_region_tag_redraw(ar);
 							}
 						}
@@ -636,8 +637,6 @@ wmWidget *wm_widget_find_highlighted(struct wmWidgetMap *wmap, bContext *C, cons
 void wm_widgetmap_set_highlighted_widget(struct wmWidgetMap *wmap, struct bContext *C, struct wmWidget *widget, unsigned char part)
 {
 	if (widget != wmap->highlighted_widget || (widget && part != widget->highlighted_part)) {
-		ARegion *ar = CTX_wm_region(C);
-
 		if (wmap->highlighted_widget) {
 			wmap->highlighted_widget->flag &= ~WM_WIDGET_HIGHLIGHT;
 			wmap->highlighted_widget->highlighted_part = 0;
@@ -650,8 +649,11 @@ void wm_widgetmap_set_highlighted_widget(struct wmWidgetMap *wmap, struct bConte
 			widget->highlighted_part = part;
 		}
 		
-		/* tag the region for redraw */
-		ED_region_tag_redraw(ar);
+		if (C) {
+			ARegion *ar = CTX_wm_region(C);
+			/* tag the region for redraw */
+			ED_region_tag_redraw(ar);
+		}
 	}
 }
 
@@ -819,10 +821,12 @@ void WM_widgetgrouptype_unregister(Main *bmain, wmWidgetGroupType *wgrouptype)
 				for (ar = lb->first; ar; ar = ar->next) {
 					wmWidgetMap *wmap;
 					for (wmap = ar->widgetmaps.first; wmap; wmap = wmap->next) {
-						wmWidgetGroup *wgroup;
-						for (wgroup = wmap->widgetgroups.first; wgroup; wgroup = wgroup->next) {
+						wmWidgetGroup *wgroup, *wgroup_tmp;
+						for (wgroup = wmap->widgetgroups.first; wgroup; wgroup = wgroup_tmp) {
+							wgroup_tmp = wgroup->next;
 							if (wgroup->type == wgrouptype) {
 								wm_widgetgroup_free(wmap, wgroup);
+								ED_region_tag_redraw(ar);
 							}
 						}
 					}




More information about the Bf-blender-cvs mailing list