We add a feature for maximize direction.
- New enumeration : E_Maximize_Direction
- Implement a function for tizen_policy_set_maximize_direction
Change-Id: Ibb7741babcf050fd3f3d73293a0e2a4ea1f2f361
if ((ec->shaded) || (ec->shading)) return;
- /* Only allow changes in vertical/ horizontal maximization */
- if (((ec->maximized & E_MAXIMIZE_DIRECTION) == (max & E_MAXIMIZE_DIRECTION)) ||
- ((ec->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_BOTH)) return;
+ if ((ec->maximized & E_MAXIMIZE_DIRECTION) == (max & E_MAXIMIZE_DIRECTION))
+ return;
+
if (ec->new_client)
{
ec->changes.need_maximize = 1;
_e_client_maximize(ec, max);
- /* Remove previous type */
- ec->maximized &= ~E_MAXIMIZE_TYPE;
- /* Add new maximization. It must be added, so that VERTICAL + HORIZONTAL == BOTH */
- ec->maximized |= max;
+ ec->maximized = max;
ec->changes.need_unmaximize = 0;
if ((ec->maximized & E_MAXIMIZE_DIRECTION) > E_MAXIMIZE_BOTH)
E_MAXIMIZE_DIRECTION = 0x000000f0
} E_Maximize;
+typedef enum _E_Maximize_Direction
+{
+ E_MAXIMIZE_DIRECTION_NONE,
+ E_MAXIMIZE_DIRECTION_ALL,
+ E_MAXIMIZE_DIRECTION_LEFT,
+ E_MAXIMIZE_DIRECTION_RIGHT,
+} E_Maximize_Direction;
+
// TODO: should be removed - yigl
typedef enum _E_Fullscreen
{
} maximized_info;
Eina_Bool desk_zoom;
+
+ E_Maximize_Direction maximize_dir;
};
#define e_client_focus_policy_click(ec) \
e_policy_stack_transient_for_below_set(ec, parent_ec, EINA_FALSE);
}
+static void
+_tzpol_iface_cb_set_maximize_direction(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tzpol EINA_UNUSED, struct wl_resource *surf, uint32_t direction)
+{
+ E_Client *ec;
+
+ ec = wl_resource_get_user_data(surf);
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+ EINA_SAFETY_ON_NULL_RETURN(ec->frame);
+
+ ELOGF("TZPOL", "Set Maximize_direction. direction:%d", ec, direction);
+
+ if (direction == TIZEN_POLICY_MAXIMIZE_DIRECTION_NONE)
+ {
+ ec->maximize_dir = E_MAXIMIZE_DIRECTION_NONE;
+ e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
+ }
+ else 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);
+ }
+}
+
+
// --------------------------------------------------------
// tizen_policy_interface
// --------------------------------------------------------
_tzpol_iface_cb_hide,
_tzpol_iface_cb_set_transient_for_below,
_tzpol_iface_cb_set_parent_with_below,
+ _tzpol_iface_cb_set_maximize_direction,
};
static void
/* create globals */
global = wl_global_create(e_comp_wl->wl.disp,
&tizen_policy_interface,
- 11,
+ 12,
NULL,
_tzpol_cb_bind);
EINA_SAFETY_ON_NULL_GOTO(global, err);
return;
}
- ELOGF("XDG6", "Toplevel Maximized Set. res:%p, lock_user_maximize:%d", ec, resource, ec->lock_user_maximize);
+ ELOGF("XDG6", "Toplevel Maximized Set. res:%p, lock_user_maximize:%d, dir:%d", ec, resource, ec->lock_user_maximize, ec->maximize_dir);
if (!ec->lock_user_maximize)
{
- max = (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
- e_client_maximize(ec, max);
+ if ((ec->maximize_dir == E_MAXIMIZE_DIRECTION_ALL) || (ec->maximize_dir == E_MAXIMIZE_DIRECTION_NONE))
+ {
+ max = (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_BOTH;
+ e_client_maximize(ec, max);
+ }
}
}
}
ELOGF("XDG6", "Toplevel Maximized Unset. res:%p, lock_user_maximize:%d", ec, resource, ec->lock_user_maximize);
+
+ ec->maximize_dir = E_MAXIMIZE_DIRECTION_NONE;
/* it's doubtful */
e_client_unmaximize(ec, E_MAXIMIZE_BOTH);
}