Restore the original tile state when a drag is cancelled

If a drag operation is cancelled, the dragged window should be
restored to its previous state/position. Implement this for tiled
states.

https://bugzilla.gnome.org/show_bug.cgi?id=639988
This commit is contained in:
Florian Müllner 2011-01-19 17:00:46 +01:00
parent bca610ed50
commit 2eb8b09b1a

View File

@ -1555,15 +1555,20 @@ process_mouse_move_resize_grab (MetaDisplay *display,
if (window->tile_mode != META_TILE_NONE) if (window->tile_mode != META_TILE_NONE)
meta_screen_tile_preview_hide (screen); meta_screen_tile_preview_hide (screen);
/* Restore the original tile mode */
window->tile_mode = display->grab_tile_mode;
/* End move or resize and restore to original state. If the /* End move or resize and restore to original state. If the
* window was a maximized window that had been "shaken loose" we * window was a maximized window that had been "shaken loose" we
* need to remaximize it. In normal cases, we need to do a * need to remaximize it. In normal cases, we need to do a
* moveresize now to get the position back to the original. * moveresize now to get the position back to the original.
*/ */
if (window->shaken_loose) if (window->shaken_loose || window->tile_mode == META_TILE_MAXIMIZED)
meta_window_maximize (window, meta_window_maximize (window,
META_MAXIMIZE_HORIZONTAL | META_MAXIMIZE_HORIZONTAL |
META_MAXIMIZE_VERTICAL); META_MAXIMIZE_VERTICAL);
else if (window->tile_mode != META_TILE_NONE)
meta_window_tile (window);
else else
meta_window_move_resize (display->grab_window, meta_window_move_resize (display->grab_window,
TRUE, TRUE,