Elm; drag_start now has a donecb.

SVN revision: 52127
This commit is contained in:
Brett Nash 2010-09-10 08:24:21 +00:00
parent 3e02b10c35
commit 8a74d9c272
2 changed files with 18 additions and 5 deletions

View File

@ -289,6 +289,9 @@ struct {
int x,y;
} savedtypes = { 0, NULL, 0, NULL, 0, 0 };
static void (*dragdonecb)(void *,Evas_Object*);
static void *dragdonedata;
static int _elm_cnp_init_count = 0;
/* Gah... who left this out of XAtoms.h */
static Ecore_X_Atom clipboard_atom;
@ -1371,15 +1374,19 @@ elm_drop_target_del(Evas_Object *obj)
static void
_drag_mouse_up(void *un, Evas *e, Evas_Object *obj, void *data)
{
printf("GOt mouse up\n");
evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP, _drag_mouse_up);
ecore_x_dnd_drop();
if (dragdonecb)
{
dragdonecb(dragdonecb,selections[ELM_SEL_XDND].widget);
dragdonecb = NULL;
}
}
Eina_Bool
elm_drag_start(Evas_Object *obj, enum _elm_sel_format format, const void *data)
elm_drag_start(Evas_Object *obj, enum _elm_sel_format format, const char *data,
void (*dragdone)(void *data, Evas_Object *),void *donecbdata)
{
Ecore_X_Window xwin;
struct _elm_cnp_selection *sel;
@ -1398,10 +1405,14 @@ elm_drag_start(Evas_Object *obj, enum _elm_sel_format format, const void *data)
sel->widget = obj;
sel->format = format;
sel->selbuf = data ? strdup(data) : NULL;
dragdonecb = dragdone;
dragdonedata = donecbdata;
ecore_x_dnd_begin(xwin, (unsigned char *)&xdnd, sizeof(enum _elm_sel_type));
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP,
_drag_mouse_up, NULL);
// set types
// start watching motion notify on mouse
// - get window under cursor
@ -1420,7 +1431,8 @@ elm_drag_start(Evas_Object *obj, enum _elm_sel_format format, const void *data)
#else
/* Stubs for windows */
Eina_Bool
elm_drag_start(Evas_Object *o, enum _elm_sel_format f, const void *d)
elm_drag_start(Evas_Object *o, enum _elm_sel_format f, const char *d,
void (*donecb)(void *, Evas_Object *),void *cbdata)
{
return false;
}

View File

@ -335,7 +335,8 @@ Eina_Bool elm_drop_target_add(Evas_Object *widget,
enum _elm_sel_type, elm_drop_cb, void *);
Eina_Bool elm_drop_target_del(Evas_Object *widget);
Eina_Bool elm_drag_start(Evas_Object *, enum _elm_sel_format,
const void *);
const char *,
void (*)(void *,Evas_Object*),void*);
Eina_Bool _elm_dangerous_call_check(const char *call);