summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-06-19 17:30:37 +0200
committerThomas Thurman <tthurman@gnome.org>2009-07-06 07:51:45 -0400
commitb625ec30d99b2dcf86d8fa78b09f6d04dce3a6e0 (patch)
treea05aa083e8c833a30fc9ecab1fda2443936bc88f
parentf5313268d7efa217f8d31a6bb442460434917703 (diff)
downloadmetacity-b625ec30d99b2dcf86d8fa78b09f6d04dce3a6e0.tar.gz
metacity-b625ec30d99b2dcf86d8fa78b09f6d04dce3a6e0.tar.bz2
Add a switch to disable autofullscreen'ing maximized windows without decorations
-rw-r--r--src/core/constraints.c4
-rw-r--r--src/core/main.c10
-rw-r--r--src/core/prefs.c17
-rw-r--r--src/include/prefs.h6
4 files changed, 35 insertions, 2 deletions
diff --git a/src/core/constraints.c b/src/core/constraints.c
index 800b293..a060d20 100644
--- a/src/core/constraints.c
+++ b/src/core/constraints.c
@@ -27,6 +27,7 @@
#include "constraints.h"
#include "workspace.h"
#include "place.h"
+#include "prefs.h"
#include <stdlib.h>
#include <math.h>
@@ -424,7 +425,8 @@ setup_constraint_info (ConstraintInfo *info,
/* Workaround braindead legacy apps that don't know how to
* fullscreen themselves properly.
*/
- if (meta_rectangle_equal (new, &xinerama_info->rect) &&
+ if (meta_prefs_get_force_fullscreen() &&
+ meta_rectangle_equal (new, &xinerama_info->rect) &&
window->has_fullscreen_func &&
!window->fullscreen)
{
diff --git a/src/core/main.c b/src/core/main.c
index 6c36f10..a36a396 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -233,6 +233,7 @@ typedef struct
gboolean sync;
gboolean composite;
gboolean no_composite;
+ gboolean no_force_fullscreen;
} MetaArguments;
#ifdef HAVE_COMPOSITE_EXTENSIONS
@@ -314,6 +315,12 @@ meta_parse_options (int *argc, char ***argv,
N_("Turn compositing off"),
NULL
},
+ {
+ "no-force-fullscreen", 0, COMPOSITE_OPTS_FLAGS, G_OPTION_ARG_NONE,
+ &my_args.no_force_fullscreen,
+ N_("Don't make fullscreen windows that are maximized and have no decorations"),
+ NULL
+ },
{NULL}
};
GOptionContext *ctx;
@@ -584,6 +591,9 @@ main (int argc, char **argv)
if (meta_args.composite || meta_args.no_composite)
meta_prefs_set_compositing_manager (meta_args.composite);
+ if (meta_args.no_force_fullscreen)
+ meta_prefs_set_force_fullscreen (FALSE);
+
if (!meta_display_open ())
meta_exit (META_EXIT_ERROR);
diff --git a/src/core/prefs.c b/src/core/prefs.c
index 1f4fe41..6e41b3c 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -95,6 +95,7 @@ static char *cursor_theme = NULL;
static int cursor_size = 24;
static gboolean compositing_manager = FALSE;
static gboolean resize_with_right_button = FALSE;
+static gboolean force_fullscreen = TRUE;
static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
static MetaButtonLayout button_layout;
@@ -1751,6 +1752,9 @@ meta_preference_to_string (MetaPreference pref)
case META_PREF_RESIZE_WITH_RIGHT_BUTTON:
return "RESIZE_WITH_RIGHT_BUTTON";
+
+ case META_PREF_FORCE_FULLSCREEN:
+ return "FORCE_FULLSCREEN";
}
return "(unknown)";
@@ -2737,6 +2741,12 @@ meta_prefs_get_mouse_button_menu (void)
return resize_with_right_button ? 2: 3;
}
+gboolean
+meta_prefs_get_force_fullscreen (void)
+{
+ return force_fullscreen;
+}
+
void
meta_prefs_set_compositing_manager (gboolean whether)
{
@@ -2797,3 +2807,10 @@ init_button_layout(void)
};
#endif
+
+void
+meta_prefs_set_force_fullscreen (gboolean whether)
+{
+ force_fullscreen = whether;
+}
+
diff --git a/src/include/prefs.h b/src/include/prefs.h
index 2f1ce8e..a4193ff 100644
--- a/src/include/prefs.h
+++ b/src/include/prefs.h
@@ -59,7 +59,8 @@ typedef enum
META_PREF_CURSOR_THEME,
META_PREF_CURSOR_SIZE,
META_PREF_COMPOSITING_MANAGER,
- META_PREF_RESIZE_WITH_RIGHT_BUTTON
+ META_PREF_RESIZE_WITH_RIGHT_BUTTON,
+ META_PREF_FORCE_FULLSCREEN
} MetaPreference;
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
@@ -114,6 +115,7 @@ void meta_prefs_change_workspace_name (int i,
const char* meta_prefs_get_cursor_theme (void);
int meta_prefs_get_cursor_size (void);
gboolean meta_prefs_get_compositing_manager (void);
+gboolean meta_prefs_get_force_fullscreen (void);
/**
* Sets whether the compositor is turned on.
@@ -122,6 +124,8 @@ gboolean meta_prefs_get_compositing_manager (void);
*/
void meta_prefs_set_compositing_manager (gboolean whether);
+void meta_prefs_set_force_fullscreen (gboolean whether);
+
/* XXX FIXME This should be x-macroed, but isn't yet because it would be
* difficult (or perhaps impossible) to add the suffixes using the current
* system. It needs some more thought, perhaps after the current system