forked from enlightenment/enlightenment
Pointer wrapping. Needs updated ecore.
SVN revision: 14297
This commit is contained in:
parent
7985726ea4
commit
1a134ae16d
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue