There is a requirement to maximize window to full screen size.
In most cases, when the window request to maximize, it is maximized to a size exculuding
the obstacles(such as taskbar) area.
However, special apps such as home screen should be maximized to the size of the entire
screen.
So, we add a maximize_type in the E_Client structure to decide the maximize type.
Change-Id: Ifde8188b04a43c256f88439bdfac7e84086f1537
ec->post_raise = EINA_TRUE;
ec->post_lower = EINA_FALSE;
ec->animatable = EINA_TRUE;
+ ec->maximize_type = e_config->maximize_policy & E_MAXIMIZE_TYPE;
/* FIXME: if first_map is 1 then we should ignore the first hide event
* or ensure the window is already hidden and events flushed before we
typedef enum _E_Maximize_Direction
{
- E_MAXIMIZE_DIRECTION_NONE,
- E_MAXIMIZE_DIRECTION_ALL,
- E_MAXIMIZE_DIRECTION_LEFT,
- E_MAXIMIZE_DIRECTION_RIGHT,
+ E_MAXIMIZE_DIRECTION_NONE = E_MAXIMIZE_NONE,
+ E_MAXIMIZE_DIRECTION_ALL = E_MAXIMIZE_BOTH,
+ E_MAXIMIZE_DIRECTION_LEFT = E_MAXIMIZE_LEFT,
+ E_MAXIMIZE_DIRECTION_RIGHT = E_MAXIMIZE_RIGHT,
} E_Maximize_Direction;
+typedef enum _E_Maximize_Type
+{
+ E_MAXIMIZE_TYPE_FULLSCREEN = E_MAXIMIZE_FULLSCREEN,
+ E_MAXIMIZE_TYPE_SMART = E_MAXIMIZE_SMART,
+ E_MAXIMIZE_TYPE_EXPAND = E_MAXIMIZE_EXPAND,
+ E_MAXIMIZE_TYPE_FILL = E_MAXIMIZE_FILL,
+} E_Maximize_Type;
+
// TODO: should be removed - yigl
typedef enum _E_Fullscreen
{
} desk_zoom;
E_Maximize_Direction maximize_dir;
+ E_Maximize_Type maximize_type;
Eina_Bool apply_layout;
struct
* E_Desk.
*/
ec->placed = 1;
- E_Maximize max;
if ((e_policy_client_is_home_screen(ec)) ||
(e_policy_client_is_lockscreen(ec)) ||
(e_policy_client_is_quickpanel(ec)) ||
(e_policy_client_is_taskbar(ec)))
{
- max = E_MAXIMIZE_FULLSCREEN | E_MAXIMIZE_BOTH;
+ ec->maximize_type = E_MAXIMIZE_TYPE_FULLSCREEN;
+ ec->maximize_dir = E_MAXIMIZE_DIRECTION_ALL;
}
else
{
- max = E_MAXIMIZE_EXPAND | E_MAXIMIZE_BOTH;
+ ec->maximize_type = E_MAXIMIZE_EXPAND;
+ ec->maximize_dir = E_MAXIMIZE_DIRECTION_ALL;
}
- e_client_maximize(ec, max);
+ e_client_maximize(ec, ec->maximize_type | ec->maximize_dir);
if (ec->changes.need_maximize)
_e_policy_client_maximize_pre(pc);
_e_policy_cb_client_property(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
{
E_Event_Client_Property *ev;
+ E_Client *ec;
ev = event;
- if (!ev || (!ev->ec)) return ECORE_CALLBACK_PASS_ON;
+ ec = ev->ec;
+ if (!ev || (!ec)) return ECORE_CALLBACK_PASS_ON;
if (ev->property & E_CLIENT_PROPERTY_CLIENT_TYPE)
{
- if (e_policy_client_is_home_screen(ev->ec))
+ if (e_policy_client_is_home_screen(ec))
{
- ev->ec->lock_client_stacking = 0;
- e_client_desk_iconify_skip_set(ev->ec, EINA_TRUE);
- if (ev->ec->maximized)
- e_client_maximize(ev->ec, E_MAXIMIZE_FULLSCREEN | E_MAXIMIZE_BOTH);
+ ec->lock_client_stacking = 0;
+ e_client_desk_iconify_skip_set(ec, EINA_TRUE);
+ if (ec->maximized)
+ {
+ ec->maximize_type = E_MAXIMIZE_TYPE_FULLSCREEN;
+ ec->maximize_dir = E_MAXIMIZE_DIRECTION_ALL;
+ e_client_maximize(ec, ec->maximize_type | ec->maximize_dir);
+ }
}
}
{
ec->maximize_dir = E_MAXIMIZE_DIRECTION_NONE;
e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
+ return;
}
- else if (direction == TIZEN_POLICY_MAXIMIZE_DIRECTION_ALL)
+
+ if (direction == TIZEN_POLICY_MAXIMIZE_DIRECTION_ALL)
{
ec->maximize_dir = E_MAXIMIZE_DIRECTION_ALL;
- e_client_maximize(ec, E_MAXIMIZE_EXPAND | E_MAXIMIZE_BOTH);
}
else if (direction == TIZEN_POLICY_MAXIMIZE_DIRECTION_LEFT)
{
ec->maximize_dir = E_MAXIMIZE_DIRECTION_LEFT;
- e_client_maximize(ec, E_MAXIMIZE_EXPAND | E_MAXIMIZE_LEFT);
}
else if (direction == TIZEN_POLICY_MAXIMIZE_DIRECTION_RIGHT)
{
ec->maximize_dir = E_MAXIMIZE_DIRECTION_RIGHT;
- e_client_maximize(ec, E_MAXIMIZE_EXPAND | E_MAXIMIZE_RIGHT);
}
else
{
ELOGF("TZPOL", "Not supported direction:%d", ec, direction);
+ return;
}
+
+ e_client_maximize(ec, ec->maximize_type | ec->maximize_dir);
}
static void