forked from enlightenment/enlightenment
e zone - add stow/unstow apis
This commit is contained in:
parent
66f28829a1
commit
5d74b399e0
100
src/bin/e_zone.c
100
src/bin/e_zone.c
|
@ -13,15 +13,8 @@ static void _e_zone_cb_bg_mouse_up(void *data,
|
|||
Evas *evas,
|
||||
Evas_Object *obj,
|
||||
void *event_info);
|
||||
static void _e_zone_event_zone_desk_count_set_free(void *data,
|
||||
void *ev);
|
||||
static Eina_Bool _e_zone_cb_edge_timer(void *data);
|
||||
static void _e_zone_event_move_resize_free(void *data,
|
||||
void *ev);
|
||||
static void _e_zone_event_add_free(void *data,
|
||||
void *ev);
|
||||
static void _e_zone_event_del_free(void *data,
|
||||
void *ev);
|
||||
static void _e_zone_event_generic_free(void *data, void *ev);
|
||||
static void _e_zone_object_del_attach(void *o);
|
||||
static E_Zone_Edge _e_zone_detect_edge(E_Zone *zone, Evas_Object *obj);
|
||||
static void _e_zone_edge_move_resize(E_Zone *zone);
|
||||
|
@ -34,6 +27,8 @@ EAPI int E_EVENT_ZONE_DEL = 0;
|
|||
EAPI int E_EVENT_ZONE_EDGE_IN = 0;
|
||||
EAPI int E_EVENT_ZONE_EDGE_OUT = 0;
|
||||
EAPI int E_EVENT_ZONE_EDGE_MOVE = 0;
|
||||
EAPI int E_EVENT_ZONE_STOW = 0;
|
||||
EAPI int E_EVENT_ZONE_UNSTOW = 0;
|
||||
|
||||
#define E_ZONE_FLIP_LEFT(zone) (((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || ((zone)->desk_x_current > 0)) && (zone)->edge.left)
|
||||
#define E_ZONE_FLIP_RIGHT(zone) (((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || (((zone)->desk_x_current + 1) < (zone)->desk_x_count)) && (zone)->edge.right)
|
||||
|
@ -53,6 +48,8 @@ e_zone_init(void)
|
|||
E_EVENT_ZONE_EDGE_IN = ecore_event_type_new();
|
||||
E_EVENT_ZONE_EDGE_OUT = ecore_event_type_new();
|
||||
E_EVENT_ZONE_EDGE_MOVE = ecore_event_type_new();
|
||||
E_EVENT_ZONE_STOW = ecore_event_type_new();
|
||||
E_EVENT_ZONE_UNSTOW = ecore_event_type_new();
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -257,7 +254,7 @@ e_zone_new(E_Comp *c, int num, int id, int x, int y, int w, int h)
|
|||
ev = E_NEW(E_Event_Zone_Add, 1);
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_ADD, ev, _e_zone_event_add_free, NULL);
|
||||
ecore_event_add(E_EVENT_ZONE_ADD, ev, _e_zone_event_generic_free, NULL);
|
||||
|
||||
return zone;
|
||||
}
|
||||
|
@ -293,7 +290,7 @@ e_zone_move(E_Zone *zone,
|
|||
ev = E_NEW(E_Event_Zone_Move_Resize, 1);
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_move_resize_free, NULL);
|
||||
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_generic_free, NULL);
|
||||
|
||||
_e_zone_edge_move_resize(zone);
|
||||
e_zone_bg_reconfigure(zone);
|
||||
|
@ -320,7 +317,7 @@ e_zone_resize(E_Zone *zone,
|
|||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev,
|
||||
_e_zone_event_move_resize_free, NULL);
|
||||
_e_zone_event_generic_free, NULL);
|
||||
|
||||
_e_zone_edge_move_resize(zone);
|
||||
e_zone_bg_reconfigure(zone);
|
||||
|
@ -357,7 +354,7 @@ e_zone_move_resize(E_Zone *zone,
|
|||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev,
|
||||
_e_zone_event_move_resize_free, NULL);
|
||||
_e_zone_event_generic_free, NULL);
|
||||
|
||||
_e_zone_edge_move_resize(zone);
|
||||
|
||||
|
@ -711,7 +708,7 @@ e_zone_desk_count_set(E_Zone *zone,
|
|||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_DESK_COUNT_SET, ev,
|
||||
_e_zone_event_zone_desk_count_set_free, NULL);
|
||||
_e_zone_event_generic_free, NULL);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -1356,7 +1353,7 @@ e_zone_useful_geometry_dirty(E_Zone *zone)
|
|||
ev = E_NEW(E_Event_Zone_Move_Resize, 1);
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_move_resize_free, NULL);
|
||||
ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_generic_free, NULL);
|
||||
|
||||
zone->useful_geometry.dirty = 1;
|
||||
zone->useful_geometry.x = -1;
|
||||
|
@ -1365,6 +1362,38 @@ e_zone_useful_geometry_dirty(E_Zone *zone)
|
|||
zone->useful_geometry.h = -1;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_zone_stow(E_Zone *zone)
|
||||
{
|
||||
E_Event_Zone_Stow *ev;
|
||||
|
||||
E_OBJECT_CHECK(zone);
|
||||
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||
if (zone->stowed) return;
|
||||
ev = E_NEW(E_Event_Zone_Stow, 1);
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_STOW, ev, _e_zone_event_generic_free, NULL);
|
||||
|
||||
zone->stowed = EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_zone_unstow(E_Zone *zone)
|
||||
{
|
||||
E_Event_Zone_Unstow *ev;
|
||||
|
||||
E_OBJECT_CHECK(zone);
|
||||
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||
if (!zone->stowed) return;
|
||||
ev = E_NEW(E_Event_Zone_Unstow, 1);
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_UNSTOW, ev, _e_zone_event_generic_free, NULL);
|
||||
|
||||
zone->stowed = EINA_FALSE;
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_e_zone_free(E_Zone *zone)
|
||||
|
@ -1489,17 +1518,6 @@ _e_zone_cb_bg_mouse_up(void *data,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_zone_event_zone_desk_count_set_free(void *data __UNUSED__,
|
||||
void *ev)
|
||||
{
|
||||
E_Event_Zone_Desk_Count_Set *e;
|
||||
|
||||
e = ev;
|
||||
e_object_unref(E_OBJECT(e->zone));
|
||||
free(e);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_zone_cb_edge_timer(void *data)
|
||||
{
|
||||
|
@ -1526,32 +1544,12 @@ _e_zone_cb_edge_timer(void *data)
|
|||
}
|
||||
|
||||
static void
|
||||
_e_zone_event_move_resize_free(void *data __UNUSED__,
|
||||
void *ev)
|
||||
_e_zone_event_generic_free(void *data __UNUSED__, void *ev)
|
||||
{
|
||||
E_Event_Zone_Move_Resize *e;
|
||||
|
||||
e = ev;
|
||||
e_object_unref(E_OBJECT(e->zone));
|
||||
free(e);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_zone_event_add_free(void *data __UNUSED__,
|
||||
void *ev)
|
||||
{
|
||||
E_Event_Zone_Add *e;
|
||||
|
||||
e = ev;
|
||||
e_object_unref(E_OBJECT(e->zone));
|
||||
free(e);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_zone_event_del_free(void *data __UNUSED__,
|
||||
void *ev)
|
||||
{
|
||||
E_Event_Zone_Del *e;
|
||||
struct _E_Event_Zone_Generic *e;
|
||||
// also handes E_Event_Zone_Add, E_Event_Zone_Del, E_Event_Zone_Stow,
|
||||
// E_Event_Zone_Unstow, E_Event_Zone_Desk_Count_Set due to them all
|
||||
// having the same content
|
||||
|
||||
e = ev;
|
||||
e_object_unref(E_OBJECT(e->zone));
|
||||
|
@ -1569,7 +1567,7 @@ _e_zone_object_del_attach(void *o)
|
|||
ev = E_NEW(E_Event_Zone_Del, 1);
|
||||
ev->zone = zone;
|
||||
e_object_ref(E_OBJECT(ev->zone));
|
||||
ecore_event_add(E_EVENT_ZONE_DEL, ev, _e_zone_event_del_free, NULL);
|
||||
ecore_event_add(E_EVENT_ZONE_DEL, ev, _e_zone_event_generic_free, NULL);
|
||||
}
|
||||
|
||||
static E_Zone_Edge
|
||||
|
|
|
@ -15,13 +15,15 @@ typedef enum _E_Zone_Edge
|
|||
|
||||
typedef struct _E_Zone E_Zone;
|
||||
|
||||
typedef struct _E_Event_Zone_Desk_Count_Set E_Event_Zone_Desk_Count_Set;
|
||||
typedef struct _E_Event_Zone_Move_Resize E_Event_Zone_Move_Resize;
|
||||
typedef struct _E_Event_Zone_Add E_Event_Zone_Add;
|
||||
typedef struct _E_Event_Zone_Del E_Event_Zone_Del;
|
||||
typedef struct _E_Event_Zone_Generic E_Event_Zone_Desk_Count_Set;
|
||||
typedef struct _E_Event_Zone_Generic E_Event_Zone_Move_Resize;
|
||||
typedef struct _E_Event_Zone_Generic E_Event_Zone_Add;
|
||||
typedef struct _E_Event_Zone_Generic E_Event_Zone_Del;
|
||||
/* TODO: Move this to a general place? */
|
||||
typedef struct _E_Event_Pointer_Warp E_Event_Pointer_Warp;
|
||||
typedef struct _E_Event_Zone_Edge E_Event_Zone_Edge;
|
||||
typedef struct _E_Event_Zone_Generic E_Event_Zone_Stow;
|
||||
typedef struct _E_Event_Zone_Generic E_Event_Zone_Unstow;
|
||||
|
||||
#else
|
||||
#ifndef E_ZONE_H
|
||||
|
@ -87,24 +89,10 @@ struct _E_Zone
|
|||
int x, y, w, h;
|
||||
Eina_Bool dirty : 1;
|
||||
} useful_geometry;
|
||||
Eina_Bool stowed : 1;
|
||||
};
|
||||
|
||||
struct _E_Event_Zone_Desk_Count_Set
|
||||
{
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
||||
struct _E_Event_Zone_Move_Resize
|
||||
{
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
||||
struct _E_Event_Zone_Add
|
||||
{
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
||||
struct _E_Event_Zone_Del
|
||||
struct _E_Event_Zone_Generic
|
||||
{
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
@ -159,8 +147,10 @@ EAPI void e_zone_edge_win_layer_set(E_Zone *zone, E_Layer layer);
|
|||
EAPI void e_zone_useful_geometry_dirty(E_Zone *zone);
|
||||
EAPI void e_zone_useful_geometry_get(E_Zone *zone, int *x, int *y, int *w, int *h);
|
||||
EAPI void e_zone_desk_useful_geometry_get(const E_Zone *zone, const E_Desk *desk, int *x, int *y, int *w, int *h);
|
||||
EAPI void e_zone_stow(E_Zone *zone);
|
||||
EAPI void e_zone_unstow(E_Zone *zone);
|
||||
|
||||
EAPI void e_zone_fade_handle(E_Zone *zone, int out, double tim);
|
||||
EAPI void e_zone_fade_handle(E_Zone *zone, int out, double tim);
|
||||
|
||||
extern EAPI int E_EVENT_ZONE_DESK_COUNT_SET;
|
||||
extern EAPI int E_EVENT_ZONE_MOVE_RESIZE;
|
||||
|
@ -170,6 +160,8 @@ extern EAPI int E_EVENT_POINTER_WARP;
|
|||
extern EAPI int E_EVENT_ZONE_EDGE_IN;
|
||||
extern EAPI int E_EVENT_ZONE_EDGE_OUT;
|
||||
extern EAPI int E_EVENT_ZONE_EDGE_MOVE;
|
||||
extern EAPI int E_EVENT_ZONE_STOW;
|
||||
extern EAPI int E_EVENT_ZONE_UNSTOW;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue