From b5576dbb8c98934ab0e8c5ff59bed106c02d9874 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 20 Jun 2016 16:00:53 -0400 Subject: [PATCH] use separate flag for pending wl client unmaximize also set flag to prevent saved geometry from being overwritten --- src/bin/e_comp_wl.c | 14 +++++++++++--- src/bin/e_comp_wl.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 855f549d6..819a26d0f 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -629,7 +629,7 @@ _e_comp_wl_evas_cb_unmaximize_pre(void *data, Evas_Object *obj EINA_UNUSED, void { int w, h, ew, eh, *ecw, *ech; unsigned int pmax = ec->maximized; - ec->comp_data->max = *max; + ec->comp_data->unmax = *max; if (ec->internal) ecw = &ec->client.w, ech = &ec->client.h; else @@ -1176,9 +1176,17 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state) if (ec->comp_data->shell.set.unfullscreen) e_client_unfullscreen(ec); if (ec->comp_data->shell.set.maximize) - e_client_maximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | ec->comp_data->max); + { + ec->changes.need_maximize = 1; + e_client_maximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | ec->comp_data->max); + ec->comp_data->max = 0; + ec->changes.need_maximize = 0; + } if (ec->comp_data->shell.set.unmaximize) - e_client_unmaximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | ec->comp_data->max); + { + e_client_unmaximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | ec->comp_data->unmax); + ec->comp_data->unmax = 0; + } if (ec->comp_data->shell.set.minimize) e_client_iconify(ec); ec->comp_data->shell.set.fullscreen = diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 7bb3f7428..984d531f1 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -309,6 +309,7 @@ struct _E_Comp_Wl_Client_Data } popup; E_Maximize max; + E_Maximize unmax; #ifndef HAVE_WAYLAND_ONLY E_Pixmap *xwayland_pixmap; E_Comp_X_Client_Data *xwayland_data;