summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-03-31 14:05:47 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-03-31 14:05:47 -0400
commit607975ccc0270ecc1633f3ca57fa36d9477d05ea (patch)
tree1103fa5e9aad44944a5f61166f2d5dedc6249492
parent336721e693f2e7d1e1796ba06345ab1bd6927a04 (diff)
downloadenlightenment-607975ccc0270ecc1633f3ca57fa36d9477d05ea.tar.gz
enforce wl xdg popup stacking relative to parent stacking
-rw-r--r--src/bin/e_comp_wl.c6
-rw-r--r--src/modules/wl_desktop_shell/e_mod_main.c2
2 files changed, 8 insertions, 0 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 58cc5ab4da..af84ef4609 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -554,6 +554,12 @@ _e_comp_wl_evas_cb_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN
Eina_List *l, *ll;
if (e_object_is_del(E_OBJECT(ec))) return;
+ if (e_client_has_xwindow(ec)) return;
+ EINA_LIST_FOREACH(ec->transients, l, sec)
+ {
+ evas_object_layer_set(sec->frame, evas_object_layer_get(ec->frame));
+ evas_object_stack_above(sec->frame, ec->frame);
+ }
if (!ec->comp_data->sub.list) return;
EINA_LIST_FOREACH(ec->comp_data->sub.list, l, sec)
evas_object_layer_set(sec->frame, evas_object_layer_get(ec->frame));
diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c
index d24121b601..7818cd1009 100644
--- a/src/modules/wl_desktop_shell/e_mod_main.c
+++ b/src/modules/wl_desktop_shell/e_mod_main.c
@@ -63,6 +63,8 @@ _e_shell_surface_parent_set(E_Client *ec, struct wl_resource *parent_resource)
{
pc->transients = eina_list_append(pc->transients, ec);
ec->parent = pc;
+ evas_object_layer_set(ec->frame, evas_object_layer_get(pc->frame));
+ evas_object_stack_above(ec->frame, pc->frame);
}
ec->icccm.fetch.transient_for = EINA_TRUE;