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); --
