feature: break out e_moveresize_client_extents for calculating client step sizes

if using an external moveresize implementation, this function is very handy
This commit is contained in:
Mike Blumenkrantz 2013-10-15 12:43:51 +01:00
parent b67d94210a
commit b3ea9e9e9d
2 changed files with 31 additions and 31 deletions

View File

@ -3,7 +3,6 @@
static void _e_resize_begin(void *data, E_Client *ec);
static void _e_resize_update(void *data, E_Client *ec);
static void _e_resize_end(void *data, E_Client *ec);
static void _e_resize_client_extents(E_Client *ec, int *w, int *h);
static void _e_move_begin(void *data, E_Client *ec);
static void _e_move_update(void *data, E_Client *ec);
static void _e_move_end(void *data, E_Client *ec);
@ -55,6 +54,34 @@ e_moveresize_replace(Eina_Bool enable)
_e_moveresize_enabled = !enable;
}
EAPI void
e_moveresize_client_extents(const E_Client *ec, int *w, int *h)
{
if ((ec->icccm.base_w >= 0) &&
(ec->icccm.base_h >= 0))
{
if (ec->icccm.step_w > 0)
*w = (ec->client.w - ec->icccm.base_w) / ec->icccm.step_w;
else
*w = ec->client.w;
if (ec->icccm.step_h > 0)
*h = (ec->client.h - ec->icccm.base_h) / ec->icccm.step_h;
else
*h = ec->client.h;
}
else
{
if (ec->icccm.step_w > 0)
*w = (ec->client.w - ec->icccm.min_w) / ec->icccm.step_w;
else
*w = ec->client.w;
if (ec->icccm.step_h > 0)
*h = (ec->client.h - ec->icccm.min_h) / ec->icccm.step_h;
else
*h = ec->client.h;
}
}
static void
_e_resize_begin(void *data __UNUSED__, E_Client *ec)
{
@ -69,7 +96,7 @@ _e_resize_begin(void *data __UNUSED__, E_Client *ec)
if ((!e_config->resize_info_visible) || (!_e_moveresize_enabled))
return;
_e_resize_client_extents(ec, &w, &h);
e_moveresize_client_extents(ec, &w, &h);
_disp_content = o = edje_object_add(e_comp_get(ec)->evas);
evas_object_name_set(o, "resizeinfo->_disp_content");
@ -122,7 +149,7 @@ _e_resize_update(void *data __UNUSED__, E_Client *ec)
if (e_config->resize_info_follows)
e_comp_object_util_center_on(_disp_obj, ec->frame);
_e_resize_client_extents(ec, &w, &h);
e_moveresize_client_extents(ec, &w, &h);
if (!visible)
{
@ -133,34 +160,6 @@ _e_resize_update(void *data __UNUSED__, E_Client *ec)
edje_object_part_text_set(_disp_content, "e.text.label", buf);
}
static void
_e_resize_client_extents(E_Client *ec, int *w, int *h)
{
if ((ec->icccm.base_w >= 0) &&
(ec->icccm.base_h >= 0))
{
if (ec->icccm.step_w > 0)
*w = (ec->client.w - ec->icccm.base_w) / ec->icccm.step_w;
else
*w = ec->client.w;
if (ec->icccm.step_h > 0)
*h = (ec->client.h - ec->icccm.base_h) / ec->icccm.step_h;
else
*h = ec->client.h;
}
else
{
if (ec->icccm.step_w > 0)
*w = (ec->client.w - ec->icccm.min_w) / ec->icccm.step_w;
else
*w = ec->client.w;
if (ec->icccm.step_h > 0)
*h = (ec->client.h - ec->icccm.min_h) / ec->icccm.step_h;
else
*h = ec->client.h;
}
}
static void
_e_move_begin(void *data __UNUSED__, E_Client *ec)
{

View File

@ -7,5 +7,6 @@
EINTERN int e_moveresize_init(void);
EINTERN int e_moveresize_shutdown(void);
EAPI void e_moveresize_replace(Eina_Bool enable);
EAPI void e_moveresize_client_extents(const E_Client *ec, int *w, int *h);
#endif
#endif