diff --git a/src/core/prefs.c b/src/core/prefs.c index 316d122d0..7e7c250c5 100644 --- a/src/core/prefs.c +++ b/src/core/prefs.c @@ -99,6 +99,7 @@ static gboolean resize_with_right_button = FALSE; static gboolean edge_tiling = FALSE; static gboolean force_fullscreen = TRUE; static gboolean ignore_request_hide_titlebar = FALSE; +static gboolean auto_maximize = TRUE; static GDesktopVisualBellType visual_bell_type = G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH; static MetaButtonLayout button_layout; @@ -368,6 +369,13 @@ static MetaBoolPreference preferences_bool[] = }, &no_tab_popup, }, + { + { "auto-maximize", + SCHEMA_MUTTER, + META_PREF_AUTO_MAXIMIZE, + }, + &auto_maximize, + }, { { NULL, 0, 0 }, NULL }, }; @@ -1666,6 +1674,9 @@ meta_preference_to_string (MetaPreference pref) case META_PREF_DYNAMIC_WORKSPACES: return "DYNAMIC_WORKSPACES"; + + case META_PREF_AUTO_MAXIMIZE: + return "AUTO_MAXIMIZE"; } return "(unknown)"; @@ -2091,6 +2102,12 @@ meta_prefs_get_edge_tiling () return edge_tiling; } +gboolean +meta_prefs_get_auto_maximize (void) +{ + return auto_maximize; +} + MetaKeyBindingAction meta_prefs_get_keybinding_action (const char *name) { diff --git a/src/core/window.c b/src/core/window.c index 059d5b048..e891bd5e1 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -3020,7 +3020,7 @@ meta_window_show (MetaWindow *window) if (!window->placed) { - if (window->showing_for_first_time && window->has_maximize_func) + if (meta_prefs_get_auto_maximize() && window->showing_for_first_time && window->has_maximize_func) { MetaRectangle work_area; meta_window_get_work_area_for_monitor (window, window->monitor->number, &work_area); diff --git a/src/meta/prefs.h b/src/meta/prefs.h index 6fe31a360..99a9be7ae 100644 --- a/src/meta/prefs.h +++ b/src/meta/prefs.h @@ -67,7 +67,8 @@ typedef enum META_PREF_FORCE_FULLSCREEN, META_PREF_WORKSPACES_ONLY_ON_PRIMARY, META_PREF_NO_TAB_POPUP, - META_PREF_DRAGGABLE_BORDER_WIDTH + META_PREF_DRAGGABLE_BORDER_WIDTH, + META_PREF_AUTO_MAXIMIZE } MetaPreference; typedef void (* MetaPrefsChangedFunc) (MetaPreference pref, @@ -105,6 +106,7 @@ gboolean meta_prefs_get_focus_change_on_pointer_rest (void); gboolean meta_prefs_get_gnome_accessibility (void); gboolean meta_prefs_get_gnome_animations (void); gboolean meta_prefs_get_edge_tiling (void); +gboolean meta_prefs_get_auto_maximize (void); void meta_prefs_get_button_layout (MetaButtonLayout *button_layout); diff --git a/src/org.gnome.mutter.gschema.xml.in b/src/org.gnome.mutter.gschema.xml.in index a2b9eec0b..e921d1e75 100644 --- a/src/org.gnome.mutter.gschema.xml.in +++ b/src/org.gnome.mutter.gschema.xml.in @@ -84,6 +84,15 @@ + + true + <_summary>Auto maximize nearly monitor sized windows + <_description> + If enabled, monitor nearly monitor sized windows automatically get + maximized when mapped. + + +