summaryrefslogtreecommitdiff
path: root/src/core/screen.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2010-09-24 15:35:00 -0400
committerRay Strode <rstrode@redhat.com>2010-12-02 17:11:11 -0500
commit07c047190251e8e335119de8437ec09455cf3d58 (patch)
tree2547d561b30fc747642adb1a023f50a201f7885e /src/core/screen.c
parent5f4ee1b6e726660915d886c22a8c692dafd15c59 (diff)
downloadmutter-07c047190251e8e335119de8437ec09455cf3d58.tar.gz
tiling: Add new "maximized" tile
In addition to the existing side-by-side tiling modes, this commit adds a new "maximize" tiling mode. It allows the user to maximize their windows (in other words, tile with the edge panels) by dragging their window to the top edge of the monitor. https://bugzilla.gnome.org/show_bug.cgi?id=630548
Diffstat (limited to 'src/core/screen.c')
-rw-r--r--src/core/screen.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/core/screen.c b/src/core/screen.c
index c3a4f03c3..1dbd982fa 100644
--- a/src/core/screen.c
+++ b/src/core/screen.c
@@ -1758,6 +1758,7 @@ meta_screen_tile_preview_update_timeout (gpointer data)
MetaScreen *screen = data;
MetaWindow *window = screen->display->grab_window;
gboolean composited = screen->display->compositor != NULL;
+ gboolean needs_preview = FALSE;
screen->tile_preview_timeout_id = 0;
@@ -1775,9 +1776,28 @@ meta_screen_tile_preview_update_timeout (gpointer data)
create_serial);
}
- if (window
- && !META_WINDOW_TILED_SIDE_BY_SIDE (window)
- && window->tile_mode != META_TILE_NONE)
+ if (window)
+ {
+ switch (window->tile_mode)
+ {
+ case META_TILE_LEFT:
+ case META_TILE_RIGHT:
+ if (!META_WINDOW_TILED_SIDE_BY_SIDE (window))
+ needs_preview = TRUE;
+ break;
+
+ case META_TILE_MAXIMIZED:
+ if (!META_WINDOW_MAXIMIZED (window))
+ needs_preview = TRUE;
+ break;
+
+ default:
+ needs_preview = FALSE;
+ break;
+ }
+ }
+
+ if (needs_preview)
{
MetaRectangle tile_rect;