This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository enlightenment.
View the commit online.
commit dc59a8154b5047b27f745bd8dd31b65947c3d647
Author: Carsten Haitzler <[email protected]>
AuthorDate: Wed Jul 22 12:35:19 2026 +0100
comp - fix stacking of remembered windows on the x side for events
@fix
---
src/bin/e_comp_x.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 0b841e597..3a689aac2 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -861,6 +861,7 @@ _e_comp_x_post_client_idler_cb(void *d EINA_UNUSED)
}
if (e_comp_x->restack && (!e_comp->new_clients))
{
+ _e_comp_x_client_stack_sync();
e_hints_client_stacking_set();
e_comp_x->restack = 0;
}
@@ -949,6 +950,46 @@ _e_comp_x_client_stack(E_Client *ec)
evas_object_stack_below(ec2->frame, ec->frame);
}
+static void
+_e_comp_x_client_stack_sync(void)
+{
+ E_Client *ec;
+ Ecore_X_Window win = 0;
+ unsigned int layer = E_LAYER_COUNT;
+
+ ecore_x_window_shadow_tree_flush();
+
+ for (ec = e_client_top_get(); ec; ec = e_client_below_get(ec))
+ {
+ E_Comp_X_Client_Data *cd;
+ unsigned int l;
+
+ if (!e_client_has_xwindow(ec)) continue;
+ if ((ec->override) && (!ec->internal)) continue;
+ if (e_client_is_stacking(ec)) continue;
+ if (!_e_comp_x_client_data_get(ec)) continue;
+
+ cd = _e_comp_x_client_data_get(ec);
+ if (cd->unredirected_single) continue;
+ if ((cd->need_reparent) && (!cd->reparented)) continue;
+
+ l = e_comp_canvas_layer_map(ec->layer);
+ if (l != layer)
+ {
+ layer = l;
+ win = e_comp->layers[layer].win;
+ }
+ if (!win) continue;
+
+ ecore_x_window_configure(_e_comp_x_client_window_get(ec),
+ ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING |
+ ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE,
+ 0, 0, 0, 0, 0, win,
+ ECORE_X_WINDOW_STACK_BELOW);
+ win = _e_comp_x_client_window_get(ec);
+ }
+}
+
static E_Client *
_e_comp_x_client_new(Ecore_X_Window win, Eina_Bool first)
{
@@ -3446,6 +3487,7 @@ _e_comp_x_hook_client_eval_end(void *d EINA_UNUSED, E_Client *ec)
E_COMP_X_PIXMAP_CHECK;
if (e_comp_x->restack && (!e_comp->new_clients))
{
+ _e_comp_x_client_stack_sync();
e_hints_client_stacking_set();
e_comp_x->restack = 0;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.