forked from enlightenment/enlightenment
parent
1ab3a5cacf
commit
b6c7577e52
|
@ -45,6 +45,8 @@ static int _e_border_cb_window_move_resize_request(void *data, int ev_type, void
|
||||||
static int _e_border_cb_desktop_change(void *data, int ev_type, void *ev);
|
static int _e_border_cb_desktop_change(void *data, int ev_type, void *ev);
|
||||||
static int _e_border_cb_sync_alarm(void *data, int ev_type, void *ev);
|
static int _e_border_cb_sync_alarm(void *data, int ev_type, void *ev);
|
||||||
|
|
||||||
|
static int _e_border_cb_zone_desk_flip(void *data, int ev_type, void *ev);
|
||||||
|
|
||||||
static void _e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
static void _e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||||
static void _e_border_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
static void _e_border_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||||
static void _e_border_cb_signal_resize_tl_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
static void _e_border_cb_signal_resize_tl_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||||
|
@ -102,7 +104,6 @@ static void _e_border_event_border_stick_free(void *data, void *ev);
|
||||||
static void _e_border_event_border_unstick_free(void *data, void *ev);
|
static void _e_border_event_border_unstick_free(void *data, void *ev);
|
||||||
|
|
||||||
static void _e_border_zone_update(E_Border *bd);
|
static void _e_border_zone_update(E_Border *bd);
|
||||||
static void _e_border_desk_update(E_Border *bd);
|
|
||||||
|
|
||||||
static void _e_border_resize_begin(E_Border *bd);
|
static void _e_border_resize_begin(E_Border *bd);
|
||||||
static void _e_border_resize_end(E_Border *bd);
|
static void _e_border_resize_end(E_Border *bd);
|
||||||
|
@ -176,6 +177,8 @@ e_border_init(void)
|
||||||
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_SYNC_ALARM, _e_border_cb_sync_alarm, NULL));
|
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_SYNC_ALARM, _e_border_cb_sync_alarm, NULL));
|
||||||
ecore_x_passive_grab_replay_func_set(_e_border_cb_grab_replay, NULL);
|
ecore_x_passive_grab_replay_func_set(_e_border_cb_grab_replay, NULL);
|
||||||
|
|
||||||
|
handlers = evas_list_append(handlers, ecore_event_handler_add(E_EVENT_ZONE_DESK_FLIP, _e_border_cb_zone_desk_flip, NULL));
|
||||||
|
|
||||||
E_EVENT_BORDER_ADD = ecore_event_type_new();
|
E_EVENT_BORDER_ADD = ecore_event_type_new();
|
||||||
E_EVENT_BORDER_REMOVE = ecore_event_type_new();
|
E_EVENT_BORDER_REMOVE = ecore_event_type_new();
|
||||||
E_EVENT_BORDER_DESK_SET = ecore_event_type_new();
|
E_EVENT_BORDER_DESK_SET = ecore_event_type_new();
|
||||||
|
@ -192,7 +195,7 @@ e_border_init(void)
|
||||||
E_EVENT_BORDER_LOWER = ecore_event_type_new();
|
E_EVENT_BORDER_LOWER = ecore_event_type_new();
|
||||||
E_EVENT_BORDER_ICON_CHANGE = ecore_event_type_new();
|
E_EVENT_BORDER_ICON_CHANGE = ecore_event_type_new();
|
||||||
|
|
||||||
focus_fix_timer = ecore_timer_add(0.1, _e_border_cb_focus_fix, NULL);
|
//focus_fix_timer = ecore_timer_add(0.1, _e_border_cb_focus_fix, NULL);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -208,7 +211,7 @@ e_border_shutdown(void)
|
||||||
handlers = evas_list_remove_list(handlers, handlers);
|
handlers = evas_list_remove_list(handlers, handlers);
|
||||||
ecore_event_handler_del(h);
|
ecore_event_handler_del(h);
|
||||||
}
|
}
|
||||||
ecore_timer_del(focus_fix_timer);
|
//ecore_timer_del(focus_fix_timer);
|
||||||
focus_fix_timer = NULL;
|
focus_fix_timer = NULL;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -611,7 +614,6 @@ e_border_move(E_Border *bd, int x, int y)
|
||||||
bd->client.h);
|
bd->client.h);
|
||||||
_e_border_move_update(bd);
|
_e_border_move_update(bd);
|
||||||
_e_border_zone_update(bd);
|
_e_border_zone_update(bd);
|
||||||
_e_border_desk_update(bd);
|
|
||||||
ev = calloc(1, sizeof(E_Event_Border_Move));
|
ev = calloc(1, sizeof(E_Event_Border_Move));
|
||||||
ev->border = bd;
|
ev->border = bd;
|
||||||
e_object_ref(E_OBJECT(bd));
|
e_object_ref(E_OBJECT(bd));
|
||||||
|
@ -2407,6 +2409,39 @@ _e_border_cb_sync_alarm(void *data, int ev_type, void *ev)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FIXME:
|
||||||
|
* Using '2' is bad, may change in zone flip code.
|
||||||
|
* Calculate pos from e->x and e->y
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
_e_border_cb_zone_desk_flip(void *data, int ev_type, void *ev)
|
||||||
|
{
|
||||||
|
E_Event_Zone_Desk_Flip *e;
|
||||||
|
|
||||||
|
e = ev;
|
||||||
|
if ((!move) || (move->desk != e->prev)) return 1;
|
||||||
|
|
||||||
|
e_border_desk_set(move, e->current);
|
||||||
|
e_border_show(move);
|
||||||
|
switch (e->direction)
|
||||||
|
{
|
||||||
|
case E_DIRECTION_UP:
|
||||||
|
e_border_move(move, move->x, move->y + (move->zone->h - 2));
|
||||||
|
break;
|
||||||
|
case E_DIRECTION_RIGHT:
|
||||||
|
e_border_move(move, move->x - (move->zone->w - 2), move->y);
|
||||||
|
break;
|
||||||
|
case E_DIRECTION_DOWN:
|
||||||
|
e_border_move(move, move->x, move->y - (move->zone->h - 2));
|
||||||
|
break;
|
||||||
|
case E_DIRECTION_LEFT:
|
||||||
|
e_border_move(move, move->x + (move->zone->w - 2), move->y);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
_e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||||
{
|
{
|
||||||
|
@ -4711,12 +4746,6 @@ _e_border_zone_update(E_Border *bd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
_e_border_desk_update(E_Border *bd)
|
|
||||||
{
|
|
||||||
e_border_desk_set(bd, e_desk_current_get(bd->zone));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_border_resize_begin(E_Border *bd)
|
_e_border_resize_begin(E_Border *bd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,10 @@ static int _e_zone_cb_mouse_out(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);
|
||||||
|
static void _e_zone_event_zone_desk_flip_free(void *data, void *ev);
|
||||||
|
|
||||||
int E_EVENT_ZONE_DESK_COUNT_SET = 0;
|
int E_EVENT_ZONE_DESK_COUNT_SET = 0;
|
||||||
|
int E_EVENT_ZONE_DESK_FLIP = 0;
|
||||||
|
|
||||||
#define E_ZONE_FLIP_UP(zone) ((zone)->desk_y_current > 0)
|
#define E_ZONE_FLIP_UP(zone) ((zone)->desk_y_current > 0)
|
||||||
#define E_ZONE_FLIP_RIGHT(zone) (((zone)->desk_x_current + 1) < (zone)->desk_x_count)
|
#define E_ZONE_FLIP_RIGHT(zone) (((zone)->desk_x_current + 1) < (zone)->desk_x_count)
|
||||||
|
@ -30,6 +32,7 @@ int
|
||||||
e_zone_init(void)
|
e_zone_init(void)
|
||||||
{
|
{
|
||||||
E_EVENT_ZONE_DESK_COUNT_SET = ecore_event_type_new();
|
E_EVENT_ZONE_DESK_COUNT_SET = ecore_event_type_new();
|
||||||
|
E_EVENT_ZONE_DESK_FLIP = ecore_event_type_new();
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -715,23 +718,23 @@ static int
|
||||||
_e_zone_cb_timer(void *data)
|
_e_zone_cb_timer(void *data)
|
||||||
{
|
{
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
E_Desk *desk;
|
E_Desk *prev = NULL, *current = NULL;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
zone = data;
|
zone = data;
|
||||||
|
|
||||||
ecore_x_pointer_xy_get(zone->container->win, &x, &y);
|
ecore_x_pointer_xy_get(zone->container->win, &x, &y);
|
||||||
|
prev = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current);
|
||||||
|
|
||||||
switch (zone->flip.direction)
|
switch (zone->flip.direction)
|
||||||
{
|
{
|
||||||
case E_DIRECTION_UP:
|
case E_DIRECTION_UP:
|
||||||
if (E_ZONE_FLIP_UP(zone))
|
if (E_ZONE_FLIP_UP(zone))
|
||||||
{
|
{
|
||||||
desk = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current - 1);
|
current = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current - 1);
|
||||||
if (desk)
|
if (current)
|
||||||
{
|
{
|
||||||
e_desk_show(desk);
|
e_desk_show(current);
|
||||||
/* FIXME: move border after warp */
|
|
||||||
ecore_x_pointer_warp(zone->container->win, x, zone->h - 2);
|
ecore_x_pointer_warp(zone->container->win, x, zone->h - 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -739,11 +742,10 @@ _e_zone_cb_timer(void *data)
|
||||||
case E_DIRECTION_RIGHT:
|
case E_DIRECTION_RIGHT:
|
||||||
if (E_ZONE_FLIP_RIGHT(zone))
|
if (E_ZONE_FLIP_RIGHT(zone))
|
||||||
{
|
{
|
||||||
desk = e_desk_at_xy_get(zone, zone->desk_x_current + 1, zone->desk_y_current);
|
current = e_desk_at_xy_get(zone, zone->desk_x_current + 1, zone->desk_y_current);
|
||||||
if (desk)
|
if (current)
|
||||||
{
|
{
|
||||||
e_desk_show(desk);
|
e_desk_show(current);
|
||||||
/* FIXME: move border after warp */
|
|
||||||
ecore_x_pointer_warp(zone->container->win, 2, y);
|
ecore_x_pointer_warp(zone->container->win, 2, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -751,11 +753,10 @@ _e_zone_cb_timer(void *data)
|
||||||
case E_DIRECTION_DOWN:
|
case E_DIRECTION_DOWN:
|
||||||
if (E_ZONE_FLIP_DOWN(zone))
|
if (E_ZONE_FLIP_DOWN(zone))
|
||||||
{
|
{
|
||||||
desk = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current + 1);
|
current = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current + 1);
|
||||||
if (desk)
|
if (current)
|
||||||
{
|
{
|
||||||
e_desk_show(desk);
|
e_desk_show(current);
|
||||||
/* FIXME: move border after warp */
|
|
||||||
ecore_x_pointer_warp(zone->container->win, x, 2);
|
ecore_x_pointer_warp(zone->container->win, x, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -763,11 +764,10 @@ _e_zone_cb_timer(void *data)
|
||||||
case E_DIRECTION_LEFT:
|
case E_DIRECTION_LEFT:
|
||||||
if (E_ZONE_FLIP_LEFT(zone))
|
if (E_ZONE_FLIP_LEFT(zone))
|
||||||
{
|
{
|
||||||
desk = e_desk_at_xy_get(zone, zone->desk_x_current - 1, zone->desk_y_current);
|
current = e_desk_at_xy_get(zone, zone->desk_x_current - 1, zone->desk_y_current);
|
||||||
if (desk)
|
if (current)
|
||||||
{
|
{
|
||||||
e_desk_show(desk);
|
e_desk_show(current);
|
||||||
/* FIXME: move border after warp */
|
|
||||||
ecore_x_pointer_warp(zone->container->win, zone->w - 2, y);
|
ecore_x_pointer_warp(zone->container->win, zone->w - 2, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -776,6 +776,24 @@ _e_zone_cb_timer(void *data)
|
||||||
|
|
||||||
zone->flip.timer = NULL;
|
zone->flip.timer = NULL;
|
||||||
|
|
||||||
|
if (current)
|
||||||
|
{
|
||||||
|
E_Event_Zone_Desk_Flip *ev;
|
||||||
|
|
||||||
|
ev = E_NEW(E_Event_Zone_Desk_Flip, 1);
|
||||||
|
if (!ev) return 0;
|
||||||
|
|
||||||
|
ev->x = x;
|
||||||
|
ev->y = y;
|
||||||
|
ev->direction = zone->flip.direction;
|
||||||
|
ev->prev = prev;
|
||||||
|
if (ev->prev) e_object_ref(E_OBJECT(ev->prev));
|
||||||
|
ev->current = current;
|
||||||
|
e_object_ref(E_OBJECT(ev->current));
|
||||||
|
|
||||||
|
ecore_event_add(E_EVENT_ZONE_DESK_FLIP, ev, _e_zone_event_zone_desk_flip_free, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -842,3 +860,14 @@ _e_zone_update_flip(E_Zone *zone)
|
||||||
ecore_x_window_hide(zone->flip.bottom);
|
ecore_x_window_hide(zone->flip.bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_zone_event_zone_desk_flip_free(void *data, void *ev)
|
||||||
|
{
|
||||||
|
E_Event_Zone_Desk_Flip *e;
|
||||||
|
|
||||||
|
e = ev;
|
||||||
|
if (e->prev) e_object_unref(E_OBJECT(e->prev));
|
||||||
|
e_object_unref(E_OBJECT(e->current));
|
||||||
|
free(e);
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
typedef struct _E_Zone E_Zone;
|
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_Desk_Count_Set E_Event_Zone_Desk_Count_Set;
|
||||||
|
typedef struct _E_Event_Zone_Desk_Flip E_Event_Zone_Desk_Flip;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#ifndef E_ZONE_H
|
#ifndef E_ZONE_H
|
||||||
|
@ -49,6 +50,13 @@ struct _E_Event_Zone_Desk_Count_Set
|
||||||
E_Zone *zone;
|
E_Zone *zone;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _E_Event_Zone_Desk_Flip
|
||||||
|
{
|
||||||
|
int x, y;
|
||||||
|
E_Direction direction;
|
||||||
|
E_Desk *prev, *current;
|
||||||
|
};
|
||||||
|
|
||||||
EAPI int e_zone_init(void);
|
EAPI int e_zone_init(void);
|
||||||
EAPI int e_zone_shutdown(void);
|
EAPI int e_zone_shutdown(void);
|
||||||
EAPI E_Zone *e_zone_new(E_Container *con, int num, int x, int y, int w, int h);
|
EAPI E_Zone *e_zone_new(E_Container *con, int num, int x, int y, int w, int h);
|
||||||
|
@ -69,6 +77,7 @@ EAPI void e_zone_desk_linear_flip_to(E_Zone *zone, int x);
|
||||||
EAPI int e_zone_app_exec(E_Zone *zone, E_App *a);
|
EAPI int e_zone_app_exec(E_Zone *zone, E_App *a);
|
||||||
|
|
||||||
extern EAPI int E_EVENT_ZONE_DESK_COUNT_SET;
|
extern EAPI int E_EVENT_ZONE_DESK_COUNT_SET;
|
||||||
|
extern EAPI int E_EVENT_ZONE_DESK_FLIP;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue