discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b223ed0981407c8dd417e5e39ecb0ab0a9712da6
commit b223ed0981407c8dd417e5e39ecb0ab0a9712da6 Author: Mike Blumenkrantz <[email protected]> Date: Wed Mar 22 16:15:16 2017 -0400 add E_Client->saved.set this indicates that saved geometry has been set and should not be updated during maximize currently only used to handle transition from fullscreen -> maximize --- src/bin/e_client.c | 52 ++++++++++++++++++++++++++++------------------------ src/bin/e_client.h | 1 + 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 3228b9b..873d65b 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -4072,32 +4072,34 @@ e_client_maximize(E_Client *ec, E_Maximize max) if (ec->fullscreen) e_client_unfullscreen(ec); ec->pre_res_change.valid = 0; - if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL)) + if (!ec->saved.set) { - /* Horizontal hasn't been set */ - if (ec->changes.pos) - e_comp_object_frame_xy_adjust(ec->frame, ec->x, 0, &ec->saved.x, NULL); - else - ec->saved.x = ec->client.x; - ec->saved.x -= ec->zone->x; - if (ec->visible) - ec->saved.w = ec->client.w; - } - if (!(ec->maximized & E_MAXIMIZE_VERTICAL)) - { - /* Vertical hasn't been set */ - if (ec->changes.pos) - e_comp_object_frame_xy_adjust(ec->frame, 0, ec->y, NULL, &ec->saved.y); - else - ec->saved.y = ec->client.y; - ec->saved.y -= ec->zone->y; - if (ec->visible) - ec->saved.h = ec->client.h; + if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL)) + { + /* Horizontal hasn't been set */ + if (ec->changes.pos) + e_comp_object_frame_xy_adjust(ec->frame, ec->x, 0, &ec->saved.x, NULL); + else + ec->saved.x = ec->client.x; + ec->saved.x -= ec->zone->x; + if (ec->visible) + ec->saved.w = ec->client.w; + } + if (!(ec->maximized & E_MAXIMIZE_VERTICAL)) + { + /* Vertical hasn't been set */ + if (ec->changes.pos) + e_comp_object_frame_xy_adjust(ec->frame, 0, ec->y, NULL, &ec->saved.y); + else + ec->saved.y = ec->client.y; + ec->saved.y -= ec->zone->y; + if (ec->visible) + ec->saved.h = ec->client.h; + } + ec->saved.zone = ec->zone->num; + ec->saved.frame = e_comp_object_frame_exists(ec->frame) || (!e_comp_object_frame_allowed(ec->frame)); } - ec->saved.zone = ec->zone->num; - ec->saved.frame = e_comp_object_frame_exists(ec->frame) || (!e_comp_object_frame_allowed(ec->frame)); - ec->maximize_override = 1; { @@ -4215,6 +4217,7 @@ e_client_unmaximize(E_Client *ec, E_Maximize max) ec->saved.y + ec->zone->y, ec->saved.w, ec->saved.h); ec->saved.x = ec->saved.y = ec->saved.w = ec->saved.h = 0; + ec->saved.set = 0; e_hints_window_size_unset(ec); } else @@ -4272,7 +4275,7 @@ e_client_unmaximize(E_Client *ec, E_Maximize max) if (horiz) ec->saved.w = ec->saved.x = 0; if (vert && horiz) - ec->saved.frame = 0; + ec->saved.set = ec->saved.frame = 0; } e_hints_window_maximized_set(ec, ec->maximized & E_MAXIMIZE_HORIZONTAL, ec->maximized & E_MAXIMIZE_VERTICAL); @@ -4344,6 +4347,7 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy) } ec->saved.layer = ec->layer; + ec->saved.set = 1; if (!e_config->allow_above_fullscreen) evas_object_layer_set(ec->frame, E_LAYER_CLIENT_FULLSCREEN); else if (e_config->mode.presentation) diff --git a/src/bin/e_client.h b/src/bin/e_client.h index edcb108..511ea8b 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -319,6 +319,7 @@ struct E_Client int zone; E_Maximize maximized; Eina_Bool frame : 1; + Eina_Bool set : 1; } saved; struct --
