force xwindow stacking to obey nocomp policy and stack below current nocomp

fix T2277
This commit is contained in:
Mike Blumenkrantz 2015-05-18 13:19:33 -04:00
parent 205d8b0b74
commit 9b420c8d69
1 changed files with 14 additions and 9 deletions

View File

@ -619,17 +619,22 @@ _e_comp_x_client_stack(E_Client *ec)
ecore_x_window_shadow_tree_flush();
/* try stacking below */
ec2 = ec;
do
if (e_comp->nocomp_ec && (ec != e_comp->nocomp_ec))
win = _e_comp_x_client_window_get(e_comp->nocomp_ec);
else
{
ec2 = e_client_above_get(ec2);
if (ec2 && (e_client_is_stacking(ec2) || ((!ec2->override) || ec2->internal)))
ec2 = ec;
do
{
if (ec2->layer != ec->layer) break;
if (ec2->comp_data->need_reparent && (!ec2->comp_data->reparented)) continue;
win = _e_comp_x_client_window_get(ec2);
}
} while (ec2 && (!win));
ec2 = e_client_above_get(ec2);
if (ec2 && (e_client_is_stacking(ec2) || ((!ec2->override) || ec2->internal)))
{
if (ec2->layer != ec->layer) break;
if (ec2->comp_data->need_reparent && (!ec2->comp_data->reparented)) continue;
win = _e_comp_x_client_window_get(ec2);
}
} while (ec2 && (!win));
}
/* try stacking above */
if (!win)