discomfitor pushed a commit to branch master.

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

commit bf40d92ad83f64bc004695094f881c6cbb97ddb2
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Tue Nov 29 10:05:21 2016 -0500

    handle xdg-shell maximize/unmaximize calls correctly
---
 src/modules/wl_desktop_shell/xdg5.c | 8 ++++----
 src/modules/wl_desktop_shell/xdg6.c | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/modules/wl_desktop_shell/xdg5.c 
b/src/modules/wl_desktop_shell/xdg5.c
index 577393b..4fd0313 100644
--- a/src/modules/wl_desktop_shell/xdg5.c
+++ b/src/modules/wl_desktop_shell/xdg5.c
@@ -75,7 +75,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
      {
         if (fullscreen)
           pending |= STATE_FULLSCREEN;
-        else
+        else if (ec->fullscreen)
           pending |= STATE_UNFULLSCREEN;
      }
    shd->fullscreen = fullscreen;
@@ -83,7 +83,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
      {
         if (maximized)
           pending |= STATE_MAXIMIZED;
-        else
+        else if (ec->maximized)
           pending |= STATE_UNMAXIMIZED;
      }
    shd->maximized = maximized;
@@ -349,11 +349,13 @@ _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 (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;
           }
         shd->pending = eina_list_remove_list(shd->pending, l);
         free(ps);
@@ -427,7 +429,6 @@ _e_xdg_shell_surface_cb_maximized_unset(struct wl_client 
*client EINA_UNUSED, st
    if (e_object_is_del(E_OBJECT(ec))) return;
 
    if (ec->lock_user_maximize) return;
-   ec->comp_data->unmax = (e_config->maximize_policy & E_MAXIMIZE_TYPE) | 
E_MAXIMIZE_BOTH;
    if (e_config->window_maximize_animate && (!ec->maximize_anims_disabled))
      w = ec->w, h = ec->h;
    else
@@ -489,7 +490,6 @@ _e_xdg_shell_surface_cb_minimized_set(struct wl_client 
*client EINA_UNUSED, stru
 
    if (ec->lock_user_iconify) return;
    ec->comp_data->shell.set.minimize = 1;
-   ec->comp_data->max = (e_config->maximize_policy & E_MAXIMIZE_TYPE) | 
E_MAXIMIZE_BOTH;
 }
 
 static const struct xdg_surface_interface _e_xdg_surface_interface =
diff --git a/src/modules/wl_desktop_shell/xdg6.c 
b/src/modules/wl_desktop_shell/xdg6.c
index 588ba11..7e5d8e1 100644
--- a/src/modules/wl_desktop_shell/xdg6.c
+++ b/src/modules/wl_desktop_shell/xdg6.c
@@ -322,7 +322,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
      {
         if (fullscreen)
           pending |= STATE_FULLSCREEN;
-        else
+        else if (ec->fullscreen)
           pending |= STATE_UNFULLSCREEN;
      }
    shd->fullscreen = fullscreen;
@@ -330,7 +330,7 @@ _xdg_shell_surface_send_configure(struct wl_resource 
*resource, Eina_Bool fullsc
      {
         if (maximized)
           pending |= STATE_MAXIMIZED;
-        else
+        else if (ec->maximized)
           pending |= STATE_UNMAXIMIZED;
      }
    shd->maximized = maximized;
@@ -475,11 +475,13 @@ _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 (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;
           }
         shd->pending = eina_list_remove_list(shd->pending, l);
         free(ps);
@@ -553,7 +555,6 @@ _e_xdg_toplevel_cb_maximized_unset(struct wl_client *client 
EINA_UNUSED, struct
    if (e_object_is_del(E_OBJECT(ec))) return;
 
    if (ec->lock_user_maximize) return;
-   ec->comp_data->unmax = (e_config->maximize_policy & E_MAXIMIZE_TYPE) | 
E_MAXIMIZE_BOTH;
    if (e_config->window_maximize_animate && (!ec->maximize_anims_disabled))
      w = ec->w, h = ec->h;
    else
@@ -615,7 +616,6 @@ _e_xdg_toplevel_cb_minimized_set(struct wl_client *client 
EINA_UNUSED, struct wl
 
    if (ec->lock_user_iconify) return;
    ec->comp_data->shell.set.minimize = 1;
-   ec->comp_data->max = (e_config->maximize_policy & E_MAXIMIZE_TYPE) | 
E_MAXIMIZE_BOTH;
 }
 
 static int

-- 


Reply via email to