discomfitor pushed a commit to branch master.

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

commit f58eb2db7b5ec9c8b7ab9ad09d3ab49f7f42b54b
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Nov 30 11:15:42 2016 -0500

    use more accurate determination for applying xdg-shell (un)maximize 
operations
    
    fixes maximizing again
---
 src/modules/wl_desktop_shell/xdg5.c | 8 +++++---
 src/modules/wl_desktop_shell/xdg6.c | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/modules/wl_desktop_shell/xdg5.c 
b/src/modules/wl_desktop_shell/xdg5.c
index 4fd0313..a2191f3 100644
--- a/src/modules/wl_desktop_shell/xdg5.c
+++ b/src/modules/wl_desktop_shell/xdg5.c
@@ -83,7 +83,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
      {
         if (maximized)
           pending |= STATE_MAXIMIZED;
-        else if (ec->maximized)
+        else if (ec->maximized || ec->comp_data->unmax)
           pending |= STATE_UNMAXIMIZED;
      }
    shd->maximized = maximized;
@@ -349,13 +349,15 @@ _e_xdg_shell_surface_cb_ack_configure(struct wl_client 
*client EINA_UNUSED, stru
           {
              ec->comp_data->shell.set.maximize = 1;
              ec->comp_data->shell.set.unmaximize = 0;
-             ec->comp_data->max = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
+             if (!ec->comp_data->max)
+               ec->comp_data->max = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
           }
         if (ps->state & STATE_UNMAXIMIZED)
           {
              ec->comp_data->shell.set.unmaximize = 1;
              ec->comp_data->shell.set.maximize = 0;
-             ec->comp_data->unmax = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
+             if (!ec->comp_data->unmax)
+               ec->comp_data->unmax = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
           }
         shd->pending = eina_list_remove_list(shd->pending, l);
         free(ps);
diff --git a/src/modules/wl_desktop_shell/xdg6.c 
b/src/modules/wl_desktop_shell/xdg6.c
index f39f928..c6926e9 100644
--- a/src/modules/wl_desktop_shell/xdg6.c
+++ b/src/modules/wl_desktop_shell/xdg6.c
@@ -334,7 +334,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
      {
         if (maximized)
           pending |= STATE_MAXIMIZED;
-        else if (ec->maximized)
+        else if (ec->maximized || ec->comp_data->unmax)
           pending |= STATE_UNMAXIMIZED;
      }
    shd->maximized = maximized;
@@ -479,13 +479,15 @@ _e_xdg_surface_cb_ack_configure(struct wl_client *client 
EINA_UNUSED, struct wl_
           {
              ec->comp_data->shell.set.maximize = 1;
              ec->comp_data->shell.set.unmaximize = 0;
-             ec->comp_data->max = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
+             if (!ec->comp_data->max)
+               ec->comp_data->max = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
           }
         if (ps->state & STATE_UNMAXIMIZED)
           {
              ec->comp_data->shell.set.unmaximize = 1;
              ec->comp_data->shell.set.maximize = 0;
-             ec->comp_data->unmax = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
+             if (!ec->comp_data->unmax)
+               ec->comp_data->unmax = (e_config->maximize_policy & 
E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
           }
         shd->pending = eina_list_remove_list(shd->pending, l);
         free(ps);

-- 


Reply via email to