diff --git a/src/modules/winlist/e_winlist.c b/src/modules/winlist/e_winlist.c index 7dfd945b4..b613fafee 100644 --- a/src/modules/winlist/e_winlist.c +++ b/src/modules/winlist/e_winlist.c @@ -336,7 +336,22 @@ e_winlist_hide(void) if ((e_config->focus_policy != E_FOCUS_CLICK) || (e_config->winlist_warp_at_end) || (e_config->winlist_warp_while_selecting)) - ecore_x_pointer_warp(bd->zone->container->win, _warp_to_x, _warp_to_y); + { + _warp_to_x = bd->x + (bd->w / 2); + if (_warp_to_x < (bd->zone->x + 1)) + _warp_to_x = bd->zone->x + + ((bd->x + bd->w - bd->zone->x) / 2); + else if (_warp_to_x >= (bd->zone->x + bd->zone->w - 1)) + _warp_to_x = (bd->zone->x + bd->zone->w + bd->x) / 2; + + _warp_to_y = bd->y + (bd->h / 2); + if (_warp_to_y < (bd->zone->y + 1)) + _warp_to_y = bd->zone->y + + ((bd->y + bd->h - bd->zone->y) / 2); + else if (_warp_to_y >= (bd->zone->y + bd->zone->h - 1)) + _warp_to_y = (bd->zone->y + bd->zone->h + bd->y) / 2; + ecore_x_pointer_warp(bd->zone->container->win, _warp_to_x, _warp_to_y); + } e_object_unref(E_OBJECT(bd)); }