fix ibar drop calc to not unexpectedly trigger epileptic seizures in users

when attempting to drop on an icon, the drop area geometry was never included
in the calc, resulting in the drop changing between positions on every frame
This commit is contained in:
Mike Blumenkrantz 2015-03-11 16:00:58 -04:00
parent 6c7cbda881
commit b4180e87fa
1 changed files with 11 additions and 1 deletions

View File

@ -1939,8 +1939,18 @@ _ibar_drop_position_update(Instance *inst, Evas_Coord x, Evas_Coord y)
inst->ibar->dnd_x = x;
inst->ibar->dnd_y = y;
if (inst->ibar->o_drop) e_box_unpack(inst->ibar->o_drop);
ic = _ibar_icon_at_coord(inst->ibar, x, y);
if (ic && (ic == inst->ibar->ic_drop_before)) return;
if (inst->ibar->o_drop)
{
int ox, oy, ow, oh;
evas_object_geometry_get(inst->ibar->o_drop, &ox, &oy, &ow, &oh);
/* if cursor is still inside last drop area, do nothing */
if (E_INSIDE(x, y, ox, oy, ow, oh)) return;
e_box_unpack(inst->ibar->o_drop);
}
inst->ibar->ic_drop_before = ic;
if (ic)