discomfitor pushed a commit to branch master.
commit c3bfd72525adbb7122ad4bbcad56a47bb839f477
Author: Mike Blumenkrantz <[email protected]>
Date: Thu May 30 07:49:53 2013 +0100
delete ibar menu timer on mouse move to prevent interference when dragging
icons
---
src/modules/ibar/e_mod_main.c | 79 +++++++++++++++++++++----------------------
1 file changed, 38 insertions(+), 41 deletions(-)
diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index a2c6996..5011e19 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -1195,50 +1195,47 @@ _ibar_cb_icon_mouse_up(void *data, Evas *e __UNUSED__,
Evas_Object *obj __UNUSED
static void
_ibar_cb_icon_mouse_move(void *data, Evas *e __UNUSED__, Evas_Object *obj
__UNUSED__, void *event_info)
{
- Evas_Event_Mouse_Move *ev;
- IBar_Icon *ic;
+ Evas_Event_Mouse_Move *ev = event_info;
+ IBar_Icon *ic = data;
+ int dx, dy;
- ev = event_info;
- ic = data;
- if (ic->drag.start)
+ E_FREE_FUNC(ic->timer, ecore_timer_del);
+ if (!ic->drag.start) return;
+
+ dx = ev->cur.output.x - ic->drag.x;
+ dy = ev->cur.output.y - ic->drag.y;
+ if (((dx * dx) + (dy * dy)) >
+ (e_config->drag_resist * e_config->drag_resist))
{
- int dx, dy;
+ E_Drag *d;
+ Evas_Object *o;
+ Evas_Coord x, y, w, h;
+ unsigned int size;
+ const char *drag_types[] = { "enlightenment/desktop" };
+ E_Gadcon_Client *gc;
+
+ ic->drag.dnd = 1;
+ ic->drag.start = 0;
- dx = ev->cur.output.x - ic->drag.x;
- dy = ev->cur.output.y - ic->drag.y;
- if (((dx * dx) + (dy * dy)) >
- (e_config->drag_resist * e_config->drag_resist))
- {
- E_Drag *d;
- Evas_Object *o;
- Evas_Coord x, y, w, h;
- unsigned int size;
- const char *drag_types[] = { "enlightenment/desktop" };
- E_Gadcon_Client *gc;
-
- ic->drag.dnd = 1;
- ic->drag.start = 0;
-
- if (ic->ibar->inst->ci->lock_move) return;
-
- evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
- d = e_drag_new(ic->ibar->inst->gcc->gadcon->zone->container,
- x, y, drag_types, 1,
- ic->app, -1, NULL, _ibar_cb_drag_finished);
- efreet_desktop_ref(ic->app);
- size = MAX(w, h);
- o = e_util_desktop_icon_add(ic->app, size, e_drag_evas_get(d));
- e_drag_object_set(d, o);
-
- e_drag_resize(d, w, h);
- e_drag_start(d, ic->drag.x, ic->drag.y);
- ic->ibar->icons = eina_list_remove(ic->ibar->icons, ic);
- _ibar_resize_handle(ic->ibar);
- gc = ic->ibar->inst->gcc;
- _gc_orient(gc, -1);
- e_order_remove(ic->ibar->io->eo, ic->app);
- _ibar_icon_free(ic);
- }
+ if (ic->ibar->inst->ci->lock_move) return;
+
+ evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
+ d = e_drag_new(ic->ibar->inst->gcc->gadcon->zone->container,
+ x, y, drag_types, 1,
+ ic->app, -1, NULL, _ibar_cb_drag_finished);
+ efreet_desktop_ref(ic->app);
+ size = MAX(w, h);
+ o = e_util_desktop_icon_add(ic->app, size, e_drag_evas_get(d));
+ e_drag_object_set(d, o);
+
+ e_drag_resize(d, w, h);
+ e_drag_start(d, ic->drag.x, ic->drag.y);
+ ic->ibar->icons = eina_list_remove(ic->ibar->icons, ic);
+ _ibar_resize_handle(ic->ibar);
+ gc = ic->ibar->inst->gcc;
+ _gc_orient(gc, -1);
+ e_order_remove(ic->ibar->io->eo, ic->app);
+ _ibar_icon_free(ic);
}
}
--
------------------------------------------------------------------------------
Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET
Get 100% visibility into your production application - at no cost.
Code-level diagnostics for performance bottlenecks with <2% overhead
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap1