discomfitor pushed a commit to branch master.

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

commit d17fe0614e1d8cc9dcd72ee0a2bf354f9c6376bf
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Mar 10 15:57:15 2017 -0500

    check changes.pos during client maximize/fullscreen and adjust window coords
    
    using these coords when the changes.pos flag is set should result in more 
accurate
    results for positioning when removing the state
---
 src/bin/e_client.c | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index e87c109..b9c4764 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4063,14 +4063,22 @@ e_client_maximize(E_Client *ec, E_Maximize max)
    if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
      {
         /* Horizontal hasn't been set */
-        ec->saved.x = ec->client.x - ec->zone->x;
+        if (ec->changes.pos)
+          e_comp_object_frame_xy_adjust(ec->frame, ec->x, 0, &ec->saved.x, 
NULL);
+        else
+          ec->saved.x = ec->client.x;
+        ec->saved.x -= ec->zone->x;
         if (ec->visible)
           ec->saved.w = ec->client.w;
      }
    if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
      {
         /* Vertical hasn't been set */
-        ec->saved.y = ec->client.y - ec->zone->y;
+        if (ec->changes.pos)
+          e_comp_object_frame_xy_adjust(ec->frame, 0, ec->y, NULL, 
&ec->saved.y);
+        else
+          ec->saved.y = ec->client.y;
+        ec->saved.y -= ec->zone->y;
         if (ec->visible)
           ec->saved.h = ec->client.h;
      }
@@ -4293,8 +4301,16 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
      }
    else
      {
-        ec->saved.x = ec->client.x - ec->zone->x;
-        ec->saved.y = ec->client.y - ec->zone->y;
+        if (ec->changes.pos)
+          e_comp_object_frame_xy_adjust(ec->frame, ec->x, ec->y, &ec->saved.x, 
&ec->saved.y);
+        else
+          {
+             ec->saved.x = ec->client.x;
+             ec->saved.y = ec->client.y;
+          }
+        ec->saved.x -= ec->zone->x;
+        ec->saved.y -= ec->zone->y;
+
         if (ec->visible)
           {
              ec->saved.w = ec->client.w;

-- 


Reply via email to