discomfitor pushed a commit to branch master.

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

commit 005ad4e98631def4f67acc051684b1e2b2a881de
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Mon Apr 11 13:41:19 2016 -0400

    fake client-side geometry during wl (un)maximize interception
    
    fixes internal window maximize
---
 src/bin/e_comp_wl.c | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 8fdfcd03..7a6348c 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -605,19 +605,25 @@ _e_comp_wl_evas_cb_unmaximize_pre(void *data, Evas_Object 
*obj EINA_UNUSED, void
      ec->comp_data->maximizing = 1;
    else if (!e_client_has_xwindow(ec))
      {
-        int w, h, ew, eh;
+        int w, h, ew, eh, *ecw, *ech;
         unsigned int pmax = ec->maximized;
         ec->comp_data->max = *max;
+        if (ec->internal)
+          ecw = &ec->client.w, ech = &ec->client.h;
+        else
+          ecw = &ec->w, ech = &ec->h;
         if ((!e_config->window_maximize_animate) || 
ec->maximize_anims_disabled)
           {
              e_client_unmaximize_geometry_get(ec, *max, NULL, NULL, &w, &h);
-             ew = ec->w, eh = ec->h;
-             ec->w = w, ec->h = h;
+             if (ec->internal)
+               e_comp_object_frame_wh_unadjust(ec->frame, w, h, &w, &h);
+             ew = *ecw, eh = *ech;
+             *ecw = w, *ech = h;
           }
         ec->maximized = 0;
         _e_comp_wl_configure_send(ec, 0);
         if ((!e_config->window_maximize_animate) || 
ec->maximize_anims_disabled)
-          ec->w = ew, ec->h = eh;
+          *ecw = ew, *ech = eh;
         ec->maximized = pmax;
         *max = 0;
      }
@@ -634,19 +640,25 @@ _e_comp_wl_evas_cb_maximize_pre(void *data, Evas_Object 
*obj EINA_UNUSED, void *
      ec->comp_data->maximizing = 1;
    else if (!e_client_has_xwindow(ec))
      {
-        int w, h, ew, eh;
+        int w, h, ew, eh, *ecw, *ech;
         unsigned int pmax = ec->maximized;
         ec->comp_data->max = *max;
+        if (ec->internal)
+          ecw = &ec->client.w, ech = &ec->client.h;
+        else
+          ecw = &ec->w, ech = &ec->h;
         if ((!e_config->window_maximize_animate) || 
ec->maximize_anims_disabled)
           {
              e_client_maximize_geometry_get(ec, *max, NULL, NULL, &w, &h);
-             ew = ec->w, eh = ec->h;
-             ec->w = w, ec->h = h;
+             if (ec->internal)
+               e_comp_object_frame_wh_unadjust(ec->frame, w, h, &w, &h);
+             ew = *ecw, eh = *ech;
+             *ecw = w, *ech = h;
           }
         ec->maximized = *max;
         _e_comp_wl_configure_send(ec, 0);
         if ((!e_config->window_maximize_animate) || 
ec->maximize_anims_disabled)
-          ec->w = ew, ec->h = eh;
+          *ecw = ew, *ech = eh;
         ec->maximized = pmax;
         *max = 0;
      }

-- 


Reply via email to