2003-06-23 19:33:04 -07:00
|
|
|
#include "edje_private.h"
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_hold_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2008-03-31 14:38:51 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Hold *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
|
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
|
|
|
if (!rp) return;
|
|
|
|
if (ev->hold)
|
|
|
|
_edje_emit(ed, "hold,on", rp->part->name);
|
|
|
|
else
|
|
|
|
_edje_emit(ed, "hold,off", rp->part->name);
|
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_focus_in_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
|
2010-02-23 05:39:19 -08:00
|
|
|
{
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
|
|
|
if ((!rp) || (!ed))
|
|
|
|
return;
|
|
|
|
|
|
|
|
_edje_emit(ed, "focus,part,in", rp->part->name);
|
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_focus_out_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
|
2010-02-23 05:39:19 -08:00
|
|
|
{
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
|
|
|
if ((!rp) || (!ed))
|
|
|
|
return;
|
|
|
|
|
|
|
|
_edje_emit(ed, "focus,part,out", rp->part->name);
|
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_mouse_in_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Mouse_In *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
2008-04-03 17:07:07 -07:00
|
|
|
if ((!rp) ||
|
2008-04-03 11:22:22 -07:00
|
|
|
((ev->event_flags) &&
|
2008-04-03 17:07:07 -07:00
|
|
|
(rp->part->ignore_flags & ev->event_flags))) return;
|
2003-06-23 19:33:04 -07:00
|
|
|
_edje_emit(ed, "mouse,in", rp->part->name);
|
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_mouse_out_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Out *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
2008-04-03 17:07:07 -07:00
|
|
|
if ((!rp) ||
|
|
|
|
((ev->event_flags) &&
|
|
|
|
(rp->part->ignore_flags & ev->event_flags))) return;
|
2003-06-23 19:33:04 -07:00
|
|
|
_edje_emit(ed, "mouse,out", rp->part->name);
|
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_mouse_down_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Down *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
char buf[256];
|
2008-04-01 14:33:17 -07:00
|
|
|
int ignored;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
|
|
|
if (!rp) return;
|
2008-04-01 14:33:17 -07:00
|
|
|
|
|
|
|
ignored = rp->part->ignore_flags & ev->event_flags;
|
|
|
|
|
2003-08-25 17:16:49 -07:00
|
|
|
_edje_ref(ed);
|
2004-12-07 05:31:15 -08:00
|
|
|
_edje_freeze(ed);
|
2008-04-01 14:33:17 -07:00
|
|
|
|
2008-04-03 11:22:22 -07:00
|
|
|
if ((!ev->event_flags) || (!ignored))
|
2008-04-01 14:33:17 -07:00
|
|
|
{
|
|
|
|
if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK)
|
|
|
|
snprintf(buf, sizeof(buf), "mouse,down,%i,triple", ev->button);
|
|
|
|
else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
|
|
|
|
snprintf(buf, sizeof(buf), "mouse,down,%i,double", ev->button);
|
|
|
|
else
|
|
|
|
snprintf(buf, sizeof(buf), "mouse,down,%i", ev->button);
|
|
|
|
_edje_emit(ed, buf, rp->part->name);
|
|
|
|
}
|
2005-07-26 06:59:03 -07:00
|
|
|
|
2009-08-11 07:55:26 -07:00
|
|
|
if (rp->events_to)
|
2005-07-26 12:27:02 -07:00
|
|
|
{
|
|
|
|
int x = 0, y = 0;
|
2005-10-31 20:10:01 -08:00
|
|
|
Edje_Real_Part *events;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2009-08-11 07:55:26 -07:00
|
|
|
events = rp->events_to;
|
2005-07-26 12:27:02 -07:00
|
|
|
evas_object_geometry_get(rp->object, &x, &y, NULL, NULL);
|
|
|
|
|
|
|
|
if ((events->part->dragable.x) || (events->part->dragable.y))
|
|
|
|
{
|
|
|
|
if (events->part->dragable.x)
|
2005-07-26 06:59:03 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
events->drag->down.x = ev->canvas.x;
|
|
|
|
events->drag->tmp.x = 0;
|
2005-07-26 06:59:03 -07:00
|
|
|
}
|
2005-07-26 12:27:02 -07:00
|
|
|
if (events->part->dragable.y)
|
2005-07-26 06:59:03 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
events->drag->down.y = ev->canvas.y;
|
|
|
|
events->drag->tmp.y = 0;
|
2005-07-26 06:59:03 -07:00
|
|
|
}
|
|
|
|
|
2008-04-01 14:33:17 -07:00
|
|
|
if (!ignored)
|
|
|
|
{
|
|
|
|
snprintf(buf, sizeof(buf), "mouse,down,%i", ev->button);
|
|
|
|
_edje_emit(ed, buf, events->part->name);
|
|
|
|
}
|
2005-07-26 12:27:02 -07:00
|
|
|
ed->dirty = 1;
|
2009-08-10 08:16:51 -07:00
|
|
|
#ifdef EDJE_CALC_CACHE
|
|
|
|
rp->invalidate = 1;
|
|
|
|
#endif
|
2005-07-26 12:27:02 -07:00
|
|
|
}
|
2008-11-14 03:06:15 -08:00
|
|
|
_edje_recalc_do(ed);
|
2009-08-11 07:55:26 -07:00
|
|
|
/*
|
|
|
|
_edje_thaw(ed);
|
|
|
|
_edje_unref(ed);
|
|
|
|
_edje_ref(ed);
|
|
|
|
_edje_freeze(ed);
|
|
|
|
*/
|
2005-07-26 12:27:02 -07:00
|
|
|
rp = events;
|
2009-08-11 07:55:26 -07:00
|
|
|
{
|
2009-12-09 07:44:54 -08:00
|
|
|
FLOAT_T dx = ZERO, dy = ZERO;
|
2009-08-11 07:55:26 -07:00
|
|
|
|
2010-01-15 11:57:17 -08:00
|
|
|
_edje_part_dragable_calc(ed, rp, &dx, &dy);
|
2009-08-11 07:55:26 -07:00
|
|
|
|
|
|
|
if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y))
|
|
|
|
{
|
|
|
|
rp->drag->val.x = dx;
|
|
|
|
rp->drag->val.y = dy;
|
|
|
|
if (!ignored)
|
|
|
|
_edje_emit(ed, "drag", rp->part->name);
|
|
|
|
ed->dirty = 1;
|
2009-08-10 08:16:51 -07:00
|
|
|
#ifdef EDJE_CALC_CACHE
|
2009-08-11 07:55:26 -07:00
|
|
|
rp->invalidate = 1;
|
2009-08-10 08:16:51 -07:00
|
|
|
#endif
|
2009-08-11 07:55:26 -07:00
|
|
|
rp->drag->need_reset = 1;
|
|
|
|
_edje_recalc_do(ed);
|
|
|
|
}
|
|
|
|
}
|
2005-07-26 12:27:02 -07:00
|
|
|
}
|
2005-07-26 06:59:03 -07:00
|
|
|
|
2009-08-11 07:55:26 -07:00
|
|
|
if (rp->drag)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
if (rp->drag->down.count == 0)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
|
|
|
if (rp->part->dragable.x)
|
2009-08-11 07:55:26 -07:00
|
|
|
rp->drag->down.x = ev->canvas.x;
|
2003-08-15 06:35:25 -07:00
|
|
|
if (rp->part->dragable.y)
|
2009-08-11 07:55:26 -07:00
|
|
|
rp->drag->down.y = ev->canvas.y;
|
2008-04-01 14:33:17 -07:00
|
|
|
if (!ignored)
|
|
|
|
_edje_emit(ed, "drag,start", rp->part->name);
|
2003-08-15 06:35:25 -07:00
|
|
|
}
|
2009-08-11 05:47:00 -07:00
|
|
|
rp->drag->down.count++;
|
2003-08-15 06:35:25 -07:00
|
|
|
}
|
2009-08-11 07:55:26 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
if (rp->clicked_button == 0)
|
|
|
|
{
|
|
|
|
rp->clicked_button = ev->button;
|
2010-11-20 22:28:13 -08:00
|
|
|
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
|
|
|
|
rp->still_in = 1;
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
2008-11-14 03:06:15 -08:00
|
|
|
// _edje_recalc_do(ed);
|
2007-09-08 11:31:56 -07:00
|
|
|
_edje_thaw(ed);
|
2003-08-25 17:16:49 -07:00
|
|
|
_edje_unref(ed);
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_mouse_up_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Up *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
char buf[256];
|
2008-04-01 14:33:17 -07:00
|
|
|
int ignored;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
|
|
|
if (!rp) return;
|
2005-07-26 06:59:03 -07:00
|
|
|
|
2008-04-01 14:33:17 -07:00
|
|
|
ignored = rp->part->ignore_flags & ev->event_flags;
|
|
|
|
|
2003-08-25 17:16:49 -07:00
|
|
|
_edje_ref(ed);
|
2005-10-31 20:10:01 -08:00
|
|
|
_edje_freeze(ed);
|
2005-07-26 06:59:03 -07:00
|
|
|
|
2008-04-03 11:22:22 -07:00
|
|
|
if ((!ev->event_flags) || (!ignored))
|
2005-07-26 12:27:02 -07:00
|
|
|
{
|
|
|
|
snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button);
|
|
|
|
_edje_emit(ed, buf, rp->part->name);
|
2005-10-31 20:10:01 -08:00
|
|
|
}
|
2005-07-26 06:59:03 -07:00
|
|
|
|
2009-08-11 07:55:26 -07:00
|
|
|
if (rp->events_to)
|
2008-04-01 14:33:17 -07:00
|
|
|
{
|
2009-08-11 07:55:26 -07:00
|
|
|
rp = rp->events_to;
|
|
|
|
if (!ignored)
|
2008-04-01 14:33:17 -07:00
|
|
|
{
|
2009-08-11 07:55:26 -07:00
|
|
|
snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button);
|
|
|
|
_edje_emit(ed, buf, rp->part->name);
|
2008-04-01 14:33:17 -07:00
|
|
|
}
|
2009-08-11 07:55:26 -07:00
|
|
|
}
|
2008-04-01 14:33:17 -07:00
|
|
|
|
2009-08-11 07:55:26 -07:00
|
|
|
if (rp->drag)
|
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
if (rp->drag->down.count > 0)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
rp->drag->down.count--;
|
|
|
|
if (rp->drag->down.count == 0)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
rp->drag->need_reset = 1;
|
2003-08-15 06:35:25 -07:00
|
|
|
ed->dirty = 1;
|
2009-08-10 08:16:51 -07:00
|
|
|
#ifdef EDJE_CALC_CACHE
|
|
|
|
rp->invalidate = 1;
|
|
|
|
#endif
|
2008-04-01 14:33:17 -07:00
|
|
|
if (!ignored)
|
|
|
|
_edje_emit(ed, "drag,stop", rp->part->name);
|
2003-08-15 06:35:25 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2009-08-11 05:47:00 -07:00
|
|
|
|
2008-04-01 14:33:17 -07:00
|
|
|
if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored))
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
snprintf(buf, sizeof(buf), "mouse,clicked,%i", ev->button);
|
|
|
|
_edje_emit(ed, buf, rp->part->name);
|
|
|
|
}
|
2006-12-18 00:50:25 -08:00
|
|
|
rp->clicked_button = 0;
|
|
|
|
rp->still_in = 0;
|
|
|
|
|
2008-11-14 03:06:15 -08:00
|
|
|
// _edje_recalc_do(ed);
|
2003-08-15 06:35:25 -07:00
|
|
|
_edje_thaw(ed);
|
2003-08-25 17:16:49 -07:00
|
|
|
_edje_unref(ed);
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_mouse_move_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Move *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
2008-04-01 14:33:17 -07:00
|
|
|
int ignored;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
|
|
|
if (!rp) return;
|
2009-08-11 07:55:26 -07:00
|
|
|
if (rp->events_to) rp = rp->events_to;
|
2005-07-26 06:59:03 -07:00
|
|
|
|
2008-04-01 14:33:17 -07:00
|
|
|
ignored = rp->part->ignore_flags & ev->event_flags;
|
|
|
|
|
2005-10-31 20:10:01 -08:00
|
|
|
_edje_ref(ed);
|
2008-04-03 11:22:22 -07:00
|
|
|
if ((!ev->event_flags) || (!ignored))
|
2008-04-01 14:33:17 -07:00
|
|
|
_edje_emit(ed, "mouse,move", rp->part->name);
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
if (rp->still_in)
|
|
|
|
{
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2010-11-20 22:28:13 -08:00
|
|
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
|
|
|
|
rp->still_in = 0;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Evas_Coord x, y, w, h;
|
|
|
|
|
|
|
|
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
|
|
|
if ((ev->cur.canvas.x < x) || (ev->cur.canvas.y < y) ||
|
|
|
|
(ev->cur.canvas.x >= (x + w)) || (ev->cur.canvas.y >= (y + h)))
|
|
|
|
rp->still_in = 0;
|
|
|
|
}
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
2003-06-25 14:40:32 -07:00
|
|
|
else
|
|
|
|
{
|
2010-11-20 22:28:13 -08:00
|
|
|
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
|
|
|
|
{
|
|
|
|
Evas_Coord x, y, w, h;
|
|
|
|
|
|
|
|
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
|
|
|
if ((ev->cur.canvas.x >= x) && (ev->cur.canvas.y >= y) &&
|
|
|
|
(ev->cur.canvas.x < (x + w)) && (ev->cur.canvas.y < (y + h)))
|
|
|
|
rp->still_in = 1;
|
|
|
|
}
|
2003-06-25 14:40:32 -07:00
|
|
|
}
|
2003-08-15 06:35:25 -07:00
|
|
|
_edje_freeze(ed);
|
2009-08-11 05:47:00 -07:00
|
|
|
if (rp->drag)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
if (rp->drag->down.count > 0)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
|
|
|
if (rp->part->dragable.x)
|
2009-08-11 05:47:00 -07:00
|
|
|
rp->drag->tmp.x = ev->cur.canvas.x - rp->drag->down.x;
|
2003-08-15 06:35:25 -07:00
|
|
|
if (rp->part->dragable.y)
|
2009-08-11 05:47:00 -07:00
|
|
|
rp->drag->tmp.y = ev->cur.canvas.y - rp->drag->down.y;
|
2003-08-15 06:35:25 -07:00
|
|
|
ed->dirty = 1;
|
2009-08-10 08:16:51 -07:00
|
|
|
#ifdef EDJE_CALC_CACHE
|
|
|
|
rp->invalidate = 1;
|
|
|
|
#endif
|
2003-08-15 06:35:25 -07:00
|
|
|
}
|
2008-11-14 03:06:15 -08:00
|
|
|
_edje_recalc_do(ed);
|
2009-08-11 05:47:00 -07:00
|
|
|
|
|
|
|
if (rp->drag->down.count > 0)
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
2009-12-09 07:44:54 -08:00
|
|
|
FLOAT_T dx, dy;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2010-01-15 11:57:17 -08:00
|
|
|
_edje_part_dragable_calc(ed, rp, &dx, &dy);
|
2009-08-11 05:47:00 -07:00
|
|
|
if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y))
|
2003-08-15 06:35:25 -07:00
|
|
|
{
|
2009-08-11 05:47:00 -07:00
|
|
|
rp->drag->val.x = dx;
|
|
|
|
rp->drag->val.y = dy;
|
2008-04-01 14:33:17 -07:00
|
|
|
if (!ignored)
|
|
|
|
_edje_emit(ed, "drag", rp->part->name);
|
2003-09-12 01:09:47 -07:00
|
|
|
ed->dirty = 1;
|
2009-08-10 08:16:51 -07:00
|
|
|
#ifdef EDJE_CALC_CACHE
|
|
|
|
rp->invalidate = 1;
|
|
|
|
#endif
|
2008-11-14 03:06:15 -08:00
|
|
|
_edje_recalc_do(ed);
|
2003-08-15 06:35:25 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2003-08-25 17:16:49 -07:00
|
|
|
_edje_unref(ed);
|
2007-09-08 11:31:56 -07:00
|
|
|
_edje_thaw(ed);
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
|
|
|
|
2010-02-23 07:55:04 -08:00
|
|
|
static void
|
2011-01-15 19:56:41 -08:00
|
|
|
_edje_mouse_wheel_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Wheel *ev;
|
|
|
|
Edje *ed;
|
|
|
|
Edje_Real_Part *rp;
|
|
|
|
char buf[256];
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
ev = event_info;
|
|
|
|
ed = data;
|
|
|
|
rp = evas_object_data_get(obj, "real_part");
|
2008-04-03 11:18:36 -07:00
|
|
|
if ((!rp) ||
|
|
|
|
((ev->event_flags) &&
|
|
|
|
(!(rp->part->ignore_flags & ev->event_flags)))) return;
|
2008-04-01 14:33:17 -07:00
|
|
|
|
2003-06-23 19:33:04 -07:00
|
|
|
snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1));
|
|
|
|
_edje_emit(ed, buf, rp->part->name);
|
|
|
|
}
|
|
|
|
|
2010-06-24 09:16:50 -07:00
|
|
|
Eina_Bool
|
2010-07-22 11:42:44 -07:00
|
|
|
_edje_timer_cb(void *data __UNUSED__)
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
|
|
|
double t;
|
2008-10-22 04:34:42 -07:00
|
|
|
Eina_List *l;
|
|
|
|
Eina_List *animl = NULL;
|
2003-06-26 07:04:31 -07:00
|
|
|
Edje *ed;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2008-11-01 19:43:43 -07:00
|
|
|
t = ecore_loop_time_get();
|
2008-10-22 04:34:42 -07:00
|
|
|
EINA_LIST_FOREACH(_edje_animators, l, ed)
|
2003-06-26 07:04:31 -07:00
|
|
|
{
|
|
|
|
_edje_ref(ed);
|
2008-10-22 04:34:42 -07:00
|
|
|
animl = eina_list_append(animl, ed);
|
2003-06-26 07:04:31 -07:00
|
|
|
}
|
2003-06-23 19:33:04 -07:00
|
|
|
while (animl)
|
|
|
|
{
|
2008-10-22 04:34:42 -07:00
|
|
|
Eina_List *newl = NULL;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2008-10-22 04:34:42 -07:00
|
|
|
ed = eina_list_data_get(animl);
|
2003-08-25 17:16:49 -07:00
|
|
|
_edje_block(ed);
|
2003-06-23 19:33:04 -07:00
|
|
|
_edje_freeze(ed);
|
2008-10-22 04:34:42 -07:00
|
|
|
animl = eina_list_remove(animl, eina_list_data_get(animl));
|
2003-08-25 17:16:49 -07:00
|
|
|
if ((!ed->paused) && (!ed->delete_me))
|
2003-06-23 19:33:04 -07:00
|
|
|
{
|
2008-10-22 04:34:42 -07:00
|
|
|
const void *tmp;
|
|
|
|
|
2003-08-13 04:03:20 -07:00
|
|
|
ed->walking_actions = 1;
|
2008-10-22 04:34:42 -07:00
|
|
|
EINA_LIST_FOREACH(ed->actions, l, tmp)
|
|
|
|
newl = eina_list_append(newl, tmp);
|
2003-07-07 00:55:18 -07:00
|
|
|
while (newl)
|
|
|
|
{
|
|
|
|
Edje_Running_Program *runp;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2008-10-22 04:34:42 -07:00
|
|
|
runp = eina_list_data_get(newl);
|
|
|
|
newl = eina_list_remove(newl, eina_list_data_get(newl));
|
2003-08-13 04:03:20 -07:00
|
|
|
if (!runp->delete_me)
|
|
|
|
_edje_program_run_iterate(runp, t);
|
2003-08-25 17:16:49 -07:00
|
|
|
if (_edje_block_break(ed))
|
|
|
|
{
|
2008-10-22 04:34:42 -07:00
|
|
|
eina_list_free(newl);
|
2003-08-25 17:16:49 -07:00
|
|
|
newl = NULL;
|
|
|
|
goto break_prog;
|
|
|
|
}
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2008-10-22 04:34:42 -07:00
|
|
|
EINA_LIST_FOREACH(ed->actions, l, tmp)
|
|
|
|
newl = eina_list_append(newl, tmp);
|
2003-08-13 04:03:20 -07:00
|
|
|
while (newl)
|
|
|
|
{
|
|
|
|
Edje_Running_Program *runp;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2008-10-22 04:34:42 -07:00
|
|
|
runp = eina_list_data_get(newl);
|
|
|
|
newl = eina_list_remove(newl, eina_list_data_get(newl));
|
2003-08-13 04:03:20 -07:00
|
|
|
if (runp->delete_me)
|
|
|
|
{
|
2007-09-08 11:31:56 -07:00
|
|
|
_edje_anim_count--;
|
|
|
|
runp->edje->actions =
|
2008-10-22 04:34:42 -07:00
|
|
|
eina_list_remove(runp->edje->actions, runp);
|
2003-08-13 04:03:20 -07:00
|
|
|
if (!runp->edje->actions)
|
2007-09-08 11:31:56 -07:00
|
|
|
_edje_animators =
|
2008-10-22 04:34:42 -07:00
|
|
|
eina_list_remove(_edje_animators, runp->edje);
|
2003-08-13 04:03:20 -07:00
|
|
|
free(runp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ed->walking_actions = 0;
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
2003-08-25 17:16:49 -07:00
|
|
|
break_prog:
|
|
|
|
_edje_unblock(ed);
|
2003-06-23 19:33:04 -07:00
|
|
|
_edje_thaw(ed);
|
2003-06-26 07:04:31 -07:00
|
|
|
_edje_unref(ed);
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
2010-06-24 09:16:50 -07:00
|
|
|
if (_edje_anim_count > 0) return ECORE_CALLBACK_RENEW;
|
2003-06-23 19:33:04 -07:00
|
|
|
_edje_timer = NULL;
|
2010-06-24 09:16:50 -07:00
|
|
|
return ECORE_CALLBACK_CANCEL;
|
2003-06-23 19:33:04 -07:00
|
|
|
}
|
2003-06-27 21:20:41 -07:00
|
|
|
|
2010-06-24 09:16:50 -07:00
|
|
|
Eina_Bool
|
2003-06-27 21:20:41 -07:00
|
|
|
_edje_pending_timer_cb(void *data)
|
|
|
|
{
|
|
|
|
Edje_Pending_Program *pp;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2003-06-27 21:20:41 -07:00
|
|
|
pp = data;
|
2008-10-22 04:34:42 -07:00
|
|
|
pp->edje->pending_actions = eina_list_remove(pp->edje->pending_actions, pp);
|
2004-03-27 21:26:17 -08:00
|
|
|
_edje_program_run(pp->edje, pp->program, 1, "", "");
|
2003-06-27 21:20:41 -07:00
|
|
|
free(pp);
|
2010-06-24 09:16:50 -07:00
|
|
|
return ECORE_CALLBACK_CANCEL;
|
2003-06-27 21:20:41 -07:00
|
|
|
}
|
2007-04-04 05:51:51 -07:00
|
|
|
|
|
|
|
void
|
|
|
|
_edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp)
|
|
|
|
{
|
2008-03-31 14:38:51 -07:00
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_HOLD,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_hold_signal_cb,
|
2008-03-31 14:38:51 -07:00
|
|
|
ed);
|
2007-04-04 05:51:51 -07:00
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_IN,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_in_signal_cb,
|
2007-04-04 05:51:51 -07:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_OUT,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_out_signal_cb,
|
2007-04-04 05:51:51 -07:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_DOWN,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_down_signal_cb,
|
2007-04-04 05:51:51 -07:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_UP,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_up_signal_cb,
|
2007-04-04 05:51:51 -07:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_MOVE,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_move_signal_cb,
|
2007-04-04 05:51:51 -07:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_WHEEL,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_wheel_signal_cb,
|
2007-04-04 05:51:51 -07:00
|
|
|
ed);
|
|
|
|
evas_object_data_set(obj, "real_part", rp);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2010-02-23 05:39:19 -08:00
|
|
|
_edje_callbacks_del(Evas_Object *obj, Edje *ed)
|
2007-04-04 05:51:51 -07:00
|
|
|
{
|
2010-02-23 05:39:19 -08:00
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_HOLD,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_hold_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_IN,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_in_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_OUT,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_out_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_DOWN,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_down_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_UP,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_up_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_MOVE,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_move_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_MOUSE_WHEEL,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_mouse_wheel_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
2007-04-04 05:51:51 -07:00
|
|
|
evas_object_data_del(obj, "real_part");
|
|
|
|
}
|
2010-02-23 05:39:19 -08:00
|
|
|
|
|
|
|
void
|
|
|
|
_edje_callbacks_focus_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp)
|
|
|
|
{
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_FOCUS_IN,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_focus_in_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_add(obj,
|
|
|
|
EVAS_CALLBACK_FOCUS_OUT,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_focus_out_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_data_set(obj, "real_part", rp);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_edje_callbacks_focus_del(Evas_Object *obj, Edje *ed)
|
|
|
|
{
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_FOCUS_IN,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_focus_in_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
evas_object_event_callback_del_full(obj,
|
|
|
|
EVAS_CALLBACK_FOCUS_OUT,
|
2010-02-23 07:55:04 -08:00
|
|
|
_edje_focus_out_signal_cb,
|
2010-02-23 05:39:19 -08:00
|
|
|
ed);
|
|
|
|
}
|