[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59328] branches/soc-2013-ui_replay/source /blender: Added drop handler for custom panels to the toolbar.

Vincent Akkermans vincent at ack-err.net
Tue Aug 20 17:33:36 CEST 2013


Revision: 59328
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59328
Author:   ack-err
Date:     2013-08-20 15:33:36 +0000 (Tue, 20 Aug 2013)
Log Message:
-----------
Added drop handler for custom panels to the toolbar. N.B. the drop->copy function has changed everywhere so that bContext and wmEvent can be passed to it.

Modified Paths:
--------------
    branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h
    branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c
    branches/soc-2013-ui_replay/source/blender/editors/screen/screen_ops.c
    branches/soc-2013-ui_replay/source/blender/editors/space_clip/space_clip.c
    branches/soc-2013-ui_replay/source/blender/editors/space_console/space_console.c
    branches/soc-2013-ui_replay/source/blender/editors/space_image/space_image.c
    branches/soc-2013-ui_replay/source/blender/editors/space_node/space_node.c
    branches/soc-2013-ui_replay/source/blender/editors/space_outliner/space_outliner.c
    branches/soc-2013-ui_replay/source/blender/editors/space_sequencer/space_sequencer.c
    branches/soc-2013-ui_replay/source/blender/editors/space_text/space_text.c
    branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c
    branches/soc-2013-ui_replay/source/blender/windowmanager/WM_api.h
    branches/soc-2013-ui_replay/source/blender/windowmanager/WM_types.h
    branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_dragdrop.c
    branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_event_system.c
    branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_operators.c

Modified: branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/include/UI_interface.h	2013-08-20 15:33:36 UTC (rev 59328)
@@ -684,6 +684,7 @@
 
 void uiPanelAddOperator(struct Panel *pa, const char *optype_idname);
 void uiPanelFree(struct Panel *pa);
+int uiPanelClosed(struct Panel *pa);
 
 struct PanelType  *uiCreateCustomPanelType(struct ScrArea *sa, struct ARegion *ar, const char *context, const char *name);
 

Modified: branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/interface/interface_panel.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -1540,6 +1540,13 @@
 	MEM_freeN(pa);
 }
 
+int uiPanelClosed(Panel *pa)
+{
+	if (pa == NULL) return 0;
+	
+	return (pa->flag & PNL_CLOSED || pa->flag & PNL_CLOSEDX || pa->flag & PNL_CLOSEDY);
+}
+
 static void custom_panel_draw(const bContext *UNUSED(C), Panel *pa)
 {
 	uiLayout *layout = pa->layout;

Modified: branches/soc-2013-ui_replay/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/screen/screen_ops.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/screen/screen_ops.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -3852,7 +3852,7 @@
 	return 0;
 }
 
-static void open_file_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void open_file_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	/* copy drag path to properties */
 	RNA_string_set(drop->ptr, "filepath", drag->path);

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_clip/space_clip.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_clip/space_clip.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_clip/space_clip.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -815,7 +815,7 @@
 	return FALSE;
 }
 
-static void clip_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void clip_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	PointerRNA itemptr;
 	char dir[FILE_MAX], file[FILE_MAX];

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_console/space_console.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_console/space_console.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_console/space_console.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -171,7 +171,7 @@
 	return 0;
 }
 
-static void id_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void id_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	char *text;
 	ID *id = drag->poin;
@@ -190,7 +190,7 @@
 	return 0;
 }
 
-static void path_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void path_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	char pathname[FILE_MAX + 2];
 	BLI_snprintf(pathname, sizeof(pathname), "\"%s\"", drag->path);

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_image/space_image.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_image/space_image.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_image/space_image.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -345,7 +345,7 @@
 	return 0;
 }
 
-static void image_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void image_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	/* copy drag path to properties */
 	RNA_string_set(drop->ptr, "filepath", drag->path);

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_node/space_node.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_node/space_node.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_node/space_node.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -643,7 +643,7 @@
 	return 0;
 }
 
-static void node_id_path_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void node_id_path_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_outliner/space_outliner.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_outliner/space_outliner.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_outliner/space_outliner.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -126,7 +126,7 @@
 	return 0;
 }
 
-static void outliner_parent_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void outliner_parent_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 
@@ -164,7 +164,7 @@
 	return 0;
 }
 
-static void outliner_parent_clear_copy(wmDrag *drag, wmDropBox *drop)
+static void outliner_parent_clear_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 	RNA_string_set(drop->ptr, "dragged_obj", id->name + 2);
@@ -193,7 +193,7 @@
 	return 0;
 }
 
-static void outliner_scene_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void outliner_scene_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 
@@ -218,7 +218,7 @@
 	return 0;
 }
 
-static void outliner_material_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void outliner_material_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_sequencer/space_sequencer.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_sequencer/space_sequencer.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_sequencer/space_sequencer.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -414,7 +414,7 @@
 	return 0;
 }
 
-static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void sequencer_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	/* copy drag path to properties */
 	if (RNA_struct_find_property(drop->ptr, "filepath"))

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_text/space_text.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_text/space_text.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_text/space_text.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -468,7 +468,7 @@
 	return 0;
 }
 
-static void text_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void text_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	/* copy drag path to properties */
 	RNA_string_set(drop->ptr, "filepath", drag->path);

Modified: branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c	2013-08-20 14:43:01 UTC (rev 59327)
+++ branches/soc-2013-ui_replay/source/blender/editors/space_view3d/space_view3d.c	2013-08-20 15:33:36 UTC (rev 59328)
@@ -564,14 +564,14 @@
 	return 0;
 }
 
-static void view3d_ob_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void view3d_ob_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 
 	RNA_string_set(drop->ptr, "name", id->name + 2);
 }
 
-static void view3d_group_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void view3d_group_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 	
@@ -579,14 +579,14 @@
 	RNA_string_set(drop->ptr, "name", id->name + 2);
 }
 
-static void view3d_id_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void view3d_id_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 	
 	RNA_string_set(drop->ptr, "name", id->name + 2);
 }
 
-static void view3d_id_path_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void view3d_id_path_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	ID *id = (ID *)drag->poin;
 	
@@ -597,7 +597,7 @@
 }
 
 
-static void view3d_menubar_drop_copy(wmDrag *drag, wmDropBox *drop)
+static void view3d_menubar_drop_copy(const bContext *UNUSED(C), const wmEvent *UNUSED(event), wmDrag *drag, wmDropBox *drop)
 {
 	wmOperatorType *ot = (wmOperatorType*)drag->poin;
 	RNA_string_set(drop->ptr, "idname", ot->idname);
@@ -613,7 +613,48 @@
 	return 0;
 }
 
+static Panel *over_panel(const bContext *C, const wmEvent *event)
+{
+	ARegion *ar = CTX_wm_region(C); // This handler is only registered in the TOOLBAR region
+	const char *context = CTX_data_mode_string(C);
+	Panel *pa = NULL;
+	
+	for (pa = ar->panels.first; pa; pa = pa->next) {
+		if (pa->flag & PNL_CUSTOM_PANEL && !uiPanelClosed(pa) && strcmp(context, pa->context) == 0) {
+			// adjust ys for region
+			int adjy = event->y - (ar->winrct.ymax - ar->sizey);
+			int paminy = ar->sizey + pa->ofsy;
+			int pamaxy = paminy + pa->sizey;
+			int overp = adjy < pamaxy && adjy > paminy;
+			

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list