[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28622] trunk/blender/source/blender: Make drop images work from external desktop into Blender image window.
William Reynish
william at reynish.com
Thu May 6 19:45:02 CEST 2010
Revision: 28622
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28622
Author: billrey
Date: 2010-05-06 19:45:02 +0200 (Thu, 06 May 2010)
Log Message:
-----------
Make drop images work from external desktop into Blender image window.
Still has work todo, like detecting filetype on drop event itself. Ton will continue...
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_image/space_image.c
trunk/blender/source/blender/windowmanager/intern/wm_window.c
Modified: trunk/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/space_image.c 2010-05-06 17:12:44 UTC (rev 28621)
+++ trunk/blender/source/blender/editors/space_image/space_image.c 2010-05-06 17:45:02 UTC (rev 28622)
@@ -537,7 +537,7 @@
static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event)
{
if(drag->type==WM_DRAG_PATH)
- if(ELEM(drag->icon, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */
+ if(ELEM3(drag->icon, 0, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */
return 1;
return 0;
}
Modified: trunk/blender/source/blender/windowmanager/intern/wm_window.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_window.c 2010-05-06 17:12:44 UTC (rev 28621)
+++ trunk/blender/source/blender/windowmanager/intern/wm_window.c 2010-05-06 17:45:02 UTC (rev 28622)
@@ -739,16 +739,48 @@
}
case GHOST_kEventDraggingDropDone:
{
- wmEvent event= *(win->eventstate); /* copy last state, like mouse coords */
+ wmEvent event;
GHOST_TEventDragnDropData *ddd= GHOST_GetEventData(evt);
+ int cx, cy, wx, wy;
+
+ /* entering window, update mouse pos */
+ GHOST_GetCursorPosition(g_system, &wx, &wy);
+
+ GHOST_ScreenToClient(win->ghostwin, wx, wy, &cx, &cy);
+ win->eventstate->x= cx;
+
+#if defined(__APPLE__) && defined(GHOST_COCOA)
+ //Cocoa already uses coordinates with y=0 at bottom
+ win->eventstate->y= cy;
+#else
+ win->eventstate->y= (win->sizey-1) - cy;
+#endif
+
+ event= *(win->eventstate); /* copy last state, like mouse coords */
+
+ // activate region
+ event.type= MOUSEMOVE;
+ event.prevx= event.x;
+ event.prevy= event.y;
+
+ wm->winactive= win; /* no context change! c->wm->windrawable is drawable, or for area queues */
+ win->active= 1;
+
+ wm_event_add(win, &event);
+
+
/* make blender drop event with custom data pointing to wm drags */
event.type= EVT_DROP;
+ event.val= KM_RELEASE;
event.custom= EVT_DATA_LISTBASE;
event.customdata= &wm->drags;
+ event.customdatafree= 1;
- printf("Drop detected\n");
+ wm_event_add(win, &event);
+ /* printf("Drop detected\n"); */
+
/* add drag data to wm for paths: */
/* need icon type, some dropboxes check for that... see filesel code for this */
@@ -760,11 +792,12 @@
printf("drop file %s\n", stra->strings[a]);
WM_event_start_drag(C, 0, WM_DRAG_PATH, stra->strings[a], 0.0);
/* void poin should point to string, it makes a copy */
+ break; // only one drop element supported now
}
}
- wm_event_add(win, &event);
+
break;
}
More information about the Bf-blender-cvs
mailing list