discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=340e02efb5999ab27d403921cf77e0cdc37ad61d

commit 340e02efb5999ab27d403921cf77e0cdc37ad61d
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Thu Jan 30 11:44:48 2014 -0500

    ignore non-internal override clients when stacking
    
    this fixes the case where clients will briefly escape normal/expected 
stacking on startup if an override is visible
---
 src/bin/e_comp_x.c | 29 +++++++++++++++++++----------
 1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index c30d9c6..bbb697c 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -613,22 +613,31 @@ _e_comp_x_client_stack(E_Client *ec)
    ecore_x_window_shadow_tree_flush();
 
    /* try stacking below */
-   ec2 = e_client_above_get(ec);
-   if (ec2)
+   ec2 = ec;
+   do
      {
-        if (ec2->layer == ec->layer)
-          win = _e_comp_x_client_window_get(ec2);
-     }
+        ec2 = e_client_above_get(ec2);
+        if (ec2 && (e_client_util_is_stacking(ec2) || ((!ec2->override) || 
ec2->internal)))
+          {
+             if (ec2->layer != ec->layer) break;
+             win = _e_comp_x_client_window_get(ec2);
+          }
+     } while (ec2 && (!win));
 
    /* try stacking above */
    if (!win)
      {
-        ec2 = e_client_below_get(ec);
-        if (ec2 && (ec2->layer == ec->layer))
+        ec2 = ec;
+        do
           {
-             win = _e_comp_x_client_window_get(ec2);
-             mode = ECORE_X_WINDOW_STACK_ABOVE;
-          }
+             ec2 = e_client_below_get(ec2);
+             if (ec2 && (e_client_util_is_stacking(ec2) || ((!ec2->override) 
|| ec2->internal)))
+               {
+                  if (ec2->layer != ec->layer) break;
+                  win = _e_comp_x_client_window_get(ec2);
+                  mode = ECORE_X_WINDOW_STACK_ABOVE;
+               }
+          } while (ec2 && (!win));
      }
 
    /* just layer stack */

-- 


Reply via email to