2005-01-15 01:50:26 -08:00
|
|
|
/*
|
|
|
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
|
|
|
*/
|
|
|
|
#include "e.h"
|
|
|
|
|
2005-01-18 07:40:54 -08:00
|
|
|
/* FIXME: corner case if module is sized to full screen... cant stop edit or */
|
|
|
|
/* re-enter edit mode (cant access root menu) */
|
2005-01-20 05:42:51 -08:00
|
|
|
/* FIXME: resist can still jump on top of other gads... */
|
2005-01-18 07:40:54 -08:00
|
|
|
|
2005-01-15 01:50:26 -08:00
|
|
|
/* local subsystem functions */
|
2005-01-21 07:45:56 -08:00
|
|
|
|
|
|
|
typedef struct _Gadman_Client_Config Gadman_Client_Config;
|
|
|
|
|
|
|
|
struct _Gadman_Client_Config
|
|
|
|
{
|
2005-05-18 19:46:50 -07:00
|
|
|
// double ax, ay;
|
|
|
|
struct {
|
|
|
|
int x, y, w, h;
|
|
|
|
} pos;
|
2005-01-21 07:45:56 -08:00
|
|
|
int w, h;
|
|
|
|
int edge;
|
|
|
|
int zone;
|
|
|
|
int use_autow, use_autoh;
|
|
|
|
};
|
|
|
|
|
2005-01-15 01:50:26 -08:00
|
|
|
static void _e_gadman_free(E_Gadman *gm);
|
2005-01-15 07:21:57 -08:00
|
|
|
static void _e_gadman_client_free(E_Gadman_Client *gmc);
|
2005-01-17 00:54:37 -08:00
|
|
|
static void _e_gadman_client_edit_begin(E_Gadman_Client *gmc);
|
|
|
|
static void _e_gadman_client_edit_end(E_Gadman_Client *gmc);
|
2005-01-21 07:45:56 -08:00
|
|
|
static void _e_gadman_client_overlap_deny(E_Gadman_Client *gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
static void _e_gadman_client_down_store(E_Gadman_Client *gmc);
|
|
|
|
static int _e_gadman_client_is_being_modified(E_Gadman_Client *gmc);
|
|
|
|
static void _e_gadman_client_geometry_to_align(E_Gadman_Client *gmc);
|
2005-01-18 07:40:54 -08:00
|
|
|
static void _e_gadman_client_aspect_enforce(E_Gadman_Client *gmc, double cx, double cy, int use_horiz);
|
2005-01-17 08:18:34 -08:00
|
|
|
static void _e_gadman_client_geometry_apply(E_Gadman_Client *gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
static void _e_gadman_client_callback_call(E_Gadman_Client *gmc, E_Gadman_Change change);
|
2005-01-17 00:54:37 -08:00
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
static void _e_gadman_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
|
|
|
static void _e_gadman_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
|
|
|
static void _e_gadman_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
|
|
|
static void _e_gadman_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event_info);
|
2005-01-17 00:54:37 -08:00
|
|
|
|
|
|
|
static void _e_gadman_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_left_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_up_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_down_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
|
|
|
static void _e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
2005-01-15 01:50:26 -08:00
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
static void _e_gadman_cb_menu_end(void *data, E_Menu *m);
|
|
|
|
|
|
|
|
static void _e_gadman_cb_half_width(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_gadman_cb_full_width(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-01-18 07:40:54 -08:00
|
|
|
static void _e_gadman_cb_auto_width(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-01-17 08:18:34 -08:00
|
|
|
static void _e_gadman_cb_center_horiz(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
|
|
|
|
static void _e_gadman_cb_half_height(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
static void _e_gadman_cb_full_height(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-01-18 07:40:54 -08:00
|
|
|
static void _e_gadman_cb_auto_height(void *data, E_Menu *m, E_Menu_Item *mi);
|
2005-01-17 08:18:34 -08:00
|
|
|
static void _e_gadman_cb_center_vert(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
|
2005-01-24 07:22:47 -08:00
|
|
|
static void _e_gadman_cb_end_edit_mode(void *data, E_Menu *m, E_Menu_Item *mi);
|
|
|
|
|
2005-01-21 07:45:56 -08:00
|
|
|
static E_Config_DD *gadman_config_edd = NULL;
|
|
|
|
|
2005-01-15 01:50:26 -08:00
|
|
|
/* externally accessible functions */
|
|
|
|
int
|
|
|
|
e_gadman_init(void)
|
|
|
|
{
|
2005-01-21 07:45:56 -08:00
|
|
|
gadman_config_edd = E_CONFIG_DD_NEW("Gadman_Client_Config", Gadman_Client_Config);
|
|
|
|
#undef T
|
|
|
|
#undef D
|
|
|
|
#define T Gadman_Client_Config
|
|
|
|
#define D gadman_config_edd
|
2005-05-18 19:46:50 -07:00
|
|
|
// E_CONFIG_VAL(D, T, ax, DOUBLE);
|
|
|
|
// E_CONFIG_VAL(D, T, ay, DOUBLE);
|
|
|
|
E_CONFIG_VAL(D, T, pos.x, INT);
|
|
|
|
E_CONFIG_VAL(D, T, pos.y, INT);
|
|
|
|
E_CONFIG_VAL(D, T, pos.w, INT);
|
|
|
|
E_CONFIG_VAL(D, T, pos.h, INT);
|
2005-01-21 07:45:56 -08:00
|
|
|
E_CONFIG_VAL(D, T, w, INT);
|
|
|
|
E_CONFIG_VAL(D, T, h, INT);
|
|
|
|
E_CONFIG_VAL(D, T, edge, INT);
|
|
|
|
E_CONFIG_VAL(D, T, zone, INT);
|
|
|
|
E_CONFIG_VAL(D, T, use_autow, INT);
|
|
|
|
E_CONFIG_VAL(D, T, use_autoh, INT);
|
2005-01-15 01:50:26 -08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int
|
|
|
|
e_gadman_shutdown(void)
|
|
|
|
{
|
2005-01-21 07:45:56 -08:00
|
|
|
E_CONFIG_DD_FREE(gadman_config_edd);
|
|
|
|
gadman_config_edd = NULL;
|
2005-01-15 01:50:26 -08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
E_Gadman *
|
|
|
|
e_gadman_new(E_Container *con)
|
|
|
|
{
|
|
|
|
E_Gadman *gm;
|
|
|
|
|
2005-01-21 22:58:34 -08:00
|
|
|
gm = E_OBJECT_ALLOC(E_Gadman, E_GADMAN_TYPE, _e_gadman_free);
|
2005-01-15 01:50:26 -08:00
|
|
|
if (!gm) return NULL;
|
|
|
|
gm->container = con;
|
|
|
|
return gm;
|
|
|
|
}
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
void
|
2005-01-17 00:54:37 -08:00
|
|
|
e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode)
|
2005-01-15 07:21:57 -08:00
|
|
|
{
|
2005-01-17 00:54:37 -08:00
|
|
|
Evas_List *l;
|
|
|
|
|
|
|
|
E_OBJECT_CHECK(gm);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gm, E_GADMAN_TYPE);
|
2005-01-17 00:54:37 -08:00
|
|
|
if (gm->mode == mode) return;
|
|
|
|
gm->mode = mode;
|
|
|
|
if (gm->mode == E_GADMAN_MODE_EDIT)
|
|
|
|
{
|
|
|
|
for (l = gm->clients; l; l = l->next)
|
|
|
|
_e_gadman_client_edit_begin(l->data);
|
|
|
|
}
|
|
|
|
else if (gm->mode == E_GADMAN_MODE_NORMAL)
|
|
|
|
{
|
|
|
|
for (l = gm->clients; l; l = l->next)
|
|
|
|
_e_gadman_client_edit_end(l->data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
E_Gadman_Mode
|
|
|
|
e_gadman_mode_get(E_Gadman *gm)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK_RETURN(gm, E_GADMAN_MODE_NORMAL);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK_RETURN(gm, E_GADMAN_TYPE, E_GADMAN_MODE_NORMAL);
|
2005-01-17 00:54:37 -08:00
|
|
|
return gm->mode;
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
2005-01-21 21:21:48 -08:00
|
|
|
void
|
|
|
|
e_gadman_container_resize(E_Gadman *gm)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
|
|
|
|
|
|
|
E_OBJECT_CHECK(gm);
|
|
|
|
for (l = gm->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = l->data;
|
|
|
|
if (gmc->use_autow)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->autow;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
}
|
|
|
|
if (gmc->use_autoh)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->autoh;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
}
|
|
|
|
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
|
|
|
|
if (gmc->h > gmc->zone->h) gmc->h = gmc->zone->h;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
_e_gadman_client_overlap_deny(gmc);
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-01-18 07:40:54 -08:00
|
|
|
E_Gadman_Client *
|
|
|
|
e_gadman_client_new(E_Gadman *gm)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
E_OBJECT_CHECK_RETURN(gm, NULL);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK_RETURN(gm, E_GADMAN_TYPE, NULL);
|
2005-01-18 07:40:54 -08:00
|
|
|
|
2005-01-21 22:58:34 -08:00
|
|
|
gmc = E_OBJECT_ALLOC(E_Gadman_Client, E_GADMAN_CLIENT_TYPE, _e_gadman_client_free);
|
2005-01-18 07:40:54 -08:00
|
|
|
if (!gmc) return NULL;
|
|
|
|
gmc->gadman = gm;
|
|
|
|
gmc->policy = E_GADMAN_POLICY_ANYWHERE | E_GADMAN_POLICY_HSIZE | E_GADMAN_POLICY_VSIZE | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
|
|
|
gmc->zone = e_zone_current_get(gm->container);
|
2005-01-21 07:45:56 -08:00
|
|
|
gmc->edge = E_GADMAN_EDGE_TOP;
|
2005-01-18 07:40:54 -08:00
|
|
|
gmc->minw = 1;
|
|
|
|
gmc->minh = 1;
|
|
|
|
gmc->maxw = 0;
|
|
|
|
gmc->maxh = 0;
|
|
|
|
gmc->ax = 0.0;
|
2005-01-21 07:45:56 -08:00
|
|
|
gmc->ay = 0.0;
|
2005-01-18 07:40:54 -08:00
|
|
|
gmc->mina = 0.0;
|
|
|
|
gmc->maxa = 9999999.0;
|
|
|
|
gm->clients = evas_list_append(gm->clients, gmc);
|
|
|
|
return gmc;
|
|
|
|
}
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
void
|
2005-01-17 02:05:15 -08:00
|
|
|
e_gadman_client_save(E_Gadman_Client *gmc)
|
2005-01-15 07:21:57 -08:00
|
|
|
{
|
2005-01-21 07:45:56 -08:00
|
|
|
Gadman_Client_Config cf;
|
|
|
|
char buf[1024];
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-17 02:05:15 -08:00
|
|
|
/* save all values */
|
2005-05-18 19:46:50 -07:00
|
|
|
cf.pos.x = gmc->x - gmc->zone->x;
|
|
|
|
cf.pos.y = gmc->y - gmc->zone->y;
|
|
|
|
cf.pos.w = gmc->zone->w;
|
|
|
|
cf.pos.h = gmc->zone->h;
|
2005-01-21 07:45:56 -08:00
|
|
|
cf.w = gmc->w;
|
|
|
|
cf.h = gmc->h;
|
|
|
|
cf.edge = gmc->edge;
|
|
|
|
cf.zone = gmc->zone->num;
|
|
|
|
cf.use_autow = gmc->use_autow;
|
|
|
|
cf.use_autoh = gmc->use_autoh;
|
|
|
|
snprintf(buf, sizeof(buf), "gadman.%s.%i", gmc->domain, gmc->instance);
|
|
|
|
e_config_domain_save(buf, gadman_config_edd, &cf);
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2005-01-17 02:05:15 -08:00
|
|
|
e_gadman_client_load(E_Gadman_Client *gmc)
|
2005-01-15 07:21:57 -08:00
|
|
|
{
|
2005-01-21 07:45:56 -08:00
|
|
|
Gadman_Client_Config *cf;
|
|
|
|
char buf[1024];
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
snprintf(buf, sizeof(buf), "gadman.%s.%i", gmc->domain, gmc->instance);
|
|
|
|
cf = e_config_domain_load(buf, gadman_config_edd);
|
|
|
|
if (cf)
|
|
|
|
{
|
|
|
|
E_Zone *zone;
|
|
|
|
|
2005-05-18 19:46:50 -07:00
|
|
|
E_CONFIG_LIMIT(cf->pos.x, 0, 10000);
|
|
|
|
E_CONFIG_LIMIT(cf->pos.y, 0, 10000);
|
|
|
|
E_CONFIG_LIMIT(cf->pos.w, 1, 10000);
|
|
|
|
E_CONFIG_LIMIT(cf->pos.h, 1, 10000);
|
2005-01-21 07:45:56 -08:00
|
|
|
E_CONFIG_LIMIT(cf->w, 0, 10000);
|
|
|
|
E_CONFIG_LIMIT(cf->h, 0, 10000);
|
|
|
|
E_CONFIG_LIMIT(cf->edge, E_GADMAN_EDGE_LEFT, E_GADMAN_EDGE_BOTTOM);
|
2005-05-18 19:46:50 -07:00
|
|
|
if (cf->pos.w != cf->w)
|
|
|
|
gmc->ax = (double)(cf->pos.x - cf->w) / (double)(cf->pos.w - cf->w);
|
|
|
|
else
|
|
|
|
gmc->ax = 0.0;
|
|
|
|
if (cf->pos.h != cf->h)
|
|
|
|
gmc->ay = (double)(cf->pos.y - cf->h) / (double)(cf->pos.h - cf->h);
|
|
|
|
else
|
|
|
|
gmc->ay = 0.0;
|
2005-01-21 07:45:56 -08:00
|
|
|
gmc->w = cf->w;
|
|
|
|
gmc->h = cf->h;
|
|
|
|
gmc->edge = cf->edge;
|
|
|
|
gmc->use_autow = cf->use_autow;
|
|
|
|
gmc->use_autoh = cf->use_autoh;
|
|
|
|
zone = e_container_zone_number_get(gmc->zone->container, cf->zone);
|
|
|
|
if (zone) gmc->zone = zone;
|
|
|
|
if (gmc->use_autow)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->autow;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
}
|
|
|
|
if (gmc->use_autoh)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->autoh;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
}
|
|
|
|
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
|
|
|
|
if (gmc->h > gmc->zone->h) gmc->h = gmc->zone->h;
|
2005-05-18 19:46:50 -07:00
|
|
|
// gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
// gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
if (cf->pos.w != cf->w)
|
|
|
|
gmc->x = gmc->zone->x + ((cf->pos.x * (gmc->zone->w - gmc->w)) / (cf->pos.w - gmc->w));
|
|
|
|
else
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
if (cf->pos.h != cf->h)
|
|
|
|
gmc->y = gmc->zone->y + ((cf->pos.y * (gmc->zone->h - gmc->h)) / (cf->pos.h - gmc->h));
|
|
|
|
else
|
|
|
|
gmc->y = gmc->zone->y;
|
2005-01-21 07:45:56 -08:00
|
|
|
free(cf);
|
|
|
|
}
|
|
|
|
_e_gadman_client_overlap_deny(gmc);
|
|
|
|
e_object_ref(E_OBJECT(gmc));
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-21 07:45:56 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_ZONE);
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-21 07:45:56 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_EDGE);
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-21 07:45:56 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
|
|
|
e_object_unref(E_OBJECT(gmc));
|
2005-04-04 20:13:08 -07:00
|
|
|
|
|
|
|
if (gmc->gadman->mode == E_GADMAN_MODE_EDIT)
|
|
|
|
_e_gadman_client_edit_begin(gmc);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-17 00:54:37 -08:00
|
|
|
if (gmc->domain) free(gmc->domain);
|
|
|
|
gmc->domain = strdup(domain);
|
|
|
|
gmc->instance = instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_zone_set(E_Gadman_Client *gmc, E_Zone *zone)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
if (zone == gmc->zone) return;
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc->zone = zone;
|
2005-01-21 07:45:56 -08:00
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
e_object_ref(E_OBJECT(gmc));
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-21 07:45:56 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_ZONE);
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-21 07:45:56 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
|
|
|
e_object_unref(E_OBJECT(gmc));
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_policy_set(E_Gadman_Client *gmc, E_Gadman_Policy pol)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->policy = pol;
|
2005-02-13 02:46:04 -08:00
|
|
|
|
|
|
|
if (gmc->control_object)
|
|
|
|
{
|
|
|
|
if (gmc->policy & E_GADMAN_POLICY_HSIZE)
|
|
|
|
edje_object_signal_emit(gmc->control_object, "hsize", "on");
|
|
|
|
else
|
|
|
|
edje_object_signal_emit(gmc->control_object, "hsize", "off");
|
|
|
|
if (gmc->policy & E_GADMAN_POLICY_VSIZE)
|
|
|
|
edje_object_signal_emit(gmc->control_object, "vsize", "on");
|
|
|
|
else
|
|
|
|
edje_object_signal_emit(gmc->control_object, "vsize", "off");
|
|
|
|
if (gmc->policy & (E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE))
|
|
|
|
edje_object_signal_emit(gmc->control_object, "move", "on");
|
|
|
|
else
|
|
|
|
edje_object_signal_emit(gmc->control_object, "move", "off");
|
|
|
|
}
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
if ((gmc->minw == minw) && (gmc->minh == minh)) return;
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->minw = minw;
|
|
|
|
gmc->minh = minh;
|
2005-01-21 07:45:56 -08:00
|
|
|
if (gmc->minw > gmc->w)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->minw;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
}
|
|
|
|
if (gmc->minh > gmc->h)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->minh;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
}
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
if ((gmc->maxw == maxw) && (gmc->maxh == maxh)) return;
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->maxw = maxw;
|
|
|
|
gmc->maxh = maxh;
|
2005-01-21 07:45:56 -08:00
|
|
|
if (gmc->maxw < gmc->w)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->maxw;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
}
|
|
|
|
if (gmc->maxh < gmc->h)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->maxh;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
}
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_align_set(E_Gadman_Client *gmc, double xalign, double yalign)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
if ((gmc->ax == xalign) && (gmc->ay == yalign)) return;
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->ax = xalign;
|
|
|
|
gmc->ay = yalign;
|
2005-01-21 07:45:56 -08:00
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-15 07:21:57 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->mina = mina;
|
|
|
|
gmc->maxa = maxa;
|
|
|
|
}
|
|
|
|
|
2005-01-18 07:40:54 -08:00
|
|
|
void
|
|
|
|
e_gadman_client_auto_size_set(E_Gadman_Client *gmc, Evas_Coord autow, Evas_Coord autoh)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-18 07:40:54 -08:00
|
|
|
gmc->autow = autow;
|
|
|
|
gmc->autoh = autoh;
|
2005-01-21 07:45:56 -08:00
|
|
|
if (gmc->use_autow)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->autow;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
}
|
|
|
|
if (gmc->use_autoh)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->autoh;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
}
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
e_gadman_client_edge_set(E_Gadman_Client *gmc, E_Gadman_Edge edge)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
gmc->edge = edge;
|
|
|
|
}
|
|
|
|
|
|
|
|
E_Gadman_Edge
|
|
|
|
e_gadman_client_edge_get(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK_RETURN(gmc, E_GADMAN_EDGE_TOP);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK_RETURN(gmc, E_GADMAN_CLIENT_TYPE, E_GADMAN_EDGE_TOP);
|
2005-01-21 07:45:56 -08:00
|
|
|
return gmc->edge;
|
2005-01-18 07:40:54 -08:00
|
|
|
}
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
void
|
|
|
|
e_gadman_client_geometry_get(E_Gadman_Client *gmc, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-15 07:21:57 -08:00
|
|
|
if (x) *x = gmc->x;
|
|
|
|
if (y) *y = gmc->y;
|
|
|
|
if (w) *w = gmc->w;
|
|
|
|
if (h) *h = gmc->h;
|
|
|
|
}
|
|
|
|
|
2005-01-21 07:45:56 -08:00
|
|
|
void
|
|
|
|
e_gadman_client_resize(E_Gadman_Client *gmc, Evas_Coord w, Evas_Coord h)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-21 07:45:56 -08:00
|
|
|
if ((gmc->w == w) && (gmc->h == h)) return;
|
|
|
|
gmc->w = w;
|
|
|
|
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) * gmc->ax);
|
|
|
|
gmc->h = h;
|
|
|
|
if (gmc->h > gmc->zone->h) gmc->h = gmc->zone->h;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) * gmc->ay);
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-02-14 03:59:42 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
2005-02-21 08:16:40 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-21 07:45:56 -08:00
|
|
|
}
|
|
|
|
|
2005-01-15 07:21:57 -08:00
|
|
|
void
|
|
|
|
e_gadman_client_change_func_set(E_Gadman_Client *gmc, void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change), void *data)
|
|
|
|
{
|
|
|
|
E_OBJECT_CHECK(gmc);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK(gmc, E_GADMAN_CLIENT_TYPE);
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->func = func;
|
|
|
|
gmc->data = data;
|
|
|
|
}
|
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
E_Menu *
|
|
|
|
e_gadman_client_menu_new(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
E_Menu *m;
|
|
|
|
E_Menu_Item *mi;
|
2005-02-16 03:27:01 -08:00
|
|
|
int disallow, seperator;
|
2005-05-25 01:08:44 -07:00
|
|
|
char *s;
|
2005-01-17 08:18:34 -08:00
|
|
|
|
|
|
|
E_OBJECT_CHECK_RETURN(gmc, NULL);
|
2005-01-21 22:58:34 -08:00
|
|
|
E_OBJECT_TYPE_CHECK_RETURN(gmc, E_GADMAN_CLIENT_TYPE, NULL);
|
2005-01-17 08:18:34 -08:00
|
|
|
m = e_menu_new();
|
|
|
|
|
|
|
|
gmc->menu = m;
|
|
|
|
|
2005-02-16 03:27:01 -08:00
|
|
|
seperator = 0;
|
2005-01-17 08:18:34 -08:00
|
|
|
if (gmc->policy & E_GADMAN_POLICY_HSIZE)
|
|
|
|
{
|
2005-02-16 03:27:01 -08:00
|
|
|
seperator = 1;
|
2005-01-18 07:40:54 -08:00
|
|
|
if (gmc->autow > 0)
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Automatic Width"));
|
2005-01-18 07:40:54 -08:00
|
|
|
e_menu_item_check_set(mi, 1);
|
|
|
|
e_menu_item_toggle_set(mi, gmc->use_autow);
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "auto_width");
|
|
|
|
IF_FREE(s);
|
2005-01-18 07:40:54 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_auto_width, gmc);
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Half Screen Width"));
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "half_width");
|
|
|
|
IF_FREE(s);
|
2005-01-17 08:18:34 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_half_width, gmc);
|
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Full Screen Width"));
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "full_width");
|
|
|
|
IF_FREE(s);
|
2005-01-17 08:18:34 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_full_width, gmc);
|
|
|
|
}
|
2005-02-16 03:27:01 -08:00
|
|
|
disallow = (gmc->policy & E_GADMAN_POLICY_EDGES)
|
|
|
|
&& ((gmc->edge == E_GADMAN_EDGE_LEFT) || (gmc->edge == E_GADMAN_EDGE_RIGHT));
|
|
|
|
if ((gmc->policy & E_GADMAN_POLICY_HMOVE) && !(disallow))
|
2005-01-17 08:18:34 -08:00
|
|
|
{
|
2005-02-16 03:27:01 -08:00
|
|
|
seperator = 1;
|
2005-01-17 08:18:34 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Center Horizontally"));
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "center_horiz");
|
|
|
|
IF_FREE(s);
|
2005-01-17 08:18:34 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_center_horiz, gmc);
|
|
|
|
}
|
2005-02-16 03:27:01 -08:00
|
|
|
if (seperator)
|
2005-01-18 07:40:54 -08:00
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
}
|
2005-02-16 03:27:01 -08:00
|
|
|
seperator = 0;
|
2005-01-17 08:18:34 -08:00
|
|
|
if (gmc->policy & E_GADMAN_POLICY_VSIZE)
|
|
|
|
{
|
2005-02-16 03:27:01 -08:00
|
|
|
seperator = 1;
|
2005-01-18 07:40:54 -08:00
|
|
|
if (gmc->autoh > 0)
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Automatic Height"));
|
2005-01-18 07:40:54 -08:00
|
|
|
e_menu_item_check_set(mi, 1);
|
|
|
|
e_menu_item_toggle_set(mi, gmc->use_autoh);
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj"),
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "auto_height");
|
|
|
|
IF_FREE(s);
|
2005-01-18 07:40:54 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_auto_height, gmc);
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Half Screen Height"));
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "half_height");
|
|
|
|
IF_FREE(s);
|
2005-01-17 08:18:34 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_half_height, gmc);
|
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Full Screen Height"));
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "full_height");
|
2005-01-17 08:18:34 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_full_height, gmc);
|
|
|
|
}
|
2005-02-16 03:27:01 -08:00
|
|
|
disallow = (gmc->policy & E_GADMAN_POLICY_EDGES)
|
|
|
|
&& ((gmc->edge == E_GADMAN_EDGE_TOP) || (gmc->edge == E_GADMAN_EDGE_BOTTOM));
|
|
|
|
if ((gmc->policy & E_GADMAN_POLICY_VMOVE) && !(disallow))
|
2005-01-17 08:18:34 -08:00
|
|
|
{
|
2005-02-16 03:27:01 -08:00
|
|
|
seperator = 1;
|
2005-01-17 08:18:34 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("Center Vertically"));
|
2005-05-25 01:08:44 -07:00
|
|
|
s = e_path_find(path_icons, "default.edj");
|
|
|
|
e_menu_item_icon_edje_set(mi, s, "center_vert");
|
|
|
|
IF_FREE(s);
|
2005-01-17 08:18:34 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_center_vert, gmc);
|
|
|
|
}
|
2005-02-16 03:27:01 -08:00
|
|
|
if (seperator)
|
|
|
|
{
|
|
|
|
mi = e_menu_item_new(m);
|
|
|
|
e_menu_item_separator_set(mi, 1);
|
|
|
|
}
|
2005-01-24 07:22:47 -08:00
|
|
|
mi = e_menu_item_new(m);
|
2005-04-11 13:25:52 -07:00
|
|
|
e_menu_item_label_set(mi, _("End Edit Mode"));
|
2005-01-24 07:22:47 -08:00
|
|
|
e_menu_item_callback_set(mi, _e_gadman_cb_end_edit_mode, gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
|
|
|
|
return m;
|
|
|
|
}
|
|
|
|
|
2005-01-15 01:50:26 -08:00
|
|
|
/* local subsystem functions */
|
|
|
|
static void
|
|
|
|
_e_gadman_free(E_Gadman *gm)
|
|
|
|
{
|
|
|
|
free(gm);
|
|
|
|
}
|
2005-01-15 07:21:57 -08:00
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_client_free(E_Gadman_Client *gmc)
|
|
|
|
{
|
2005-01-17 08:18:34 -08:00
|
|
|
if (gmc->menu) e_object_del(E_OBJECT(gmc->menu));
|
|
|
|
if (gmc->control_object) evas_object_del(gmc->control_object);
|
|
|
|
if (gmc->event_object) evas_object_del(gmc->event_object);
|
2005-01-15 07:21:57 -08:00
|
|
|
gmc->gadman->clients = evas_list_remove(gmc->gadman->clients, gmc);
|
|
|
|
if (gmc->domain) free(gmc->domain);
|
|
|
|
free(gmc);
|
|
|
|
}
|
2005-01-17 00:54:37 -08:00
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_client_edit_begin(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
gmc->control_object = edje_object_add(gmc->gadman->container->bg_evas);
|
|
|
|
evas_object_layer_set(gmc->control_object, 100);
|
|
|
|
evas_object_move(gmc->control_object, gmc->x, gmc->y);
|
|
|
|
evas_object_resize(gmc->control_object, gmc->w, gmc->h);
|
2005-04-22 22:16:25 -07:00
|
|
|
e_theme_edje_object_set(gmc->control_object, "base/theme/gadman",
|
|
|
|
"gadman/control");
|
2005-01-17 02:05:15 -08:00
|
|
|
edje_object_signal_callback_add(gmc->control_object, "move_start", "",
|
2005-01-17 00:54:37 -08:00
|
|
|
_e_gadman_cb_signal_move_start, gmc);
|
2005-01-17 02:05:15 -08:00
|
|
|
edje_object_signal_callback_add(gmc->control_object, "move_stop", "",
|
2005-01-17 00:54:37 -08:00
|
|
|
_e_gadman_cb_signal_move_stop, gmc);
|
2005-01-17 02:05:15 -08:00
|
|
|
edje_object_signal_callback_add(gmc->control_object, "move_go", "",
|
2005-01-17 00:54:37 -08:00
|
|
|
_e_gadman_cb_signal_move_go, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_start", "left",
|
|
|
|
_e_gadman_cb_signal_resize_left_start, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "left",
|
|
|
|
_e_gadman_cb_signal_resize_left_stop, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_go", "left",
|
|
|
|
_e_gadman_cb_signal_resize_left_go, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_start", "right",
|
|
|
|
_e_gadman_cb_signal_resize_right_start, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "right",
|
|
|
|
_e_gadman_cb_signal_resize_right_stop, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_go", "right",
|
|
|
|
_e_gadman_cb_signal_resize_right_go, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_start", "up",
|
|
|
|
_e_gadman_cb_signal_resize_up_start, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "up",
|
|
|
|
_e_gadman_cb_signal_resize_up_stop, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_go", "up",
|
|
|
|
_e_gadman_cb_signal_resize_up_go, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_start", "down",
|
|
|
|
_e_gadman_cb_signal_resize_down_start, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "down",
|
|
|
|
_e_gadman_cb_signal_resize_down_stop, gmc);
|
|
|
|
edje_object_signal_callback_add(gmc->control_object, "resize_go", "down",
|
|
|
|
_e_gadman_cb_signal_resize_down_go, gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
gmc->event_object = evas_object_rectangle_add(gmc->gadman->container->bg_evas);
|
|
|
|
evas_object_color_set(gmc->event_object, 0, 0, 0, 0);
|
|
|
|
evas_object_repeat_events_set(gmc->event_object, 1);
|
|
|
|
evas_object_layer_set(gmc->event_object, 100);
|
|
|
|
evas_object_move(gmc->event_object, gmc->x, gmc->y);
|
|
|
|
evas_object_resize(gmc->event_object, gmc->w, gmc->h);
|
|
|
|
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_DOWN, _e_gadman_cb_mouse_down, gmc);
|
|
|
|
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_UP, _e_gadman_cb_mouse_up, gmc);
|
|
|
|
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_IN, _e_gadman_cb_mouse_in, gmc);
|
|
|
|
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_OUT, _e_gadman_cb_mouse_out, gmc);
|
2005-01-18 07:40:54 -08:00
|
|
|
|
|
|
|
if (gmc->policy & E_GADMAN_POLICY_HSIZE)
|
|
|
|
edje_object_signal_emit(gmc->control_object, "hsize", "on");
|
|
|
|
else
|
|
|
|
edje_object_signal_emit(gmc->control_object, "hsize", "off");
|
|
|
|
if (gmc->policy & E_GADMAN_POLICY_VSIZE)
|
|
|
|
edje_object_signal_emit(gmc->control_object, "vsize", "on");
|
|
|
|
else
|
|
|
|
edje_object_signal_emit(gmc->control_object, "vsize", "off");
|
|
|
|
if (gmc->policy & (E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE))
|
|
|
|
edje_object_signal_emit(gmc->control_object, "move", "on");
|
|
|
|
else
|
|
|
|
edje_object_signal_emit(gmc->control_object, "move", "off");
|
|
|
|
|
2005-01-20 05:42:51 -08:00
|
|
|
evas_object_clip_set(gmc->event_object, gmc->zone->bg_clip_object);
|
|
|
|
evas_object_clip_set(gmc->control_object, gmc->zone->bg_clip_object);
|
2005-01-17 08:18:34 -08:00
|
|
|
evas_object_show(gmc->event_object);
|
2005-01-17 00:54:37 -08:00
|
|
|
evas_object_show(gmc->control_object);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_client_edit_end(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
evas_object_del(gmc->control_object);
|
2005-01-17 08:18:34 -08:00
|
|
|
gmc->control_object = NULL;
|
|
|
|
evas_object_del(gmc->event_object);
|
|
|
|
gmc->event_object = NULL;
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
2005-01-21 07:45:56 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_client_overlap_deny(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
Evas_List *l;
|
|
|
|
Evas_Coord ox, oy;
|
|
|
|
int ok = 0;
|
|
|
|
int iterate = 0;
|
|
|
|
|
|
|
|
ox = gmc->x;
|
|
|
|
oy = gmc->y;
|
|
|
|
ok = 0;
|
2005-01-27 07:17:09 -08:00
|
|
|
if ((gmc->policy & 0xff) == E_GADMAN_POLICY_EDGES)
|
|
|
|
{
|
|
|
|
if ((gmc->edge == E_GADMAN_EDGE_LEFT) ||
|
|
|
|
(gmc->edge == E_GADMAN_EDGE_RIGHT))
|
|
|
|
{
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
ok = 0;
|
|
|
|
gmc->y = gmc2->y + gmc2->h;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ok) return;
|
|
|
|
if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
|
|
|
ok = 1;
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
ok = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ok)
|
|
|
|
{
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
2005-03-13 20:27:03 -08:00
|
|
|
gmc2 = l->data;
|
2005-01-27 07:17:09 -08:00
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
gmc->y = gmc2->y - gmc->h;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
}
|
|
|
|
else if ((gmc->edge == E_GADMAN_EDGE_TOP) ||
|
|
|
|
(gmc->edge == E_GADMAN_EDGE_BOTTOM))
|
|
|
|
{
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
ok = 0;
|
|
|
|
gmc->x = gmc2->x + gmc2->w;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ok) return;
|
|
|
|
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
ok = 1;
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
ok = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (ok)
|
|
|
|
{
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
2005-03-13 20:27:03 -08:00
|
|
|
gmc2 = l->data;
|
2005-01-27 07:17:09 -08:00
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
gmc->x = gmc2->x - gmc->w;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
}
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
return;
|
|
|
|
}
|
2005-01-21 07:45:56 -08:00
|
|
|
while ((!ok) && (iterate < 1000))
|
|
|
|
{
|
2005-01-27 07:17:09 -08:00
|
|
|
ok = 1;
|
2005-01-21 07:45:56 -08:00
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
2005-01-22 04:07:10 -08:00
|
|
|
if (gmc != gmc2)
|
2005-01-21 07:45:56 -08:00
|
|
|
{
|
2005-01-22 04:07:10 -08:00
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
2005-01-27 07:17:09 -08:00
|
|
|
ok = 0;
|
2005-01-22 04:07:10 -08:00
|
|
|
gmc->x = gmc2->x + gmc2->w;
|
|
|
|
}
|
2005-01-21 07:45:56 -08:00
|
|
|
}
|
|
|
|
}
|
2005-01-27 07:17:09 -08:00
|
|
|
if (ok) break;
|
2005-01-21 07:45:56 -08:00
|
|
|
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
ok = 1;
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
2005-01-22 04:07:10 -08:00
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
ok = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2005-01-21 07:45:56 -08:00
|
|
|
}
|
|
|
|
if (ok) break;
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
2005-03-13 20:27:03 -08:00
|
|
|
gmc2 = l->data;
|
2005-01-22 04:07:10 -08:00
|
|
|
if (gmc != gmc2)
|
2005-01-21 07:45:56 -08:00
|
|
|
{
|
2005-01-22 04:07:10 -08:00
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
gmc->x = gmc2->x - gmc->w;
|
|
|
|
}
|
2005-01-21 07:45:56 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
ok = 1;
|
|
|
|
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc2;
|
|
|
|
|
|
|
|
gmc2 = l->data;
|
2005-01-22 04:07:10 -08:00
|
|
|
if (gmc != gmc2)
|
|
|
|
{
|
|
|
|
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
|
|
|
|
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
|
|
|
|
{
|
|
|
|
ok = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
2005-01-21 07:45:56 -08:00
|
|
|
}
|
|
|
|
if (ok) break;
|
|
|
|
if (gmc->y > (gmc->zone->y + (gmc->zone->h / 2)))
|
|
|
|
gmc->y -= 8;
|
|
|
|
else
|
|
|
|
gmc->y += 8;
|
|
|
|
if (oy < (gmc->zone->y + (gmc->zone->h / 2)))
|
|
|
|
{
|
|
|
|
if ((gmc->y - oy) > (gmc->zone->h / 3))
|
|
|
|
{
|
|
|
|
gmc->x = ox;
|
|
|
|
gmc->y = oy;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if ((oy - gmc->y) > (gmc->zone->h / 3))
|
|
|
|
{
|
|
|
|
gmc->x = ox;
|
|
|
|
gmc->y = oy;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iterate++;
|
|
|
|
}
|
2005-01-21 21:21:48 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-21 07:45:56 -08:00
|
|
|
}
|
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
static void
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_down_store(E_Gadman_Client *gmc)
|
2005-01-17 00:54:37 -08:00
|
|
|
{
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->down_store_x = gmc->x;
|
|
|
|
gmc->down_store_y = gmc->y;
|
|
|
|
gmc->down_store_w = gmc->w;
|
|
|
|
gmc->down_store_h = gmc->h;
|
|
|
|
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &gmc->down_x, &gmc->down_y);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
static int
|
|
|
|
_e_gadman_client_is_being_modified(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
if ((gmc->moving) ||
|
|
|
|
(gmc->resizing_l) || (gmc->resizing_r) ||
|
|
|
|
(gmc->resizing_u) || (gmc->resizing_d))
|
|
|
|
return 1;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_client_geometry_to_align(E_Gadman_Client *gmc)
|
|
|
|
{
|
|
|
|
if (gmc->w != gmc->zone->w)
|
2005-04-05 07:47:49 -07:00
|
|
|
gmc->ax = (double)(gmc->x - gmc->zone->x) / (double)(gmc->zone->w - gmc->w);
|
2005-01-17 08:18:34 -08:00
|
|
|
else
|
|
|
|
gmc->ax = 0.0;
|
|
|
|
if (gmc->h != gmc->zone->h)
|
2005-04-05 07:47:49 -07:00
|
|
|
gmc->ay = (double)(gmc->y - gmc->zone->y) / (double)(gmc->zone->h - gmc->h);
|
2005-01-17 08:18:34 -08:00
|
|
|
else
|
|
|
|
gmc->ay = 0.0;
|
|
|
|
}
|
|
|
|
|
2005-01-18 07:40:54 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_client_aspect_enforce(E_Gadman_Client *gmc, double cx, double cy, int use_horiz)
|
|
|
|
{
|
|
|
|
Evas_Coord neww, newh;
|
|
|
|
double aspect;
|
|
|
|
int change = 0;
|
|
|
|
|
|
|
|
if (gmc->h > 0)
|
|
|
|
aspect = (double)gmc->w / (double) gmc->h;
|
|
|
|
else
|
|
|
|
aspect = 0.0;
|
|
|
|
neww = gmc->w;
|
|
|
|
newh = gmc->h;
|
|
|
|
if (aspect > gmc->maxa)
|
|
|
|
{
|
|
|
|
if (use_horiz)
|
|
|
|
newh = gmc->w / gmc->maxa;
|
|
|
|
else
|
|
|
|
neww = gmc->h * gmc->mina;
|
|
|
|
change = 1;
|
|
|
|
}
|
|
|
|
else if (aspect < gmc->mina)
|
|
|
|
{
|
|
|
|
if (use_horiz)
|
|
|
|
newh = gmc->w / gmc->maxa;
|
|
|
|
else
|
|
|
|
neww = gmc->h * gmc->mina;
|
|
|
|
change = 1;
|
|
|
|
}
|
|
|
|
if (change)
|
|
|
|
{
|
|
|
|
gmc->x = gmc->x + ((gmc->w - neww) * cx);
|
|
|
|
gmc->y = gmc->y + ((gmc->h - newh) * cy);
|
|
|
|
gmc->w = neww;
|
|
|
|
gmc->h = newh;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_client_geometry_apply(E_Gadman_Client *gmc)
|
|
|
|
{
|
2005-05-05 23:22:22 -07:00
|
|
|
if (gmc->event_object)
|
|
|
|
{
|
|
|
|
evas_object_move(gmc->event_object, gmc->x, gmc->y);
|
|
|
|
evas_object_resize(gmc->event_object, gmc->w, gmc->h);
|
|
|
|
}
|
|
|
|
if (gmc->control_object)
|
|
|
|
{
|
|
|
|
evas_object_move(gmc->control_object, gmc->x, gmc->y);
|
|
|
|
evas_object_resize(gmc->control_object, gmc->w, gmc->h);
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
2005-01-20 05:42:51 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_client_callback_call(E_Gadman_Client *gmc, E_Gadman_Change change)
|
|
|
|
{
|
|
|
|
if (gmc->func) gmc->func(gmc->data, gmc, change);
|
|
|
|
}
|
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Down *ev;
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
ev = event_info;
|
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
/* FIXME: how do we prevent this if you don't have a right mouse button */
|
2005-01-17 08:18:34 -08:00
|
|
|
/* maybe make this menu available in he modules menu? */
|
|
|
|
if (ev->button == 3)
|
|
|
|
{
|
|
|
|
E_Menu *m;
|
|
|
|
|
|
|
|
m = e_gadman_client_menu_new(gmc);
|
|
|
|
if (m)
|
|
|
|
{
|
|
|
|
e_menu_post_deactivate_callback_set(m, _e_gadman_cb_menu_end, gmc);
|
|
|
|
e_menu_activate_mouse(m, gmc->zone, ev->output.x, ev->output.y, 1, 1,
|
|
|
|
E_MENU_POP_DIRECTION_DOWN);
|
|
|
|
e_util_container_fake_mouse_up_all_later(gmc->zone->container);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Up *ev;
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
ev = event_info;
|
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_In *ev;
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
ev = event_info;
|
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
edje_object_signal_emit(gmc->control_object, "active", "");
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event_info)
|
|
|
|
{
|
|
|
|
Evas_Event_Mouse_Out *ev;
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
ev = event_info;
|
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
edje_object_signal_emit(gmc->control_object, "inactive", "");
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
gmc = data;
|
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
|
|
|
_e_gadman_client_down_store(gmc);
|
|
|
|
gmc->moving = 1;
|
2005-01-19 07:39:36 -08:00
|
|
|
evas_object_raise(gmc->control_object);
|
|
|
|
evas_object_raise(gmc->event_object);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_RAISE);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_move_begin(gmc->zone, gmc->x, gmc->y);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->moving = 0;
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-17 02:05:15 -08:00
|
|
|
e_gadman_client_save(gmc);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_move_end();
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 07:44:23 -07:00
|
|
|
Evas_Coord x, y;
|
|
|
|
int new_edge = 0;
|
|
|
|
int nx, ny, nxx, nyy;
|
|
|
|
int new_zone = 0;
|
|
|
|
Evas_List *skiplist = NULL;
|
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
if (!gmc->moving) return;
|
|
|
|
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
|
2005-01-20 05:42:51 -08:00
|
|
|
nxx = nx = gmc->down_store_x + (x - gmc->down_x);
|
|
|
|
nyy = ny = gmc->down_store_y + (y - gmc->down_y);
|
|
|
|
skiplist = evas_list_append(skiplist, gmc);
|
|
|
|
e_resist_container_gadman_position(gmc->zone->container, skiplist,
|
|
|
|
gmc->x, gmc->y, gmc->w, gmc->h,
|
|
|
|
nx, ny, gmc->w, gmc->h,
|
|
|
|
&nxx, &nyy);
|
|
|
|
evas_list_free(skiplist);
|
|
|
|
x += (nxx - nx);
|
|
|
|
y += (nyy - ny);
|
2005-01-19 06:31:40 -08:00
|
|
|
if ((gmc->policy & 0xff) == E_GADMAN_POLICY_EDGES)
|
|
|
|
{
|
|
|
|
double xr, yr;
|
|
|
|
E_Gadman_Edge ne;
|
|
|
|
|
|
|
|
ne = gmc->edge;
|
2005-01-19 07:39:36 -08:00
|
|
|
|
|
|
|
if (!(gmc->policy & E_GADMAN_POLICY_FIXED_ZONE))
|
|
|
|
{
|
|
|
|
E_Zone *nz;
|
|
|
|
|
|
|
|
nz = e_container_zone_at_point_get(gmc->zone->container, x, y);
|
2005-01-19 07:55:27 -08:00
|
|
|
if ((nz) && (nz != gmc->zone))
|
2005-01-19 07:39:36 -08:00
|
|
|
{
|
|
|
|
gmc->zone = nz;
|
|
|
|
new_zone = 1;
|
2005-01-20 05:42:51 -08:00
|
|
|
evas_object_clip_set(gmc->event_object, gmc->zone->bg_clip_object);
|
|
|
|
evas_object_clip_set(gmc->control_object, gmc->zone->bg_clip_object);
|
2005-01-19 07:39:36 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-01-19 06:31:40 -08:00
|
|
|
xr = (double)(x - gmc->zone->x) / (double)gmc->zone->w;
|
|
|
|
yr = (double)(y - gmc->zone->y) / (double)gmc->zone->h;
|
|
|
|
|
|
|
|
if ((xr + yr) <= 1.0) /* top or left */
|
|
|
|
{
|
|
|
|
if (((1.0 - yr) + xr) <= 1.0) ne = E_GADMAN_EDGE_LEFT;
|
|
|
|
else ne = E_GADMAN_EDGE_TOP;
|
|
|
|
}
|
|
|
|
else /* bottom or right */
|
|
|
|
{
|
|
|
|
if (((1.0 - yr) + xr) <= 1.0) ne = E_GADMAN_EDGE_BOTTOM;
|
|
|
|
else ne = E_GADMAN_EDGE_RIGHT;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (ne != gmc->edge)
|
|
|
|
{
|
|
|
|
gmc->edge = ne;
|
|
|
|
new_edge = 1;
|
|
|
|
}
|
|
|
|
if (gmc->edge == E_GADMAN_EDGE_LEFT)
|
|
|
|
{
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
gmc->y = gmc->down_store_y + (y - gmc->down_y);
|
2005-01-20 05:42:51 -08:00
|
|
|
if (gmc->h > gmc->zone->h) gmc->h = gmc->zone->h;
|
2005-01-19 06:31:40 -08:00
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
|
|
|
}
|
|
|
|
else if (gmc->edge == E_GADMAN_EDGE_RIGHT)
|
|
|
|
{
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
gmc->y = gmc->down_store_y + (y - gmc->down_y);
|
2005-01-20 05:42:51 -08:00
|
|
|
if (gmc->h > gmc->zone->h) gmc->h = gmc->zone->h;
|
2005-01-19 06:31:40 -08:00
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
|
|
|
}
|
|
|
|
else if (gmc->edge == E_GADMAN_EDGE_TOP)
|
|
|
|
{
|
|
|
|
gmc->x = gmc->down_store_x + (x - gmc->down_x);
|
|
|
|
gmc->y = gmc->zone->y;
|
2005-01-20 05:42:51 -08:00
|
|
|
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
|
2005-01-19 06:31:40 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
}
|
|
|
|
else if (gmc->edge == E_GADMAN_EDGE_BOTTOM)
|
|
|
|
{
|
|
|
|
gmc->x = gmc->down_store_x + (x - gmc->down_x);
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-20 05:42:51 -08:00
|
|
|
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
|
2005-01-19 06:31:40 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
}
|
|
|
|
}
|
2005-01-18 07:40:54 -08:00
|
|
|
else
|
2005-01-19 06:31:40 -08:00
|
|
|
{
|
|
|
|
if (gmc->policy & E_GADMAN_POLICY_HMOVE)
|
|
|
|
gmc->x = gmc->down_store_x + (x - gmc->down_x);
|
|
|
|
else
|
|
|
|
gmc->x = gmc->down_store_x;
|
|
|
|
if (gmc->policy & E_GADMAN_POLICY_VMOVE)
|
|
|
|
gmc->y = gmc->down_store_y + (y - gmc->down_y);
|
|
|
|
else
|
|
|
|
gmc->y = gmc->down_store_y;
|
|
|
|
gmc->w = gmc->down_store_w;
|
|
|
|
gmc->h = gmc->down_store_h;
|
2005-01-19 07:39:36 -08:00
|
|
|
if (!(gmc->policy & E_GADMAN_POLICY_FIXED_ZONE))
|
|
|
|
{
|
|
|
|
E_Zone *nz;
|
|
|
|
|
|
|
|
nz = e_container_zone_at_point_get(gmc->zone->container, x, y);
|
2005-01-19 07:55:27 -08:00
|
|
|
if ((nz) && (nz != gmc->zone))
|
2005-01-19 07:39:36 -08:00
|
|
|
{
|
|
|
|
gmc->zone = nz;
|
|
|
|
new_zone = 1;
|
2005-01-20 07:35:17 -08:00
|
|
|
evas_object_clip_set(gmc->event_object, gmc->zone->bg_clip_object);
|
|
|
|
evas_object_clip_set(gmc->control_object, gmc->zone->bg_clip_object);
|
2005-01-19 07:39:36 -08:00
|
|
|
}
|
|
|
|
}
|
2005-01-20 05:42:51 -08:00
|
|
|
if (gmc->h > gmc->zone->h) gmc->h = gmc->zone->h;
|
|
|
|
if (gmc->w > gmc->zone->w) gmc->w = gmc->zone->w;
|
2005-01-19 06:31:40 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
|
|
|
}
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
e_object_ref(E_OBJECT(gmc));
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-19 06:31:40 -08:00
|
|
|
{
|
2005-01-20 05:42:51 -08:00
|
|
|
if (new_zone)
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_ZONE);
|
2005-01-19 06:31:40 -08:00
|
|
|
}
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-19 06:31:40 -08:00
|
|
|
{
|
2005-01-20 05:42:51 -08:00
|
|
|
if (new_edge)
|
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_EDGE);
|
2005-01-19 06:31:40 -08:00
|
|
|
}
|
2005-05-11 06:13:43 -07:00
|
|
|
if (!e_object_is_del(E_OBJECT(gmc)))
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
|
|
|
e_object_unref(E_OBJECT(gmc));
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_move_update(gmc->x, gmc->y);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc = data;
|
2005-01-17 08:18:34 -08:00
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
|
|
|
_e_gadman_client_down_store(gmc);
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autow = 0;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_l = 1;
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_begin(gmc->zone, gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_left_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_l = 0;
|
|
|
|
e_gadman_client_save(gmc);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_end();
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 07:44:23 -07:00
|
|
|
Evas_Coord x, y;
|
2005-01-17 00:54:37 -08:00
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
if (!gmc->resizing_l) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
if (!(gmc->policy & E_GADMAN_POLICY_HSIZE)) return;
|
2005-01-17 02:05:15 -08:00
|
|
|
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
|
|
|
|
gmc->x = gmc->down_store_x + (x - gmc->down_x);
|
|
|
|
gmc->y = gmc->down_store_y;
|
|
|
|
gmc->w = gmc->down_store_w - (x - gmc->down_x);
|
|
|
|
gmc->h = gmc->down_store_h;
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to zone left edge */
|
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
{
|
|
|
|
gmc->w = (gmc->down_store_x + gmc->down_store_w) - gmc->zone->x;
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
}
|
|
|
|
/* limit to min size */
|
|
|
|
if (gmc->w < gmc->minw)
|
|
|
|
{
|
2005-01-17 08:18:34 -08:00
|
|
|
gmc->x = (gmc->down_store_x + gmc->down_store_w) - gmc->minw;
|
2005-01-17 02:26:17 -08:00
|
|
|
gmc->w = gmc->minw;
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
/* if we are atthe edge or beyond. assyme we want to be all the way there */
|
|
|
|
if (x <= gmc->zone->x)
|
|
|
|
{
|
|
|
|
gmc->w = (gmc->x + gmc->w) - gmc->zone->x;
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
}
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to max size */
|
|
|
|
if (gmc->maxw > 0)
|
|
|
|
{
|
2005-01-21 07:45:56 -08:00
|
|
|
if (gmc->w > gmc->maxw)
|
2005-01-17 02:26:17 -08:00
|
|
|
{
|
|
|
|
gmc->x -= (gmc->maxw - gmc->w);
|
|
|
|
gmc->w = gmc->maxw;
|
|
|
|
}
|
|
|
|
}
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 1.0, 0.5, 1);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-19 06:31:40 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_update(gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc = data;
|
2005-01-17 08:18:34 -08:00
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
|
|
|
_e_gadman_client_down_store(gmc);
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autow = 0;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_r = 1;
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_begin(gmc->zone, gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_r = 0;
|
|
|
|
e_gadman_client_save(gmc);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_end();
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
Evas_Coord x, y;
|
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
if (!gmc->resizing_r) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
if (!(gmc->policy & E_GADMAN_POLICY_HSIZE)) return;
|
2005-01-17 02:05:15 -08:00
|
|
|
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
|
|
|
|
gmc->x = gmc->down_store_x;
|
|
|
|
gmc->y = gmc->down_store_y;
|
|
|
|
gmc->w = gmc->down_store_w + (x - gmc->down_x);
|
|
|
|
gmc->h = gmc->down_store_h;
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to zone right edge */
|
|
|
|
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
{
|
|
|
|
gmc->w = (gmc->zone->x + gmc->zone->w) - gmc->x;
|
|
|
|
}
|
|
|
|
/* limit to min size */
|
|
|
|
if (gmc->w < gmc->minw)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->minw;
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
/* if we are atthe edge or beyond. assyme we want to be all the way there */
|
|
|
|
if (x >= (gmc->zone->x + gmc->zone->w - 1))
|
|
|
|
{
|
|
|
|
gmc->w = gmc->zone->x + gmc->zone->w - gmc->x;
|
|
|
|
}
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to max size */
|
|
|
|
if (gmc->maxw > 0)
|
|
|
|
{
|
|
|
|
if (gmc->w > gmc->maxw)
|
|
|
|
{
|
|
|
|
gmc->w = gmc->maxw;
|
|
|
|
}
|
|
|
|
}
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.0, 0.5, 1);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-19 06:31:40 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_update(gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc = data;
|
2005-01-17 08:18:34 -08:00
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
|
|
|
_e_gadman_client_down_store(gmc);
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autoh = 0;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_u = 1;
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_begin(gmc->zone, gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_up_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_u = 0;
|
|
|
|
e_gadman_client_save(gmc);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_end();
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
Evas_Coord x, y;
|
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
if (!gmc->resizing_u) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
if (!(gmc->policy & E_GADMAN_POLICY_VSIZE)) return;
|
2005-01-17 02:05:15 -08:00
|
|
|
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
|
|
|
|
gmc->x = gmc->down_store_x;
|
|
|
|
gmc->y = gmc->down_store_y + (y - gmc->down_y);
|
|
|
|
gmc->w = gmc->down_store_w;
|
|
|
|
gmc->h = gmc->down_store_h - (y - gmc->down_y);
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to zone top edge */
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
{
|
|
|
|
gmc->h = (gmc->down_store_y + gmc->down_store_h) - gmc->zone->y;
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
}
|
|
|
|
/* limit to min size */
|
|
|
|
if (gmc->h < gmc->minh)
|
|
|
|
{
|
2005-01-17 08:18:34 -08:00
|
|
|
gmc->y = (gmc->down_store_y + gmc->down_store_h) - gmc->minh;
|
2005-01-17 02:26:17 -08:00
|
|
|
gmc->h = gmc->minh;
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
/* if we are atthe edge or beyond. assyme we want to be all the way there */
|
|
|
|
if (y <= gmc->zone->y)
|
|
|
|
{
|
|
|
|
gmc->h = (gmc->y + gmc->h) - gmc->zone->y;
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
}
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to max size */
|
|
|
|
if (gmc->maxh > 0)
|
|
|
|
{
|
2005-01-21 07:45:56 -08:00
|
|
|
if (gmc->h > gmc->maxh)
|
2005-01-17 02:26:17 -08:00
|
|
|
{
|
|
|
|
gmc->y -= (gmc->maxh - gmc->h);
|
|
|
|
gmc->h = gmc->maxh;
|
|
|
|
}
|
|
|
|
}
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.5, 1.0, 0);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-19 06:31:40 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_update(gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 08:18:34 -08:00
|
|
|
if (_e_gadman_client_is_being_modified(gmc)) return;
|
|
|
|
_e_gadman_client_down_store(gmc);
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autoh = 0;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_d = 1;
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_begin(gmc->zone, gmc->w, gmc->h);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_down_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
gmc->resizing_d = 0;
|
|
|
|
e_gadman_client_save(gmc);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_end();
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
2005-04-24 14:11:44 -07:00
|
|
|
Evas_Coord x, y;
|
|
|
|
|
2005-01-17 00:54:37 -08:00
|
|
|
gmc = data;
|
2005-01-17 02:05:15 -08:00
|
|
|
if (!gmc->resizing_d) return;
|
2005-01-18 07:40:54 -08:00
|
|
|
if (!(gmc->policy & E_GADMAN_POLICY_VSIZE)) return;
|
2005-01-17 02:05:15 -08:00
|
|
|
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
|
|
|
|
gmc->x = gmc->down_store_x;
|
|
|
|
gmc->y = gmc->down_store_y;
|
|
|
|
gmc->w = gmc->down_store_w;
|
|
|
|
gmc->h = gmc->down_store_h + (y - gmc->down_y);
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to zone right bottom */
|
|
|
|
if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
{
|
|
|
|
gmc->h = (gmc->zone->y + gmc->zone->h) - gmc->y;
|
|
|
|
}
|
|
|
|
/* limit to min size */
|
|
|
|
if (gmc->h < gmc->minh)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->minh;
|
|
|
|
}
|
2005-01-17 08:18:34 -08:00
|
|
|
/* if we are atthe edge or beyond. assyme we want to be all the way there */
|
|
|
|
if (y >= (gmc->zone->y + gmc->zone->h - 1))
|
|
|
|
{
|
|
|
|
gmc->h = gmc->zone->y + gmc->zone->h - gmc->y;
|
|
|
|
}
|
2005-01-17 02:26:17 -08:00
|
|
|
/* limit to max size */
|
|
|
|
if (gmc->maxh > 0)
|
|
|
|
{
|
|
|
|
if (gmc->h > gmc->maxh)
|
|
|
|
{
|
|
|
|
gmc->h = gmc->maxh;
|
|
|
|
}
|
|
|
|
}
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.5, 0.0, 0);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-19 06:31:40 -08:00
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-04-24 07:44:23 -07:00
|
|
|
|
2005-04-24 14:11:44 -07:00
|
|
|
e_resize_update(gmc->w, gmc->h);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_menu_end(void *data, E_Menu *m)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
e_object_del(E_OBJECT(m));
|
|
|
|
gmc->menu = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_half_width(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
gmc->w = gmc->zone->w / 2;
|
|
|
|
if (gmc->w < gmc->minw) gmc->w = gmc->minw;
|
|
|
|
if (gmc->maxw > 0)
|
|
|
|
{
|
|
|
|
if (gmc->w > gmc->maxw) gmc->w = gmc->maxw;
|
|
|
|
}
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autow = 0;
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.0, 0.5, 1);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_full_width(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
gmc->w = gmc->zone->w;
|
|
|
|
if (gmc->w < gmc->minw) gmc->w = gmc->minw;
|
|
|
|
if (gmc->maxw > 0)
|
|
|
|
{
|
|
|
|
if (gmc->w > gmc->maxw) gmc->w = gmc->maxw;
|
|
|
|
}
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) / 2);
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autow = 0;
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.0, 0.5, 1);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-18 07:40:54 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_auto_width(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
if (e_menu_item_toggle_get(mi))
|
|
|
|
{
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autow = 1;
|
2005-01-18 07:40:54 -08:00
|
|
|
gmc->w = gmc->autow;
|
|
|
|
if (gmc->w > gmc->zone->w)
|
|
|
|
gmc->w = gmc->zone->w;
|
|
|
|
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = (gmc->zone->x + gmc->zone->w) - gmc->w;
|
|
|
|
}
|
|
|
|
else
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autow = 0;
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_center_horiz(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) / 2);
|
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_half_height(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
gmc->h = gmc->zone->h / 2;
|
|
|
|
if (gmc->h < gmc->minh) gmc->h = gmc->minh;
|
|
|
|
if (gmc->maxh > 0)
|
|
|
|
{
|
|
|
|
if (gmc->h > gmc->maxh) gmc->h = gmc->maxh;
|
|
|
|
}
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autoh = 0;
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.5, 0.0, 0);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_e_gadman_cb_full_height(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
gmc->h = gmc->zone->h;
|
|
|
|
if (gmc->h < gmc->minh) gmc->h = gmc->minh;
|
|
|
|
if (gmc->maxh > 0)
|
|
|
|
{
|
|
|
|
if (gmc->h > gmc->maxh) gmc->h = gmc->maxh;
|
|
|
|
}
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) / 2);
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autoh = 0;
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_aspect_enforce(gmc, 0.5, 0.0, 0);
|
2005-01-24 07:22:47 -08:00
|
|
|
if (gmc->x < gmc->zone->x)
|
|
|
|
gmc->x = gmc->zone->x;
|
|
|
|
else if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
|
|
|
|
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
|
|
|
|
if (gmc->y < gmc->zone->y)
|
|
|
|
gmc->y = gmc->zone->y;
|
|
|
|
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
|
2005-01-17 08:18:34 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-17 08:18:34 -08:00
|
|
|
}
|
|
|
|
|
2005-01-18 07:40:54 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_cb_auto_height(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
if (e_menu_item_toggle_get(mi))
|
|
|
|
{
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autoh = 1;
|
2005-01-18 07:40:54 -08:00
|
|
|
gmc->h = gmc->autoh;
|
|
|
|
if (gmc->h > gmc->zone->h)
|
|
|
|
gmc->h = gmc->zone->h;
|
|
|
|
if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
|
|
|
|
gmc->y = (gmc->zone->y + gmc->zone->h) - gmc->h;
|
|
|
|
}
|
|
|
|
else
|
2005-01-19 06:31:40 -08:00
|
|
|
gmc->use_autoh = 0;
|
2005-01-18 07:40:54 -08:00
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-18 07:40:54 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2005-01-17 08:18:34 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_cb_center_vert(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) / 2);
|
|
|
|
_e_gadman_client_geometry_apply(gmc);
|
|
|
|
_e_gadman_client_geometry_to_align(gmc);
|
|
|
|
e_gadman_client_save(gmc);
|
2005-01-20 05:42:51 -08:00
|
|
|
_e_gadman_client_callback_call(gmc, E_GADMAN_CHANGE_MOVE_RESIZE);
|
2005-01-17 00:54:37 -08:00
|
|
|
}
|
|
|
|
|
2005-01-24 07:22:47 -08:00
|
|
|
static void
|
|
|
|
_e_gadman_cb_end_edit_mode(void *data, E_Menu *m, E_Menu_Item *mi)
|
|
|
|
{
|
|
|
|
E_Gadman_Client *gmc;
|
|
|
|
|
|
|
|
gmc = data;
|
|
|
|
e_gadman_mode_set(gmc->gadman, E_GADMAN_MODE_NORMAL);
|
|
|
|
}
|