never use new clients for stacking part 2: the secret of the stacking

a client with this flag set here is unreliable to use as a stacking
reference since it has yet to be stacked and can be located anywhere
in the window stack.

fixes internal window stacking on startup
This commit is contained in:
Mike Blumenkrantz 2015-07-15 16:22:02 -04:00
parent 953b80f8ef
commit 73c03565b3
1 changed files with 4 additions and 2 deletions

View File

@ -685,7 +685,8 @@ _e_comp_x_client_stack(E_Client *ec)
do
{
ec2 = e_client_above_get(ec2);
if (ec2 && e_client_has_xwindow(ec2) && (e_client_is_stacking(ec2) || ((!ec2->override) || ec2->internal)))
if (ec2 && e_client_has_xwindow(ec2) && (!ec2->new_client) &&
(e_client_is_stacking(ec2) || ((!ec2->override) || ec2->internal)))
{
if (ec2->layer != ec->layer) break;
if (_e_comp_x_client_data_get(ec2)->need_reparent && (!_e_comp_x_client_data_get(ec2)->reparented)) continue;
@ -701,7 +702,8 @@ _e_comp_x_client_stack(E_Client *ec)
do
{
ec2 = e_client_below_get(ec2);
if (ec2 && e_client_has_xwindow(ec2) && (e_client_is_stacking(ec2) || ((!ec2->override) || ec2->internal)))
if (ec2 && e_client_has_xwindow(ec2) && (!ec2->new_client) &&
(e_client_is_stacking(ec2) || ((!ec2->override) || ec2->internal)))
{
if (ec2->layer != ec->layer) break;
if (_e_comp_x_client_data_get(ec2)->need_reparent && (!_e_comp_x_client_data_get(ec2)->reparented)) continue;