From e92442921e90491beebd9fd2fb4190b646cfa7a1 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Wed, 27 Jul 2011 23:21:23 +0000 Subject: [PATCH] e-modules/comp-scale: fix weird sliding when initiating pager with prev/next action SVN revision: 61828 --- src/e_mod_pager.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/e_mod_pager.c b/src/e_mod_pager.c index 5a3ab50..7a871e0 100644 --- a/src/e_mod_pager.c +++ b/src/e_mod_pager.c @@ -69,6 +69,7 @@ static Item *background = NULL; static Item *selected_item = NULL; static E_Desk *previous_desk = NULL; static E_Desk *current_desk = NULL; +static E_Desk *initial_desk = NULL; static int min_x, min_y, max_x, max_y; static double desk_w, desk_h; static double zoom = 0.0; @@ -87,8 +88,8 @@ _pager_place_desks(double scale) { for (x = 0; x < zone->desk_x_count; x++) { - double x1 = (x - current_desk->x) * zone->w; - double y1 = (y - current_desk->y) * zone->h; + double x1 = (x - initial_desk->x) * zone->w; + double y1 = (y - initial_desk->y) * zone->h; double x2 = min_x + x * desk_w; double y2 = min_y + y * desk_h; double cur_x = (scale * x1) + (1.0 - scale) * x2; @@ -233,6 +234,7 @@ _pager_out() it->bd_y = it->bd->y + (it->desk->y - current_desk->y) * zone->h; } + initial_desk = current_desk; scale_state = EINA_FALSE; } @@ -999,7 +1001,7 @@ _pager_run(E_Manager *man) if (!zone) return EINA_FALSE; - current_desk = e_desk_current_get(zone); + initial_desk = current_desk = e_desk_current_get(zone); if (!current_desk) return EINA_FALSE;