discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=56f6c0f9504207626c7867c81173774c3232e7e0

commit 56f6c0f9504207626c7867c81173774c3232e7e0
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Aug 25 14:47:04 2017 -0400

    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
---
 src/bin/e_gadget.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c
index 1ddc5ccc3..6b3d1db55 100644
--- a/src/bin/e_gadget.c
+++ b/src/bin/e_gadget.c
@@ -983,8 +983,7 @@ _site_drop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info)
    evas_pointer_canvas_xy_get(e_comp->evas, &mx, &my);
    evas_object_geometry_get(zgs->layout, &x, &y, &w, &h);
    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)
      {
         if (!zgc->display) continue;
@@ -1888,6 +1887,8 @@ _editor_pointer_button(Gadget_Item *active, int t 
EINA_UNUSED, Ecore_Event_Mouse
    if (active->site)
      {
         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))
           evas_object_smart_callback_call(active->site, "gadget_site_dropped", 
pointer_site);
         e_comp_canvas_feed_mouse_up(0);
@@ -1926,6 +1927,8 @@ _editor_pointer_button(Gadget_Item *active, int t 
EINA_UNUSED, Ecore_Event_Mouse
              z = zgc->orig;
              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);
+             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_move(z->display, x, y);
              _gadget_free(zgc);

-- 


Reply via email to