discomfitor pushed a commit to branch master.

commit 595ba0859d8a0bf7107405bf23abcac763a89115
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Jun 12 13:35:25 2013 +0100

    fix menu item dnd grabber
---
 src/bin/e_menu.c | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c
index 54c4105..98cd1a2 100644
--- a/src/bin/e_menu.c
+++ b/src/bin/e_menu.c
@@ -2768,27 +2768,10 @@ _e_menu_cb_item_in(void *data, Evas *evas __UNUSED__, 
Evas_Object *obj __UNUSED_
 }
 
 static void
-_e_menu_cb_item_out(void *data, Evas *evas __UNUSED__, Evas_Object *obj 
__UNUSED__, void *event_info)
+_e_menu_cb_item_out(void *data, Evas *evas __UNUSED__, Evas_Object *obj 
__UNUSED__, void *event_info EINA_UNUSED)
 {
-   E_Menu_Item *mi;
-   Evas_Event_Mouse_In *ev;
-
-   mi = data;
-   ev = event_info;
+   E_Menu_Item *mi = data;
    e_menu_item_active_set(mi, 0);
-   if (_e_menu_activate_maybe_drag)
-     {
-        if (mi->drag_cb.func)
-          {
-             /* User is dragging a draggable item elsewhere. */
-             mi->drag.x = ev->output.x - (ev->output.x - mi->x);
-             mi->drag.y = ev->output.y - (ev->output.y - mi->y);
-             _e_menu_deactivate_all();
-             mi->drag_cb.func(mi->drag_cb.data, mi->menu, mi);
-          }
-        /* Either way, the maybe drag stops here. */
-        _e_menu_activate_maybe_drag = 0;
-     }
 }
 
 static Eina_Bool
@@ -2976,7 +2959,25 @@ _e_menu_cb_mouse_move(void *data __UNUSED__, int type 
__UNUSED__, void *event)
                     _e_menu_submenu_activate(mi);
                }
           }
-       evas_event_feed_mouse_move(m->evas, ev->x, ev->y, ev->timestamp, NULL);
+       if (!_e_menu_activate_maybe_drag)
+         /* this is useless while the mouse is down */
+         evas_event_feed_mouse_move(m->evas, ev->x, ev->y, ev->timestamp, 
NULL);
+     }
+   if (_e_active_menu_item)
+     {
+        if (!E_INSIDE(ev->x, ev->y, _e_active_menu_item->x, 
_e_active_menu_item->y, _e_active_menu_item->w, _e_active_menu_item->h))
+          {
+             if (_e_active_menu_item->drag_cb.func)
+               {
+                  /* User is dragging a draggable item elsewhere. */
+                  _e_active_menu_item->drag.x = ev->x - (ev->x - 
_e_active_menu_item->x);
+                  _e_active_menu_item->drag.y = ev->y - (ev->y - 
_e_active_menu_item->y);
+                  _e_menu_deactivate_all();
+                  
_e_active_menu_item->drag_cb.func(_e_active_menu_item->drag_cb.data, 
_e_active_menu_item->menu, _e_active_menu_item);
+               }
+             /* Either way, the maybe drag stops here. */
+             _e_menu_activate_maybe_drag = 0;
+          }
      }
 
    _e_menu_list_free_unref(tmp);

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to