Dear all.
Currently, dragging is only supported in elm_photo.
Normally it works well but in overlapped region, elm_photo makes
multiple drag events.
However multiple objs dragging isn't supported by elm_cnp_helper(also
in xdnd specs)
It better to block multiple dragging events.
Also I fixed dragdonecb's data argument position.
Thank you.
Index: elementary/src/lib/elm_cnp_helper.c
===================================================================
--- elementary/src/lib/elm_cnp_helper.c (리비전 66761)
+++ elementary/src/lib/elm_cnp_helper.c (작업 사본)
@@ -1563,7 +1563,7 @@
ecore_x_dnd_aware_set(xwin, EINA_FALSE);
if (dragdonecb)
{
- dragdonecb(dragdonecb,selections[ELM_SEL_TYPE_XDND].widget);
+ dragdonecb(dragdonedata, selections[ELM_SEL_TYPE_XDND].widget);
dragdonecb = NULL;
}
if (dragwin)
@@ -1599,9 +1599,15 @@
cnp_debug("starting drag...\n");
- ecore_x_dnd_type_set(xwin, "text/uri-list", 1);
+ if (dragwin)
+ {
+ cnp_debug("another obj is dragging...\n");
+ return EINA_FALSE;
+ }
+
+ ecore_x_dnd_type_set(xwin, "text/uri-list", EINA_TRUE);
sel = selections + ELM_SEL_TYPE_XDND;
- sel->active = 1;
+ sel->active = EINA_TRUE;
sel->widget = obj;
sel->format = format;
sel->selbuf = data ? strdup(data) : NULL;
@@ -1618,12 +1624,12 @@
_dnd_status, NULL);
dragwin = elm_win_add(NULL, "Elm Drag Object", ELM_WIN_UTILITY);
- elm_win_override_set(dragwin, 1);
+ elm_win_override_set(dragwin, EINA_TRUE);
/* FIXME: Images only */
icon = elm_icon_add(dragwin);
elm_icon_file_set(icon, data + 7, NULL); /* 7!? "file://" */
- elm_win_resize_object_add(dragwin,icon);
+ elm_win_resize_object_add(dragwin, icon);
evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
Index: elementary/src/lib/elm_photo.c
===================================================================
--- elementary/src/lib/elm_photo.c (리비전 66761)
+++ elementary/src/lib/elm_photo.c (작업 사본)
@@ -189,14 +189,15 @@
/* FIXME: Deal with relative paths */
buf = malloc(strlen(file) + strlen("file://") + 1);
sprintf(buf, "%s%s","file://",file);
- elm_drag_start(objv, ELM_SEL_FORMAT_IMAGE,
- buf, _drag_done_cb, NULL);
+ if (elm_drag_start(objv, ELM_SEL_FORMAT_IMAGE,
+ buf, _drag_done_cb, NULL))
+ {
+ elm_object_scroll_freeze_push(objv);
+ evas_object_smart_callback_call(objv, SIG_DRAG_START, NULL);
+ }
free(buf);
}
- elm_object_scroll_freeze_push(objv);
- evas_object_smart_callback_call(objv, SIG_DRAG_START, NULL);
-
return 0; /* Don't call again */
}
------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create
new or port existing apps to sell to consumers worldwide. Explore the
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel