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);
                                                        }
                                                }
                                        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to