forked from enlightenment/enlightenment
Add edge move event, so a slide in on the edge will show a shelf.
Fix interrupt hiding on mouse in. SVN revision: 34872
This commit is contained in:
parent
e0910b16b7
commit
493223f32c
|
@ -128,9 +128,10 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
|
||||||
evas_object_resize(es->o_event, es->w, es->h);
|
evas_object_resize(es->o_event, es->w, es->h);
|
||||||
evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_DOWN, _e_shelf_cb_mouse_down, es);
|
evas_object_event_callback_add(es->o_event, EVAS_CALLBACK_MOUSE_DOWN, _e_shelf_cb_mouse_down, es);
|
||||||
|
|
||||||
/* FIXME: Need an EDGE_MOVE handler */
|
|
||||||
es->handlers = evas_list_append(es->handlers,
|
es->handlers = evas_list_append(es->handlers,
|
||||||
ecore_event_handler_add(E_EVENT_ZONE_EDGE_IN, _e_shelf_cb_mouse_in, es));
|
ecore_event_handler_add(E_EVENT_ZONE_EDGE_IN, _e_shelf_cb_mouse_in, es));
|
||||||
|
es->handlers = evas_list_append(es->handlers,
|
||||||
|
ecore_event_handler_add(E_EVENT_ZONE_EDGE_MOVE, _e_shelf_cb_mouse_in, es));
|
||||||
es->handlers = evas_list_append(es->handlers,
|
es->handlers = evas_list_append(es->handlers,
|
||||||
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _e_shelf_cb_mouse_in, es));
|
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _e_shelf_cb_mouse_in, es));
|
||||||
es->handlers = evas_list_append(es->handlers,
|
es->handlers = evas_list_append(es->handlers,
|
||||||
|
@ -1238,9 +1239,9 @@ _e_shelf_cb_mouse_in(void *data, int type, void *event)
|
||||||
es = data;
|
es = data;
|
||||||
if (es->cfg->autohide_show_action) return 1;
|
if (es->cfg->autohide_show_action) return 1;
|
||||||
|
|
||||||
if (type == E_EVENT_ZONE_EDGE_IN)
|
if ((type == E_EVENT_ZONE_EDGE_IN) || (type == E_EVENT_ZONE_EDGE_MOVE))
|
||||||
{
|
{
|
||||||
E_Event_Zone_Edge_In *ev;
|
E_Event_Zone_Edge *ev;
|
||||||
int show = 0;
|
int show = 0;
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
|
@ -1312,7 +1313,7 @@ _e_shelf_cb_mouse_in(void *data, int type, void *event)
|
||||||
if (ev->win == es->win)
|
if (ev->win == es->win)
|
||||||
{
|
{
|
||||||
edje_object_signal_emit(es->o_base, "e,state,focused", "e");
|
edje_object_signal_emit(es->o_base, "e,state,focused", "e");
|
||||||
if ((es->hide_animator) || (es->instant_timer))
|
if ((es->hide_animator) || (es->hide_timer) || (es->instant_timer))
|
||||||
e_shelf_toggle(es, 1);
|
e_shelf_toggle(es, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ static void _e_zone_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, v
|
||||||
static void _e_zone_event_zone_desk_count_set_free(void *data, void *ev);
|
static void _e_zone_event_zone_desk_count_set_free(void *data, void *ev);
|
||||||
static int _e_zone_cb_mouse_in(void *data, int type, void *event);
|
static int _e_zone_cb_mouse_in(void *data, int type, void *event);
|
||||||
static int _e_zone_cb_mouse_out(void *data, int type, void *event);
|
static int _e_zone_cb_mouse_out(void *data, int type, void *event);
|
||||||
|
static int _e_zone_cb_mouse_move(void *data, int type, void *event);
|
||||||
static int _e_zone_cb_timer(void *data);
|
static int _e_zone_cb_timer(void *data);
|
||||||
static int _e_zone_cb_desk_show(void *data, int type, void *event);
|
static int _e_zone_cb_desk_show(void *data, int type, void *event);
|
||||||
static void _e_zone_update_flip(E_Zone *zone);
|
static void _e_zone_update_flip(E_Zone *zone);
|
||||||
|
@ -28,9 +29,9 @@ EAPI int E_EVENT_POINTER_WARP = 0;
|
||||||
EAPI int E_EVENT_ZONE_MOVE_RESIZE = 0;
|
EAPI int E_EVENT_ZONE_MOVE_RESIZE = 0;
|
||||||
EAPI int E_EVENT_ZONE_ADD = 0;
|
EAPI int E_EVENT_ZONE_ADD = 0;
|
||||||
EAPI int E_EVENT_ZONE_DEL = 0;
|
EAPI int E_EVENT_ZONE_DEL = 0;
|
||||||
/* FIXME: We need a EDGE_MOVE event */
|
|
||||||
EAPI int E_EVENT_ZONE_EDGE_IN = 0;
|
EAPI int E_EVENT_ZONE_EDGE_IN = 0;
|
||||||
EAPI int E_EVENT_ZONE_EDGE_OUT = 0;
|
EAPI int E_EVENT_ZONE_EDGE_OUT = 0;
|
||||||
|
EAPI int E_EVENT_ZONE_EDGE_MOVE = 0;
|
||||||
|
|
||||||
#define E_ZONE_FLIP_LEFT(zone) ((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || ((zone)->desk_x_current > 0))
|
#define E_ZONE_FLIP_LEFT(zone) ((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || ((zone)->desk_x_current > 0))
|
||||||
#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))
|
#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))
|
||||||
|
@ -47,6 +48,7 @@ e_zone_init(void)
|
||||||
E_EVENT_ZONE_DEL = ecore_event_type_new();
|
E_EVENT_ZONE_DEL = ecore_event_type_new();
|
||||||
E_EVENT_ZONE_EDGE_IN = ecore_event_type_new();
|
E_EVENT_ZONE_EDGE_IN = ecore_event_type_new();
|
||||||
E_EVENT_ZONE_EDGE_OUT = ecore_event_type_new();
|
E_EVENT_ZONE_EDGE_OUT = ecore_event_type_new();
|
||||||
|
E_EVENT_ZONE_EDGE_MOVE = ecore_event_type_new();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +93,9 @@ e_zone_new(E_Container *con, int num, int id, int x, int y, int w, int h)
|
||||||
zone->handlers = evas_list_append(zone->handlers,
|
zone->handlers = evas_list_append(zone->handlers,
|
||||||
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT,
|
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT,
|
||||||
_e_zone_cb_mouse_out, zone));
|
_e_zone_cb_mouse_out, zone));
|
||||||
|
zone->handlers = evas_list_append(zone->handlers,
|
||||||
|
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE,
|
||||||
|
_e_zone_cb_mouse_move, zone));
|
||||||
zone->handlers = evas_list_append(zone->handlers,
|
zone->handlers = evas_list_append(zone->handlers,
|
||||||
ecore_event_handler_add(E_EVENT_DESK_SHOW,
|
ecore_event_handler_add(E_EVENT_DESK_SHOW,
|
||||||
_e_zone_cb_desk_show, zone));
|
_e_zone_cb_desk_show, zone));
|
||||||
|
@ -827,7 +832,7 @@ static int
|
||||||
_e_zone_cb_mouse_in(void *data, int type, void *event)
|
_e_zone_cb_mouse_in(void *data, int type, void *event)
|
||||||
{
|
{
|
||||||
Ecore_X_Event_Mouse_In *ev;
|
Ecore_X_Event_Mouse_In *ev;
|
||||||
E_Event_Zone_Edge_In *zev;
|
E_Event_Zone_Edge *zev;
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
|
@ -842,7 +847,7 @@ _e_zone_cb_mouse_in(void *data, int type, void *event)
|
||||||
zone->flip.direction = E_DIRECTION_UP;
|
zone->flip.direction = E_DIRECTION_UP;
|
||||||
}
|
}
|
||||||
|
|
||||||
zev = E_NEW(E_Event_Zone_Edge_In, 1);
|
zev = E_NEW(E_Event_Zone_Edge, 1);
|
||||||
zev->zone = zone;
|
zev->zone = zone;
|
||||||
zev->x = ev->x;
|
zev->x = ev->x;
|
||||||
zev->y = ev->y;
|
zev->y = ev->y;
|
||||||
|
@ -858,7 +863,7 @@ _e_zone_cb_mouse_in(void *data, int type, void *event)
|
||||||
zone->flip.direction = E_DIRECTION_RIGHT;
|
zone->flip.direction = E_DIRECTION_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
zev = E_NEW(E_Event_Zone_Edge_In, 1);
|
zev = E_NEW(E_Event_Zone_Edge, 1);
|
||||||
zev->zone = zone;
|
zev->zone = zone;
|
||||||
zev->x = ev->x;
|
zev->x = ev->x;
|
||||||
zev->y = ev->y;
|
zev->y = ev->y;
|
||||||
|
@ -874,7 +879,7 @@ _e_zone_cb_mouse_in(void *data, int type, void *event)
|
||||||
zone->flip.direction = E_DIRECTION_DOWN;
|
zone->flip.direction = E_DIRECTION_DOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
zev = E_NEW(E_Event_Zone_Edge_In, 1);
|
zev = E_NEW(E_Event_Zone_Edge, 1);
|
||||||
zev->zone = zone;
|
zev->zone = zone;
|
||||||
zev->x = ev->x;
|
zev->x = ev->x;
|
||||||
zev->y = ev->y;
|
zev->y = ev->y;
|
||||||
|
@ -890,7 +895,7 @@ _e_zone_cb_mouse_in(void *data, int type, void *event)
|
||||||
zone->flip.direction = E_DIRECTION_LEFT;
|
zone->flip.direction = E_DIRECTION_LEFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
zev = E_NEW(E_Event_Zone_Edge_In, 1);
|
zev = E_NEW(E_Event_Zone_Edge, 1);
|
||||||
zev->zone = zone;
|
zev->zone = zone;
|
||||||
zev->x = ev->x;
|
zev->x = ev->x;
|
||||||
zev->y = ev->y;
|
zev->y = ev->y;
|
||||||
|
@ -904,7 +909,7 @@ static int
|
||||||
_e_zone_cb_mouse_out(void *data, int type, void *event)
|
_e_zone_cb_mouse_out(void *data, int type, void *event)
|
||||||
{
|
{
|
||||||
Ecore_X_Event_Mouse_Out *ev;
|
Ecore_X_Event_Mouse_Out *ev;
|
||||||
E_Event_Zone_Edge_Out *zev;
|
E_Event_Zone_Edge *zev;
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
|
@ -918,7 +923,7 @@ _e_zone_cb_mouse_out(void *data, int type, void *event)
|
||||||
if (zone->flip.timer)
|
if (zone->flip.timer)
|
||||||
ecore_timer_del(zone->flip.timer);
|
ecore_timer_del(zone->flip.timer);
|
||||||
zone->flip.timer = NULL;
|
zone->flip.timer = NULL;
|
||||||
zev = E_NEW(E_Event_Zone_Edge_Out, 1);
|
zev = E_NEW(E_Event_Zone_Edge, 1);
|
||||||
zev->zone = zone;
|
zev->zone = zone;
|
||||||
zev->x = ev->x;
|
zev->x = ev->x;
|
||||||
zev->y = ev->y;
|
zev->y = ev->y;
|
||||||
|
@ -931,6 +936,34 @@ _e_zone_cb_mouse_out(void *data, int type, void *event)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_zone_cb_mouse_move(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
Ecore_X_Event_Mouse_Move *ev;
|
||||||
|
E_Event_Zone_Edge *zev;
|
||||||
|
E_Zone *zone;
|
||||||
|
|
||||||
|
ev = event;
|
||||||
|
zone = data;
|
||||||
|
|
||||||
|
if ((ev->win == zone->edge.top) ||
|
||||||
|
(ev->win == zone->edge.bottom) ||
|
||||||
|
(ev->win == zone->edge.left) ||
|
||||||
|
(ev->win == zone->edge.right))
|
||||||
|
{
|
||||||
|
zev = E_NEW(E_Event_Zone_Edge, 1);
|
||||||
|
zev->zone = zone;
|
||||||
|
zev->x = ev->x;
|
||||||
|
zev->y = ev->y;
|
||||||
|
if (ev->win == zone->edge.top) zev->edge = E_ZONE_EDGE_TOP;
|
||||||
|
else if (ev->win == zone->edge.bottom) zev->edge = E_ZONE_EDGE_BOTTOM;
|
||||||
|
else if (ev->win == zone->edge.left) zev->edge = E_ZONE_EDGE_LEFT;
|
||||||
|
else if (ev->win == zone->edge.right) zev->edge = E_ZONE_EDGE_RIGHT;
|
||||||
|
ecore_event_add(E_EVENT_ZONE_EDGE_MOVE, zev, NULL, NULL);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_e_zone_cb_timer(void *data)
|
_e_zone_cb_timer(void *data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,8 +19,7 @@ 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_Del E_Event_Zone_Del;
|
||||||
/* TODO: Move this to a general place? */
|
/* TODO: Move this to a general place? */
|
||||||
typedef struct _E_Event_Pointer_Warp E_Event_Pointer_Warp;
|
typedef struct _E_Event_Pointer_Warp E_Event_Pointer_Warp;
|
||||||
typedef struct _E_Event_Zone_Edge E_Event_Zone_Edge_In;
|
typedef struct _E_Event_Zone_Edge E_Event_Zone_Edge;
|
||||||
typedef struct _E_Event_Zone_Edge E_Event_Zone_Edge_Out;
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#ifndef E_ZONE_H
|
#ifndef E_ZONE_H
|
||||||
|
@ -144,6 +143,7 @@ extern EAPI int E_EVENT_ZONE_DEL;
|
||||||
extern EAPI int E_EVENT_POINTER_WARP;
|
extern EAPI int E_EVENT_POINTER_WARP;
|
||||||
extern EAPI int E_EVENT_ZONE_EDGE_IN;
|
extern EAPI int E_EVENT_ZONE_EDGE_IN;
|
||||||
extern EAPI int E_EVENT_ZONE_EDGE_OUT;
|
extern EAPI int E_EVENT_ZONE_EDGE_OUT;
|
||||||
|
extern EAPI int E_EVENT_ZONE_EDGE_MOVE;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue