Do NOT set layer again for a client that have 'transient for window'
authorMinJeong Kim <minjjj.kim@samsung.com>
Thu, 12 Feb 2015 06:02:03 +0000 (15:02 +0900)
committerBoram Park <boram1288.park@samsung.com>
Wed, 18 Mar 2015 04:03:08 +0000 (13:03 +0900)
Change-Id: I6d0d1d3f75480f7877280bc576bc486193617de3
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
configure.ac
src/bin/e_hints.c

index 43ae9838978f5343b748b84001f5eff53e68e814..9bcfd804681bf487599aa4ef1525c90531a8d71a 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 c50878421064cb46dc9b2d1af5a75bcc7d8a7ae8..8481f8beac9277c6b64b77307c106bd5b35e4fe4 100644 (file)
@@ -425,6 +425,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;
@@ -451,6 +480,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 */