Do NOT set layer again for a client that have 'transient for window' 26/35326/1
authorMinJeong Kim <minjjj.kim@samsung.com>
Thu, 12 Feb 2015 06:02:03 +0000 (15:02 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Thu, 12 Feb 2015 06:02:03 +0000 (15:02 +0900)
Change-Id: I6d0d1d3f75480f7877280bc576bc486193617de3
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
configure.ac
src/bin/e_hints.c

index 6cda7c8658db6b02f1b4d94bc16bda720f6dffa8..71365bc3ea10df2268c620a45ebb6a96bc16fd74 100644 (file)
@@ -603,8 +603,8 @@ PKG_CHECK_MODULES(E_OPEN, [
 ])
 
 e_libs="$E_LIBS $LIBINTL $fnmatch_libs $execinfo_libs"
-e_cflags="-DUSE_E_CONFIG_H $E_CFLAGS -D_F_ZONE_WINDOW_ROTATION_ -D_F_E_VIRTUAL_KEYBOARD_TYPE_ -D_F_E_CLIENT_NEW_CLIENT_POST_HOOK_ -D_F_E_COMP_OBJECT_INTERCEPT_HOOK_"
-e_configflags="-DUSE_E_CONFIG_H -D_F_ZONE_WINDOW_ROTATION_ -D_F_E_VIRTUAL_KEYBOARD_TYPE_ -D_F_E_CLIENT_NEW_CLIENT_POST_HOOK_ -D_F_E_COMP_OBJECT_INTERCEPT_HOOK_"
+e_cflags="-DUSE_E_CONFIG_H $E_CFLAGS -D_F_ZONE_WINDOW_ROTATION_ -D_F_E_VIRTUAL_KEYBOARD_TYPE_ -D_F_E_CLIENT_NEW_CLIENT_POST_HOOK_ -D_F_E_COMP_OBJECT_INTERCEPT_HOOK_ -D_F_TRANSIENT_FOR_PATCH"
+e_configflags="-DUSE_E_CONFIG_H -D_F_ZONE_WINDOW_ROTATION_ -D_F_E_VIRTUAL_KEYBOARD_TYPE_ -D_F_E_CLIENT_NEW_CLIENT_POST_HOOK_ -D_F_E_COMP_OBJECT_INTERCEPT_HOOK_ -D_F_TRANSIENT_FOR_PATCH"
 
 AC_SUBST([e_libs])
 AC_SUBST([e_cflags])
index 4b02b71d8a11ec1fd15a5ba779f67ea8c485d80f..95ec859910a6ecddbf140ba8acf5862c689b2c34 100644 (file)
@@ -417,6 +417,35 @@ e_hints_window_init(E_Client *ec)
           ec->icccm.state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
      }
 
+#ifdef _F_TRANSIENT_FOR_PATCH
+   if ((!ec->parent) ||
+       (!e_config->transient.layer))
+     {
+        if ((rem) && (rem->apply & E_REMEMBER_APPLY_LAYER))
+          {
+             ec->layer = rem->prop.layer;
+             evas_object_layer_set(ec->frame, ec->layer);
+          }
+        else
+          {
+             if (!ec->lock_client_stacking)
+               {
+                  if (ec->netwm.type == E_WINDOW_TYPE_DESKTOP)
+                    evas_object_layer_set(ec->frame, E_LAYER_CLIENT_DESKTOP);
+                  else if (ec->netwm.state.stacking == E_STACKING_BELOW)
+                    evas_object_layer_set(ec->frame, E_LAYER_CLIENT_BELOW);
+                  else if (ec->netwm.state.stacking == E_STACKING_ABOVE)
+                    evas_object_layer_set(ec->frame, E_LAYER_CLIENT_ABOVE);
+                  else if (ec->netwm.type == E_WINDOW_TYPE_DOCK)
+                    evas_object_layer_set(ec->frame, E_LAYER_CLIENT_ABOVE);
+                  else if (!evas_object_layer_get(ec->frame)) //impossible?
+                    evas_object_layer_set(ec->frame, E_LAYER_CLIENT_NORMAL);
+               }
+             else
+               evas_object_raise(ec->frame);
+          }
+     }
+#else
    if ((rem) && (rem->apply & E_REMEMBER_APPLY_LAYER))
      {
         ec->layer = rem->prop.layer;
@@ -443,6 +472,7 @@ e_hints_window_init(E_Client *ec)
 
    if ((ec->parent) && (e_config->transient.layer))
      evas_object_layer_set(ec->frame, ec->parent->layer);
+#endif
 
 #if 0
    /* Ignore this, E has incompatible desktop setup */