Pointer wrapping. Needs updated ecore.

SVN revision: 14297
This commit is contained in:
sebastid 2005-04-22 09:23:00 +00:00 committed by sebastid
parent 7985726ea4
commit 1a134ae16d
2 changed files with 33 additions and 6 deletions

View File

@ -450,27 +450,31 @@ _e_zone_cb_mouse_in(void *data, int type, void *event)
if (ev->win == zone->flip.top) if (ev->win == zone->flip.top)
{ {
zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone); zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.x = zone->desk_x_current; zone->flip.x = zone->desk_x_current;
zone->flip.y = zone->desk_y_current - 1; zone->flip.y = zone->desk_y_current - 1;
zone->flip.direction = E_DIRECTION_UP;
} }
else if (ev->win == zone->flip.right) else if (ev->win == zone->flip.right)
{ {
zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone); zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.x = zone->desk_x_current + 1; zone->flip.x = zone->desk_x_current + 1;
zone->flip.y = zone->desk_y_current; zone->flip.y = zone->desk_y_current;
zone->flip.direction = E_DIRECTION_RIGHT;
} }
else if (ev->win == zone->flip.bottom) else if (ev->win == zone->flip.bottom)
{ {
zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone); zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.x = zone->desk_x_current; zone->flip.x = zone->desk_x_current;
zone->flip.y = zone->desk_y_current + 1; zone->flip.y = zone->desk_y_current + 1;
zone->flip.direction = E_DIRECTION_DOWN;
} }
else if (ev->win == zone->flip.left) else if (ev->win == zone->flip.left)
{ {
zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone); zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.x = zone->desk_x_current - 1; zone->flip.x = zone->desk_x_current - 1;
zone->flip.y = zone->desk_y_current; zone->flip.y = zone->desk_y_current;
zone->flip.direction = E_DIRECTION_LEFT;
} }
return 1; return 1;
} }
@ -500,8 +504,30 @@ _e_zone_cb_timer(void *data)
zone = data; zone = data;
desk = e_desk_at_xy_get(zone, zone->flip.x, zone->flip.y); desk = e_desk_at_xy_get(zone, zone->flip.x, zone->flip.y);
if (desk) if (desk)
e_desk_show(desk); {
_e_zone_update_flip(zone); int x, y;
e_desk_show(desk);
_e_zone_update_flip(zone);
ecore_x_pointer_last_xy_get(&x, &y);
switch (zone->flip.direction)
{
case E_DIRECTION_UP:
ecore_x_pointer_warp(zone->container->manager->win, x, zone->h - 2);
break;
case E_DIRECTION_RIGHT:
ecore_x_pointer_warp(zone->container->manager->win, 2, y);
break;
case E_DIRECTION_DOWN:
ecore_x_pointer_warp(zone->container->manager->win, x, 2);
break;
case E_DIRECTION_LEFT:
ecore_x_pointer_warp(zone->container->manager->win, zone->w - 2, y);
break;
}
}
zone->flip.timer = NULL; zone->flip.timer = NULL;

View File

@ -38,6 +38,7 @@ struct _E_Zone
Ecore_X_Window top, right, bottom, left; Ecore_X_Window top, right, bottom, left;
Ecore_Timer *timer; Ecore_Timer *timer;
int x, y; int x, y;
E_Direction direction;
} flip; } flip;
}; };