Commit: 6da4973e8e850888dd496f1fd929f228b37413be
Author: Antony Riakiotakis
Date:   Wed Dec 10 18:55:03 2014 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB6da4973e8e850888dd496f1fd929f228b37413be

Something draws now in sequencer when we register the widget for the
operator.

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

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 e499cd7..faace3b 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -1177,6 +1177,8 @@ 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);
 
@@ -1212,8 +1214,7 @@ void draw_image_seq(const bContext *C, Scene *scene, 
ARegion *ar, SpaceSeq *sseq
                else {
                        imagex = 1.0f;
                        imagey = aspect / image_aspect;
-               }
-               
+               }               
                glTexCoord2f(0.0f, 0.0f); glVertex2f(-imagex, -imagey);
                glTexCoord2f(0.0f, 1.0f); glVertex2f(-imagex, imagey);
                glTexCoord2f(1.0f, 1.0f); glVertex2f(imagex, imagey);
diff --git a/source/blender/editors/space_sequencer/sequencer_view.c 
b/source/blender/editors/space_sequencer/sequencer_view.c
index d246788..c978be7 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/source/blender/editors/space_sequencer/sequencer_view.c
@@ -262,6 +262,8 @@ 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");
+               
+               IMB_freeImBuf(ibuf);
        }
 }
 
diff --git a/source/blender/windowmanager/intern/wm_widgets.c 
b/source/blender/windowmanager/intern/wm_widgets.c
index e1fc645..37b17b0 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);
+                                                               
ED_region_tag_redraw(ar);
                                                        }
                                                }
                                        }
@@ -687,9 +688,19 @@ void wm_widgetmap_set_active_widget(struct wmWidgetMap 
*wmap, struct bContext *C
                                        
                                        if (handler && handler->op && 
handler->op->type == ot) {
                                                handler->widgetmap = wmap;
+                                               wmap->active_widget = widget;
+                                       }
+                               }
+                               
+                               /* we failed to hook the widget to the operator 
handler or operator was cancelled, return */
+                               if (!wmap->active_widget) {
+                                       widget->flag &= ~WM_WIDGET_ACTIVE;
+                                       /* first activate the widget itself */
+                                       if (widget->interaction_data) {
+                                               
MEM_freeN(widget->interaction_data);
+                                               widget->interaction_data = NULL;
                                        }
                                }
-                               wmap->active_widget = widget;
                                return;
                        }
                        else {
@@ -730,14 +741,10 @@ struct wmWidgetMap *WM_widgetmap_from_type(const char 
*idname, int spaceid, int
        wmWidgetGroupType *wgrouptype = wmaptype->widgetgrouptypes.first;
        wmWidgetMap *wmap;
 
-       /* no need to create a widgetmap if no types have been registered */
-       if (!wgrouptype)
-               return NULL;
-
        wmap = MEM_callocN(sizeof(wmWidgetMap), "WidgetMap");
        wmap->type = wmaptype;
 
-       /* create all widgetgroups for this widgetmap */
+       /* create all widgetgroups for this widgetmap. We may create an empty 
one too in anticipation of widgets from operators etc */
        for (; wgrouptype; wgrouptype = wgrouptype->next) {
                wmWidgetGroup *wgroup = MEM_callocN(sizeof(wmWidgetGroup), 
"widgetgroup");
                wgroup->type = wgrouptype;

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

Reply via email to