Only send events for the correct pager desks (--FIXME's).
SVN revision: 27168
This commit is contained in:
parent
aa2d9dcbc4
commit
cb5d8a9cd8
|
@ -56,6 +56,7 @@ struct _Pager
|
||||||
unsigned char dragging : 1;
|
unsigned char dragging : 1;
|
||||||
unsigned char just_dragged : 1;
|
unsigned char just_dragged : 1;
|
||||||
Evas_Coord dnd_x, dnd_y;
|
Evas_Coord dnd_x, dnd_y;
|
||||||
|
Pager_Desk *active_drop_pd;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Pager_Desk
|
struct _Pager_Desk
|
||||||
|
@ -1527,16 +1528,15 @@ _pager_update_drop_position(Instance *inst, Evas_Coord x, Evas_Coord y)
|
||||||
evas_object_geometry_get(inst->pager->o_table, &xx, &yy, NULL, NULL);
|
evas_object_geometry_get(inst->pager->o_table, &xx, &yy, NULL, NULL);
|
||||||
e_box_align_pixel_offset_get(inst->gcc->o_box, &ox, &oy);
|
e_box_align_pixel_offset_get(inst->gcc->o_box, &ox, &oy);
|
||||||
pd = _pager_desk_at_coord(inst->pager, x + xx + ox, y + yy + oy);
|
pd = _pager_desk_at_coord(inst->pager, x + xx + ox, y + yy + oy);
|
||||||
/* FIXME: keep track which one its over so we only emit drag in/out
|
|
||||||
* when it actually goes form one desk to another */
|
|
||||||
for (l = inst->pager->desks; l; l = l->next)
|
for (l = inst->pager->desks; l; l = l->next)
|
||||||
{
|
{
|
||||||
pd2 = l->data;
|
pd2 = l->data;
|
||||||
if (pd == pd2)
|
if (pd == pd2)
|
||||||
edje_object_signal_emit(pd2->o_desk, "e,action,drag,in", "e");
|
edje_object_signal_emit(pd2->o_desk, "e,action,drag,in", "e");
|
||||||
else
|
else if (pd2 == inst->pager->active_drop_pd)
|
||||||
edje_object_signal_emit(pd2->o_desk, "e,action,drag,out", "e");
|
edje_object_signal_emit(pd2->o_desk, "e,action,drag,out", "e");
|
||||||
}
|
}
|
||||||
|
inst->pager->active_drop_pd = pd;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1573,14 +1573,17 @@ _pager_inst_cb_leave(void *data, const char *type, void *event_info)
|
||||||
|
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
inst = data;
|
inst = data;
|
||||||
/* FIXME: keep track which one its over so we only emit drag in/out
|
|
||||||
* when it actually goes form one desk to another */
|
for (l = inst->pager->desks; l && inst->pager->active_drop_pd; l = l->next)
|
||||||
for (l = inst->pager->desks; l; l = l->next)
|
|
||||||
{
|
{
|
||||||
Pager_Desk *pd;
|
Pager_Desk *pd;
|
||||||
|
|
||||||
pd = l->data;
|
pd = l->data;
|
||||||
edje_object_signal_emit(pd->o_desk, "e,action,drag,out", "e");
|
if (pd == inst->pager->active_drop_pd)
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(pd->o_desk, "e,action,drag,out", "e");
|
||||||
|
inst->pager->active_drop_pd = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
e_gadcon_client_autoscroll_cb_set(inst->gcc, NULL, NULL);
|
e_gadcon_client_autoscroll_cb_set(inst->gcc, NULL, NULL);
|
||||||
|
@ -1646,12 +1649,15 @@ _pager_inst_cb_drop(void *data, const char *type, void *event_info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* FIXME: keep track which one its over so we only emit drag in/out
|
|
||||||
* when it actually goes form one desk to another */
|
for (l = inst->pager->desks; l && inst->pager->active_drop_pd; l = l->next)
|
||||||
for (l = inst->pager->desks; l; l = l->next)
|
|
||||||
{
|
{
|
||||||
pd = l->data;
|
pd = l->data;
|
||||||
edje_object_signal_emit(pd->o_desk, "e,action,drag,out", "e");
|
if (pd == inst->pager->active_drop_pd)
|
||||||
|
{
|
||||||
|
edje_object_signal_emit(pd->o_desk, "e,action,drag,out", "e");
|
||||||
|
inst->pager->active_drop_pd = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
e_gadcon_client_autoscroll_cb_set(inst->gcc, NULL, NULL);
|
e_gadcon_client_autoscroll_cb_set(inst->gcc, NULL, NULL);
|
||||||
|
|
Loading…
Reference in New Issue