diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/prefs.c | 32 | ||||
-rw-r--r-- | src/core/window.c | 13 |
2 files changed, 31 insertions, 14 deletions
diff --git a/src/core/prefs.c b/src/core/prefs.c index 61c957ad..021ad874 100644 --- a/src/core/prefs.c +++ b/src/core/prefs.c @@ -120,7 +120,8 @@ static gboolean resize_with_right_button = FALSE; static gboolean show_tab_border = FALSE; static gboolean center_new_windows = FALSE; static gboolean force_fullscreen = TRUE; -static gboolean side_by_side_tiling = FALSE; +static gboolean allow_tiling = FALSE; +static gboolean allow_top_tiling = TRUE; static GList *show_desktop_skip_list = NULL; static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH; @@ -422,10 +423,16 @@ static MetaBoolPreference preferences_bool[] = ¢er_new_windows, FALSE, }, - { "side-by-side-tiling", + { "allow-tiling", KEY_GENERAL_SCHEMA, - META_PREF_SIDE_BY_SIDE_TILING, - &side_by_side_tiling, + META_PREF_ALLOW_TILING, + &allow_tiling, + FALSE, + }, + { "allow-top-tiling", + KEY_GENERAL_SCHEMA, + META_PREF_ALLOW_TOP_TILING, + &allow_top_tiling, FALSE, }, { NULL, NULL, 0, NULL, FALSE }, @@ -1618,8 +1625,11 @@ meta_preference_to_string (MetaPreference pref) case META_PREF_FORCE_FULLSCREEN: return "FORCE_FULLSCREEN"; - case META_PREF_SIDE_BY_SIDE_TILING: - return "SIDE_BY_SIDE_TILING"; + case META_PREF_ALLOW_TILING: + return "ALLOW_TILING"; + + case META_PREF_ALLOW_TOP_TILING: + return "ALLOW_TOP_TILING"; case META_PREF_PLACEMENT_MODE: return "PLACEMENT_MODE"; @@ -2288,9 +2298,15 @@ meta_prefs_get_center_new_windows (void) } gboolean -meta_prefs_get_side_by_side_tiling () +meta_prefs_get_allow_tiling () +{ + return allow_tiling; +} + +gboolean +meta_prefs_get_allow_top_tiling () { - return side_by_side_tiling; + return allow_top_tiling; } guint diff --git a/src/core/window.c b/src/core/window.c index bdc9a712..530bc407 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -7033,7 +7033,7 @@ update_move (MetaWindow *window, window->tile_mode = META_TILE_NONE; window->tile_monitor_number = -1; } - else if (meta_prefs_get_side_by_side_tiling () && + else if (meta_prefs_get_allow_tiling () && !META_WINDOW_MAXIMIZED (window) && !META_WINDOW_TILED (window)) { @@ -7061,16 +7061,16 @@ update_move (MetaWindow *window, /* Check if the cursor is in a position which triggers tiling * and set tile_mode accordingly. */ - MetaTileMode tile_mode = window->tile_mode; + MetaTileMode old_tile_mode = window->tile_mode; window->tile_mode = calculate_tiling_mode(x, y, window, monitor, work_area, shake_threshold); - - + + if (window->tile_mode != META_TILE_NONE) window->tile_monitor_number = monitor->number; /* Reset resized flag when changing tile mode */ - if (tile_mode != window->tile_mode) + if (old_tile_mode != window->tile_mode) window->tile_resized = FALSE; } @@ -7265,7 +7265,8 @@ static MetaTileMode calculate_tiling_mode(int x, return META_TILE_RIGHT; } else if (meta_window_can_tile_maximized (window) && - y >= monitor->rect.y && y <= work_area.y) + y >= monitor->rect.y && y <= work_area.y && + meta_prefs_get_allow_top_tiling ()) return META_TILE_MAXIMIZED; else return META_TILE_NONE; |