summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/constraints.c2
-rw-r--r--src/core/window-private.h2
-rw-r--r--src/core/window.c18
3 files changed, 21 insertions, 1 deletions
diff --git a/src/core/constraints.c b/src/core/constraints.c
index 4ac73ac5..68cf5ae1 100644
--- a/src/core/constraints.c
+++ b/src/core/constraints.c
@@ -437,7 +437,7 @@ setup_constraint_info (ConstraintInfo *info,
*/
if (meta_prefs_get_force_fullscreen() &&
- window->decorated &&
+ (window->decorated || !meta_window_is_client_decorated (window)) &&
meta_rectangle_equal (new, &xinerama_info->rect) &&
window->has_fullscreen_func &&
!window->fullscreen)
diff --git a/src/core/window-private.h b/src/core/window-private.h
index e81fd7ac..882c8901 100644
--- a/src/core/window-private.h
+++ b/src/core/window-private.h
@@ -658,6 +658,8 @@ void meta_window_unset_demands_attention (MetaWindow *window);
void meta_window_update_icon_now (MetaWindow *window);
+gboolean meta_window_is_client_decorated (MetaWindow *window);
+
void meta_window_update_role (MetaWindow *window);
void meta_window_update_net_wm_type (MetaWindow *window);
diff --git a/src/core/window.c b/src/core/window.c
index 75923e29..e7e0fb9e 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -8367,3 +8367,21 @@ meta_window_get_xwindow (MetaWindow *window)
{
return window->xwindow;
}
+
+/**
+ * meta_window_is_client_decorated:
+ *
+ * Check if if the window has decorations drawn by the client.
+ * (window->decorated refers only to whether we should add decorations)
+ */
+gboolean
+meta_window_is_client_decorated (MetaWindow *window)
+{
+ /* Currently the implementation here is hackish -
+ * has_custom_frame_extents() is set if _GTK_FRAME_EXTENTS is set
+ * to any value even 0. GTK+ always sets _GTK_FRAME_EXTENTS for
+ * client-side-decorated window, even if the value is 0 because
+ * the window is maxized and has no invisible borders or shadows.
+ */
+ return window->has_custom_frame_extents;
+}