summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/prefs.c32
-rw-r--r--src/core/window.c13
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[] =
&center_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;