use more accurate determination for applying xdg-shell (un)maximize operations

fixes maximizing again
This commit is contained in:
Mike Blumenkrantz 2016-11-30 11:15:42 -05:00
parent d0b0f81fb7
commit f58eb2db7b
2 changed files with 10 additions and 6 deletions

View File

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

View File

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