diff options
Diffstat (limited to 'src/modules/ibar/e_mod_main.c')
-rw-r--r-- | src/modules/ibar/e_mod_main.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 31ab39c6f4..31fbb4ec73 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -1948,8 +1948,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) elm_box_unpack(inst->ibar->o_box, 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; + elm_box_unpack(inst->ibar->o_box, inst->ibar->o_drop); + } inst->ibar->ic_drop_before = ic; if (ic) |