From b0bf0379dc21cd24fc1f94f47828a84a6c5c9f1f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 30 Jun 2015 18:38:36 -0400 Subject: [PATCH] copy more attributes from x11 -> wl on xwayland client swap xwayland sets a wrong size on some (eg. menus) clients and wayland cannot provide geometry or stacking information, so ensure that all of this is copied over also remove overrides from focus stack --- src/bin/e_comp_x.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 49ef0a1..8e2a86a 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -1,3 +1,4 @@ +#define EXECUTIVE_MODE_ENABLED #define E_COMP_X #include "e.h" @@ -5351,7 +5352,17 @@ e_comp_x_xwayland_client_setup(E_Client *ec, E_Client *wc) eina_hash_set(clients_win_hash, &win, wc); wc->visible = 1; wc->ignored = 0; + if (ec->override) + e_client_focus_stack_set(eina_list_remove(e_client_focus_stack_get(), wc)); evas_object_show(wc->frame); + evas_object_name_set(wc->frame, evas_object_name_get(ec->frame)); + wc->x = ec->x, wc->y = ec->y; + wc->client.x = ec->client.x, wc->client.y = ec->client.y; + wc->w = ec->w, wc->h = ec->h; + wc->client.x = ec->client.x, wc->client.y = ec->client.y; + wc->layer = ec->layer; + evas_object_layer_set(wc->frame, evas_object_layer_get(ec->frame)); + evas_object_geometry_set(wc->frame, ec->x, ec->y, ec->w, ec->h); e_object_del(E_OBJECT(ec)); e_hints_window_visible_set(wc); _e_comp_x_client_stack(wc); -- 2.7.4