[Bf-blender-cvs] [0fb37c7] wiggly-widgets: Add back idnames to the widgetmaps, we could well need to define both for different transform areas.

Antony Riakiotakis noreply at git.blender.org
Wed Dec 10 12:46:29 CET 2014


Commit: 0fb37c710fc2aa7869f7d2cd32ba50e4209eb771
Author: Antony Riakiotakis
Date:   Wed Dec 10 12:46:15 2014 +0100
Branches: wiggly-widgets
https://developer.blender.org/rB0fb37c710fc2aa7869f7d2cd32ba50e4209eb771

Add back idnames to the widgetmaps, we could well need to define both
for different transform areas.

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

M	source/blender/editors/space_node/space_node.c
M	source/blender/editors/space_sequencer/sequencer_ops.c
M	source/blender/editors/space_sequencer/sequencer_view.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/makesrna/intern/rna_wm.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/WM_types.h
M	source/blender/windowmanager/intern/wm_widgets.c

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

diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 79b7411..a6f60ff 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -342,7 +342,7 @@ static SpaceLink *node_new(const bContext *UNUSED(C))
 
 	/* main area */
 	ar = MEM_callocN(sizeof(ARegion), "main area for node");
-	ar->widgetmap = WM_widgetmap_from_type(SPACE_NODE, RGN_TYPE_WINDOW, true);
+	ar->widgetmap = WM_widgetmap_from_type("View3D", SPACE_NODE, RGN_TYPE_WINDOW, true);
 
 	BLI_addtail(&snode->regionbase, ar);
 	ar->regiontype = RGN_TYPE_WINDOW;
@@ -664,7 +664,7 @@ static void node_main_area_init(wmWindowManager *wm, ARegion *ar)
 
 	/* make sure we have a widgetmap - sucks a bit to do it here, but works for now */
 	if (!ar->widgetmap) {
-		ar->widgetmap = WM_widgetmap_from_type(SPACE_NODE, RGN_TYPE_WINDOW, false);
+		ar->widgetmap = WM_widgetmap_from_type("Node_Canvas", SPACE_NODE, RGN_TYPE_WINDOW, false);
 	}
 
 	WM_event_add_widget_handler(ar);
@@ -886,13 +886,10 @@ static void WIDGETGROUP_node_transform_update(const struct bContext *C, struct w
 
 static void node_widgets(void)
 {
-	struct wmWidgetGroupType *wgroup_node_transform;
-
-	WM_widgetmaptype_find(SPACE_NODE, RGN_TYPE_WINDOW, false, true);
+	/* create the widgetmap for the area here */
+	WM_widgetmaptype_find("Node_Canvas", SPACE_NODE, RGN_TYPE_WINDOW, false, true);
 	
-	wgroup_node_transform = WM_widgetgrouptype_new(WIDGETGROUP_node_transform_poll, WIDGETGROUP_node_transform_update, SPACE_NODE, RGN_TYPE_WINDOW, false);
-	/* create the widgetmap here */
-	WM_widgetgrouptype_register(NULL, wgroup_node_transform);
+	WM_widgetgrouptype_new(WIDGETGROUP_node_transform_poll, WIDGETGROUP_node_transform_update, NULL, "Node_Canvas", SPACE_NODE, RGN_TYPE_WINDOW, false);
 }
 
 /* only called once, from space/spacetypes.c */
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index d62ee51..af9e33f 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -123,7 +123,7 @@ void sequencer_operatortypes(void)
 
 	/* sequencer_view.h */
 	WM_operatortype_append(SEQUENCER_OT_sample);
-	WM_operatortype_append(SEQUENCER_OT_backdrop_transform);	
+	WM_operatortype_append(SEQUENCER_OT_backdrop_transform);
 }
 
 
@@ -199,6 +199,8 @@ void sequencer_keymap(wmKeyConfig *keyconf)
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all", HOMEKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all", NDOF_BUTTON_FIT, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "SEQUENCER_OT_view_selected", PADPERIOD, KM_PRESS, 0, 0);
+	
+	WM_keymap_add_item(keymap, "SEQUENCER_OT_backdrop_transform", VKEY, KM_PRESS, 0, 0);
 
 	kmi = WM_keymap_add_item(keymap, "SEQUENCER_OT_strip_jump", PAGEUPKEY, KM_PRESS, 0, 0);
 	RNA_boolean_set(kmi->ptr, "next", true);
diff --git a/source/blender/editors/space_sequencer/sequencer_view.c b/source/blender/editors/space_sequencer/sequencer_view.c
index 261e261..f6befd5 100644
--- a/source/blender/editors/space_sequencer/sequencer_view.c
+++ b/source/blender/editors/space_sequencer/sequencer_view.c
@@ -247,7 +247,7 @@ static int sequencer_backdrop_transform_poll(bContext *C)
 	SpaceSeq *sseq = CTX_wm_space_seq(C);
 	ARegion *ar = CTX_wm_region(C);
 
-	return (sseq && ar && ar->type == RGN_TYPE_WINDOW && (sseq->draw_flag & SEQ_DRAW_BACKDROP));
+	return (sseq && ar && ar->type->regionid == RGN_TYPE_WINDOW && (sseq->draw_flag & SEQ_DRAW_BACKDROP));
 }
 
 static void widgetgroup_backdrop_draw(const struct bContext *C, struct wmWidgetGroup *wgroup)
@@ -268,7 +268,7 @@ static void widgetgroup_backdrop_draw(const struct bContext *C, struct wmWidgetG
 static int sequencer_backdrop_transform_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
 {
 	/* no poll, lives always for the duration of the operator */
-	wmWidgetGroupType *cagetype = WM_widgetgrouptype_new(NULL, widgetgroup_backdrop_draw, SPACE_SEQ, RGN_TYPE_WINDOW, false);
+	wmWidgetGroupType *cagetype = WM_widgetgrouptype_new(NULL, widgetgroup_backdrop_draw, CTX_data_main(C), "Seq_Canvas", SPACE_SEQ, RGN_TYPE_WINDOW, false);
 	
 	WM_event_add_modal_handler(C, op);
 	WM_event_add_widget_modal_handler(C, cagetype, op);
@@ -294,6 +294,8 @@ static int sequencer_backdrop_transform_modal(bContext *C, wmOperator *op, const
 
 void SEQUENCER_OT_backdrop_transform(struct wmOperatorType *ot)
 {
+	float default_offset[2] = {0.0f, 0.0f};
+	
 	/* identifiers */
 	ot->name = "Change Data/Files";
 	ot->idname = "SEQUENCER_OT_backdrop_transform";
@@ -305,6 +307,8 @@ void SEQUENCER_OT_backdrop_transform(struct wmOperatorType *ot)
 	ot->poll = sequencer_backdrop_transform_poll;
 
 	/* flags */
-	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;	
+	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);
 }
 
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 6c15ed8..e2c23a7 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -386,7 +386,7 @@ static SpaceLink *view3d_new(const bContext *C)
 	
 	BLI_addtail(&v3d->regionbase, ar);
 	ar->regiontype = RGN_TYPE_WINDOW;
-	ar->widgetmap = WM_widgetmap_from_type(SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
+	ar->widgetmap = WM_widgetmap_from_type("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
 	
 	ar->regiondata = MEM_callocN(sizeof(RegionView3D), "region view3d");
 
@@ -556,7 +556,7 @@ static void view3d_main_area_init(wmWindowManager *wm, ARegion *ar)
 
 	/* make sure we have a widgetmap - sucks a bit to do it here, but works for now */
 	if (!ar->widgetmap) {
-		ar->widgetmap = WM_widgetmap_from_type(SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
+		ar->widgetmap = WM_widgetmap_from_type("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
 	}
 
 	WM_event_add_widget_handler(ar);
@@ -780,14 +780,11 @@ static void WIDGETGROUP_shapekey_draw(const struct bContext *C, struct wmWidgetG
 
 static void view3d_widgets(void)
 {
-	wmWidgetGroupType *wgroup_light,*wgroup_camera, *wgroup_shapekey;
-	// struct wmWidgetGroupType *wgroup_manipulator;
-
-	WM_widgetmaptype_find(SPACE_VIEW3D, RGN_TYPE_WINDOW, true, true);
+	WM_widgetmaptype_find("View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true, true);
 	
-	wgroup_light = WM_widgetgrouptype_new(WIDGETGROUP_lamp_poll, WIDGETGROUP_lamp_draw, SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
-	wgroup_camera = WM_widgetgrouptype_new(WIDGETGROUP_camera_poll, WIDGETGROUP_camera_draw, SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
-	wgroup_shapekey = WM_widgetgrouptype_new(WIDGETGROUP_shapekey_poll, WIDGETGROUP_shapekey_draw, SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
+	WM_widgetgrouptype_new(WIDGETGROUP_lamp_poll, WIDGETGROUP_lamp_draw, NULL, "View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
+	WM_widgetgrouptype_new(WIDGETGROUP_camera_poll, WIDGETGROUP_camera_draw, NULL, "View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
+	WM_widgetgrouptype_new(WIDGETGROUP_shapekey_poll, WIDGETGROUP_shapekey_draw, NULL, "View3D", SPACE_VIEW3D, RGN_TYPE_WINDOW, true);
 
 #if 0
 	wgroup_manipulator = WM_widgetgrouptype_new(
@@ -795,10 +792,6 @@ static void view3d_widgets(void)
 	        WIDGETGROUP_manipulator_update);
 #endif
 	
-	//WM_widgetgrouptype_register(wmaptype, wgroup_manipulator);
-	WM_widgetgrouptype_register(NULL, wgroup_light);
-	WM_widgetgrouptype_register(NULL, wgroup_camera);
-	WM_widgetgrouptype_register(NULL, wgroup_shapekey);
 }
 
 
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index 3265890..e1273d1 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -1396,7 +1396,6 @@ static void rna_WidgetGroup_unregister(struct Main *bmain, StructRNA *type)
 	//RNA_struct_free_extension(type, &wgrouptype->ext);
 
 	WM_widgetgrouptype_unregister(bmain, wgrouptype);
-	MEM_freeN(wgrouptype);
 	//WM_operatortype_remove_ptr(ot);
 
 	/* not to be confused with the RNA_struct_free that WM_operatortype_remove calls, they are 2 different srna's */
@@ -1501,7 +1500,7 @@ static StructRNA *rna_WidgetGroup_register(Main *bmain, ReportList *reports, voi
 	}
 	
 	/* check if the area supports widgets */
-	if (!WM_widgetmaptype_find(dummywgt.spaceid, dummywgt.regionid, dummywgt.is_3d, false)) {
+	if (!WM_widgetmaptype_find(dummywgt.mapidname ,dummywgt.spaceid, dummywgt.regionid, dummywgt.is_3d, false)) {
 		BKE_reportf(reports, RPT_ERROR, "Area type does not support widgets");
 		return NULL;
 	}
@@ -1528,10 +1527,9 @@ static StructRNA *rna_WidgetGroup_register(Main *bmain, ReportList *reports, voi
 	dummywgt.poll = (have_function[0]) ? widgetgroup_poll : NULL;
 	dummywgt.draw = (have_function[1]) ? widgetgroup_draw : NULL;
 
-	wgrouptype = WM_widgetgrouptype_new(NULL, NULL, 0, 0, 0);
+	wgrouptype = WM_widgetgrouptype_new(dummywgt.poll, dummywgt.draw, bmain, dummywgt.mapidname, dummywgt.spaceid, dummywgt.regionid, dummywgt.is_3d);
 	memcpy(wgrouptype, &dummywgt, sizeof(dummywgt));
 	
-	WM_widgetgrouptype_register(bmain, wgrouptype);
 	/* update while blender is running */
 	WM_main_add_notifier(NC_SCREEN | NA_EDITED, NULL);
 
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 33e922e..6ad62c4 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -471,9 +471,6 @@ bool        WM_event_is_tablet(const struct wmEvent *event);
 
 
 /* widget API */
-struct wmWidgetGroupType *WM_widgetgrouptype_new(int (*poll)(const struct bContext *, struct wmWidgetGroupType *),
-                                                 void (*draw)(const struct bContext *, struct wmWidgetGroup *), short spaceid, short regionid, bool is_3d);
-
 struct wmWidget *WM_widget_new(void (*draw)(struct wmWidget *, const struct bContext *),
                                void (*render_3d_intersection)(const struct bContext *, struct wmWidget *, int),
                                int  (*intersect)(struct bContext

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list