From 9a82f7bcb0650000e31fc34f299af8c7080313ae Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 11 Feb 2015 17:14:28 -0500 Subject: [PATCH] reapply accurate ec->placed value for wl clients during surface commit configure fixes client placement when client has not been placed prior to first commit --- src/bin/e_comp_wl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index ce4746a45..776ab3e88 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -1490,16 +1490,21 @@ _e_comp_wl_subsurface_commit_from_cache(E_Client *ec) if (sdata->cached.new_attach) { int x, y, nw, nh; + Eina_Bool placed = EINA_TRUE; e_pixmap_size_get(ec->pixmap, &nw, &nh); if (ec->changes.pos) e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &x, &y); + else if (ec->new_client) + placed = ec->placed; else x = ec->client.x, y = ec->client.y; /* if the client has a shell configure, call it */ if ((cdata->shell.surface) && (cdata->shell.configure)) cdata->shell.configure(cdata->shell.surface, x, y, nw, nh); + if (ec->new_client) + ec->placed = placed; } if (!cdata->mapped) @@ -2556,10 +2561,13 @@ e_comp_wl_surface_commit(E_Client *ec) if (ec->comp_data->pending.new_attach) { int x, y, nw, nh; + Eina_Bool placed = EINA_TRUE;; e_pixmap_size_get(ec->pixmap, &nw, &nh); if (ec->changes.pos) e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &x, &y); + else if (ec->new_client) + placed = ec->placed; else x = ec->client.x, y = ec->client.y; @@ -2568,6 +2576,8 @@ e_comp_wl_surface_commit(E_Client *ec) ec->comp_data->shell.configure(ec->comp_data->shell.surface, x, y, nw, nh); else e_client_util_move_resize_without_frame(ec, x, y, nw, nh); + if (ec->new_client) + ec->placed = placed; } if (!ec->comp_data->mapped)