[Bf-blender-cvs] [af74cba] wiggly-widgets: Widgets: Cleanup, no draw flag now, widgets are fully dynamic. Also calculate scale always to make sure interaction happens correctly.

Antony Riakiotakis noreply at git.blender.org
Mon Dec 1 11:58:06 CET 2014


Commit: af74cba653b748403199a9946cf67935d94e272b
Author: Antony Riakiotakis
Date:   Mon Dec 1 11:57:52 2014 +0100
Branches: wiggly-widgets
https://developer.blender.org/rBaf74cba653b748403199a9946cf67935d94e272b

Widgets: Cleanup, no draw flag now, widgets are fully dynamic. Also
calculate scale always to make sure interaction happens correctly.

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

M	source/blender/editors/space_node/space_node.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_generic_widgets.c
M	source/blender/windowmanager/intern/wm_widgets.c
M	source/blender/windowmanager/wm.h

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

diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 3e2dc18..4865762 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -879,12 +879,8 @@ static void WIDGETGROUP_node_transform_update(struct wmWidgetGroup *wgroup, cons
 		
 		WIDGET_cage_bounds_set(cage, xsize, ysize);
 		WM_widget_set_origin(cage, origin);
-		WM_widget_set_draw(cage, true);
 		WM_widget_property(cage, nodeptr, "backdrop_x");
 	}
-	else {
-		WM_widget_set_draw(cage, false);
-	}
 	BKE_image_release_ibuf(ima, ibuf, lock);
 }
 
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 3f6d475..510622e 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -494,7 +494,6 @@ void WM_widget_unregister(struct wmWidgetGroup *wgroup, struct wmWidget *widget)
 
 void *WM_widget_customdata(struct wmWidget *widget);
 void WM_widget_set_origin(struct wmWidget *widget, float origin[3]);
-void WM_widget_set_draw(struct wmWidget *widget, bool draw);
 void WM_widget_set_3d_scale(struct wmWidget *widget, bool scale);
 void WM_widget_set_draw_on_hover_only(struct wmWidget *widget, bool draw);
 void WM_widget_set_scale(struct wmWidget *widget, float scale);
diff --git a/source/blender/windowmanager/intern/wm_generic_widgets.c b/source/blender/windowmanager/intern/wm_generic_widgets.c
index 7b518b8..d0285ce 100644
--- a/source/blender/windowmanager/intern/wm_generic_widgets.c
+++ b/source/blender/windowmanager/intern/wm_generic_widgets.c
@@ -212,7 +212,7 @@ static void arrow_draw_intern(ArrowWidget *arrow, bool select, bool highlight)
 	glPushMatrix();
 	glMultMatrixf(&mat[0][0]);
 
-	if (highlight)
+	if (highlight && !(arrow->widget.flag & WM_WIDGET_DRAW_HOVER))
 		glColor4f(1.0, 1.0, 0.0, 1.0);
 	else
 		glColor4fv(arrow->color);
diff --git a/source/blender/windowmanager/intern/wm_widgets.c b/source/blender/windowmanager/intern/wm_widgets.c
index 7a05f7c..f12a9c4 100644
--- a/source/blender/windowmanager/intern/wm_widgets.c
+++ b/source/blender/windowmanager/intern/wm_widgets.c
@@ -331,12 +331,10 @@ void WM_widgets_draw(const bContext *C, struct ARegion *ar)
 				
 
 				for (widget_iter = wgroup->widgets.first; widget_iter; widget_iter = widget_iter->next) {
-					if (!(widget_iter->flag & WM_WIDGET_SKIP_DRAW) &&
-					    (!(widget_iter->flag & WM_WIDGET_DRAW_HOVER) || (widget_iter->flag & WM_WIDGET_HIGHLIGHT)))
-					{
-						widget_calculate_scale(widget_iter, C);
+					widget_calculate_scale(widget_iter, C);
+					/* scale must be calculated still for hover widgets, we just avoid drawing */
+					if (!(widget_iter->flag & WM_WIDGET_DRAW_HOVER) || (widget_iter->flag & WM_WIDGET_HIGHLIGHT))
 						widget_iter->draw(widget_iter, C);
-					}
 				}
 			}
 		}
@@ -410,16 +408,6 @@ void WM_widget_set_origin(struct wmWidget *widget, float origin[3])
 	copy_v3_v3(widget->origin, origin);
 }
 
-void WM_widget_set_draw(struct wmWidget *widget, bool draw)
-{
-	if (draw) {
-		widget->flag &= ~WM_WIDGET_SKIP_DRAW;
-	}
-	else {
-		widget->flag |= WM_WIDGET_SKIP_DRAW;
-	}
-}
-
 void WM_widget_set_3d_scale(struct wmWidget *widget, bool scale)
 {
 	if (scale) {
@@ -573,7 +561,7 @@ static void wm_prepare_visible_widgets_3D(struct wmWidgetMap *wmap, ListBase *vi
 	for (wgroup = wmap->widgetgroups.first; wgroup; wgroup = wgroup->next) {
 		if (!wgroup->type->poll || wgroup->type->poll(wgroup, C)) {
 			for (widget = wgroup->widgets.first; widget; widget = widget->next) {
-				if (!(widget->flag & WM_WIDGET_SKIP_DRAW) && widget->render_3d_intersection) {
+				if (widget->render_3d_intersection) {
 					BLI_addhead(visible_widgets, BLI_genericNodeN(widget));
 				}
 			}
@@ -622,7 +610,7 @@ wmWidget *wm_widget_find_highlighted(struct wmWidgetMap *wmap, bContext *C, cons
 	for (wgroup = wmap->widgetgroups.first; wgroup; wgroup = wgroup->next) {
 		if (!wgroup->type->poll || wgroup->type->poll(wgroup, C)) {
 			for (widget = wgroup->widgets.first; widget; widget = widget->next) {
-				if (!(widget->flag & WM_WIDGET_SKIP_DRAW) && widget->intersect) {
+				if (widget->intersect) {
 					if (widget->intersect(C, event, widget))
 						return widget;
 				}
diff --git a/source/blender/windowmanager/wm.h b/source/blender/windowmanager/wm.h
index 3cbb4c3..d0bf5a7 100644
--- a/source/blender/windowmanager/wm.h
+++ b/source/blender/windowmanager/wm.h
@@ -116,11 +116,10 @@ enum widgetflags {
 
 	/* other stuff */
 	WM_WIDGET_FREE_DATA  = (1 << 2),
-	WM_WIDGET_SKIP_DRAW  = (1 << 3),
 
-	WM_WIDGET_DRAW_HOVER = (1 << 4),
+	WM_WIDGET_DRAW_HOVER = (1 << 3),
 
-	WM_WIDGET_SCALE_3D   = (1 << 5),
+	WM_WIDGET_SCALE_3D   = (1 << 4),
 };
 
 extern void wm_close_and_free(bContext *C, wmWindowManager *);




More information about the Bf-blender-cvs mailing list