File relax-some-constraints-on-CSD-windows-in-sle-classic.patch of Package mutter
Index: src/core/constraints.c
===================================================================
--- src/core/constraints.c.orig 2014-02-20 02:19:50.000000000 +0800
+++ src/core/constraints.c 2014-07-09 19:47:34.479869692 +0800
@@ -1335,6 +1335,12 @@ constrain_to_single_monitor (MetaWindow
}
static gboolean
+constraint_is_sle_classic(void){
+ char * session_mode = (char *) g_getenv ("GNOME_SHELL_SESSION_MODE");
+ return g_strcmp0("sle-classic", session_mode) == 0;
+}
+
+static gboolean
constrain_fully_onscreen (MetaWindow *window,
ConstraintInfo *info,
ConstraintPriority priority,
@@ -1347,10 +1353,15 @@ constrain_fully_onscreen (MetaWindow
* is only meant for normal windows (e.g. we don't want docks to be shoved
* "onscreen" by their own strut).
*/
- if (window->type == META_WINDOW_DESKTOP ||
- window->type == META_WINDOW_DOCK ||
- window->fullscreen ||
- !window->require_fully_onscreen ||
+ if (window->type == META_WINDOW_DESKTOP ||
+ window->type == META_WINDOW_DOCK ||
+ window->fullscreen ||
+ /* in SLE Classic, there is no top bar and to avoid issues like
+ * bnc#883491, remove some constraints on CSD windows, which tends to have
+ * invisible wrapper box. Do the same for "constrain_titlebar_visible".
+ */
+ (constraint_is_sle_classic() && !window->decorated) ||
+ !window->require_fully_onscreen ||
info->is_user_action)
return TRUE;
@@ -1386,10 +1397,11 @@ constrain_titlebar_visible (MetaWindow
* is only meant for normal windows (e.g. we don't want docks to be shoved
* "onscreen" by their own strut).
*/
- if (window->type == META_WINDOW_DESKTOP ||
- window->type == META_WINDOW_DOCK ||
- window->fullscreen ||
- !window->require_titlebar_visible ||
+ if (window->type == META_WINDOW_DESKTOP ||
+ window->type == META_WINDOW_DOCK ||
+ window->fullscreen ||
+ (constraint_is_sle_classic() && !window->decorated) ||
+ !window->require_titlebar_visible ||
unconstrained_user_action)
return TRUE;