From bf40d92ad83f64bc004695094f881c6cbb97ddb2 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 29 Nov 2016 10:05:21 -0500 Subject: [PATCH] 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 577393b37..4fd0313ff 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 588ba11f3..7e5d8e1b5 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