discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=9a82f7bcb0650000e31fc34f299af8c7080313ae

commit 9a82f7bcb0650000e31fc34f299af8c7080313ae
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Feb 11 17:14:28 2015 -0500

    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 ce4746a..776ab3e 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) 

-- 


Reply via email to