forked from enlightenment/enlightenment
defer netwm maximize hint apply to reduce canvas ops
improves maximize performance on apps like chromium which incrementally apply maximize states
This commit is contained in:
parent
5aa231f53e
commit
1a2f4087db
|
@ -780,48 +780,41 @@ e_hints_window_state_update(E_Client *ec,
|
|||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
|
||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
||||
{
|
||||
E_Maximize max[] =
|
||||
{
|
||||
[ECORE_X_WINDOW_STATE_MAXIMIZED_VERT] = E_MAXIMIZE_VERTICAL,
|
||||
[ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ] = E_MAXIMIZE_HORIZONTAL,
|
||||
};
|
||||
if (ec->lock_client_maximize) return;
|
||||
switch (action)
|
||||
{
|
||||
case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
|
||||
if (ec->maximized & E_MAXIMIZE_VERTICAL)
|
||||
if (ec->maximized & max[state])
|
||||
e_client_unmaximize(ec, E_MAXIMIZE_VERTICAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
|
||||
e_client_maximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_VERTICAL);
|
||||
if (ec->maximized & max[state]) break;
|
||||
ec->changes.need_maximize = 1;
|
||||
ec->maximized &= ~E_MAXIMIZE_TYPE;
|
||||
ec->maximized |= (e_config->maximize_policy & E_MAXIMIZE_TYPE) | max[state];
|
||||
EC_CHANGED(ec);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (ec->maximized & E_MAXIMIZE_VERTICAL)
|
||||
e_client_unmaximize(ec, E_MAXIMIZE_VERTICAL);
|
||||
else
|
||||
e_client_maximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_VERTICAL);
|
||||
if (ec->maximized & max[state])
|
||||
{
|
||||
e_client_unmaximize(ec, max[state]);
|
||||
break;
|
||||
}
|
||||
ec->changes.need_maximize = 1;
|
||||
ec->maximized &= ~E_MAXIMIZE_TYPE;
|
||||
ec->maximized |= (e_config->maximize_policy & E_MAXIMIZE_TYPE) | max[state];
|
||||
EC_CHANGED(ec);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
||||
if (ec->lock_client_maximize) return;
|
||||
switch (action)
|
||||
{
|
||||
case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
|
||||
if (ec->maximized & E_MAXIMIZE_HORIZONTAL)
|
||||
e_client_unmaximize(ec, E_MAXIMIZE_HORIZONTAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
|
||||
e_client_maximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_HORIZONTAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (ec->maximized & E_MAXIMIZE_HORIZONTAL)
|
||||
e_client_unmaximize(ec, E_MAXIMIZE_HORIZONTAL);
|
||||
else
|
||||
e_client_maximize(ec, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_HORIZONTAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue