Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 30641
Collapse All | Expand All

(-)libwnck-trunk.clean/libwnck/pager.c (-3 / +42 lines)
Lines 1149-1162 Link Here
1149
1149
1150
	  if (space)
1150
	  if (space)
1151
            {
1151
            {
1152
              wnck_workspace_activate (space);
1152
#define MOVE_VIEWPORT_IN_SCREEN_SIZE_STEPS 1
1153
#if MOVE_VIEWPORT_IN_SCREEN_SIZE_STEPS
1154
              int screen_width, screen_height;
1155
#else /* MOVE_VIEWPORT_CENTERED_ON_PONTER */
1156
              int screen_width, screen_height, max_x, max_y;
1157
#endif
1158
1159
              /* Don't switch the desktop if we're already there */
1160
              if (space != wnck_screen_get_active_workspace (pager->priv->screen))
1161
                wnck_workspace_activate (space);
1153
1162
1154
              /* EWMH only lets us move the viewport for the active workspace,
1163
              /* EWMH only lets us move the viewport for the active workspace,
1155
               * but we just go ahead and hackily assume that the activate
1164
               * but we just go ahead and hackily assume that the activate
1156
               * just above takes effect prior to moving the viewport
1165
               * just above takes effect prior to moving the viewport
1157
               */
1166
               */
1158
              wnck_screen_move_viewport (pager->priv->screen,
1167
              screen_width = wnck_screen_get_width (pager->priv->screen);
1159
                                         viewport_x, viewport_y);
1168
              screen_height = wnck_screen_get_height (pager->priv->screen);
1169
#if MOVE_VIEWPORT_IN_SCREEN_SIZE_STEPS
1170
              /* Transform the pointer location to viewport origin, assuming
1171
               * that we want the nearest "regular" viewport containing the
1172
               * pointer.
1173
               */
1174
              viewport_x = (viewport_x / screen_width) * screen_width;
1175
              viewport_y = (viewport_y / screen_height) * screen_height;
1176
#else /* MOVE_VIEWPORT_CENTERED_ON_PONTER */
1177
              /* Transform the pointer location to viewport origin, assuming
1178
               * that we want the pointer centered in the viewport.
1179
               * Keep the viewport entirely on the desktop.
1180
               */
1181
              max_x = wnck_workspace_get_width (space) - screen_width;
1182
              max_y = wnck_workspace_get_height (space) - screen_height;
1183
              viewport_x -= screen_width / 2;
1184
              if (viewport_x < 0)
1185
                viewport_x = 0;
1186
              else if (viewport_x > max_x)
1187
                viewport_x = max_x;
1188
              viewport_y -= screen_height / 2;
1189
              if (viewport_y < 0)
1190
                viewport_y = 0;
1191
              else if (viewport_y > max_y)
1192
                viewport_y = max_y;
1193
#endif
1194
              
1195
              if (wnck_workspace_get_viewport_x(space) != viewport_x ||
1196
                  wnck_workspace_get_viewport_y(space) != viewport_y)
1197
                wnck_screen_move_viewport (pager->priv->screen,
1198
                                           viewport_x, viewport_y);
1160
              
1199
              
1161
              if (pager->priv->drag_window)
1200
              if (pager->priv->drag_window)
1162
                wnck_window_activate (pager->priv->drag_window);
1201
                wnck_window_activate (pager->priv->drag_window);

Return to bug 30641