forked from enlightenment/enlightenment
perform gadget site layout before calling drop callback
calling this inside the drop callback resets the dropped gadget's position and causes the drop operation to fail
This commit is contained in:
parent
feb17c898d
commit
4d8e1d5e29
|
@ -1257,8 +1257,7 @@ _site_drop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
evas_pointer_canvas_xy_get(e_comp->evas, &mx, &my);
|
evas_pointer_canvas_xy_get(e_comp->evas, &mx, &my);
|
||||||
evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
|
evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
|
||||||
if (!E_INSIDE(mx, my, x, y, w, h)) return;
|
if (!E_INSIDE(mx, my, x, y, w, h)) return;
|
||||||
if (evas_object_smart_need_recalculate_get(event_info))
|
|
||||||
evas_object_smart_calculate(event_info);
|
|
||||||
EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
|
EINA_LIST_FOREACH(zgs->gadgets, l, zgc)
|
||||||
{
|
{
|
||||||
if (!zgc->display) continue;
|
if (!zgc->display) continue;
|
||||||
|
@ -2373,6 +2372,8 @@ _editor_pointer_button(Gadget_Item *active, int t EINA_UNUSED, Ecore_Event_Mouse
|
||||||
if (active->site)
|
if (active->site)
|
||||||
{
|
{
|
||||||
evas_object_geometry_get(active->site, &x, &y, &w, &h);
|
evas_object_geometry_get(active->site, &x, &y, &w, &h);
|
||||||
|
if (evas_object_smart_need_recalculate_get(active->site))
|
||||||
|
evas_object_smart_calculate(active->site);
|
||||||
if ((ev->buttons == 1) && E_INSIDE(ev->x, ev->y, x, y, w, h))
|
if ((ev->buttons == 1) && E_INSIDE(ev->x, ev->y, x, y, w, h))
|
||||||
evas_object_smart_callback_call(active->site, "gadget_site_dropped", pointer_site);
|
evas_object_smart_callback_call(active->site, "gadget_site_dropped", pointer_site);
|
||||||
e_comp_canvas_feed_mouse_up(0);
|
e_comp_canvas_feed_mouse_up(0);
|
||||||
|
@ -2413,6 +2414,8 @@ _editor_pointer_button(Gadget_Item *active, int t EINA_UNUSED, Ecore_Event_Mouse
|
||||||
z = zgc->orig;
|
z = zgc->orig;
|
||||||
zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc));
|
zgc->site->gadget_list = eina_inlist_remove(zgc->site->gadget_list, EINA_INLIST_GET(zgc));
|
||||||
zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc);
|
zgc->site->gadgets = eina_list_remove(zgc->site->gadgets, zgc);
|
||||||
|
if (evas_object_smart_need_recalculate_get(zzgs->layout))
|
||||||
|
evas_object_smart_calculate(zzgs->layout);
|
||||||
evas_object_geometry_get(zgc->display, &x, &y, NULL, NULL);
|
evas_object_geometry_get(zgc->display, &x, &y, NULL, NULL);
|
||||||
evas_object_move(z->display, x, y);
|
evas_object_move(z->display, x, y);
|
||||||
_gadget_free(zgc);
|
_gadget_free(zgc);
|
||||||
|
|
Loading…
Reference in New Issue