Cleanup. Flip with border still doesn't work..

SVN revision: 14299
This commit is contained in:
sebastid 2005-04-22 14:33:35 +00:00 committed by sebastid
parent 34a32688f0
commit ab79e5dd0b
2 changed files with 100 additions and 35 deletions

View File

@ -234,6 +234,45 @@ e_zone_bg_reconfigure(E_Zone *zone)
void void
e_zone_flip_coords_handle(E_Zone *zone, int x, int y) e_zone_flip_coords_handle(E_Zone *zone, int x, int y)
{ {
if (y == 0)
{
/* top */
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.direction = E_DIRECTION_UP;
}
else if (x == (zone->w - 1))
{
/* right */
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.direction = E_DIRECTION_RIGHT;
}
else if (y == (zone->h - 1))
{
/* bottom */
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.direction = E_DIRECTION_DOWN;
}
else if (x == 0)
{
/* left */
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _e_zone_cb_timer, zone);
zone->flip.direction = E_DIRECTION_LEFT;
}
else
{
/* in zone */
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = NULL;
}
} }
static void static void
@ -453,37 +492,35 @@ _e_zone_cb_mouse_in(void *data, int type, void *event)
Ecore_X_Event_Mouse_In *ev; Ecore_X_Event_Mouse_In *ev;
E_Zone *zone; E_Zone *zone;
printf("in\n");
ev = event; ev = event;
zone = data; zone = data;
if (ev->win == zone->flip.top) if (ev->win == zone->flip.top)
{ {
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _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.y = zone->desk_y_current - 1;
zone->flip.direction = E_DIRECTION_UP; zone->flip.direction = E_DIRECTION_UP;
} }
else if (ev->win == zone->flip.right) else if (ev->win == zone->flip.right)
{ {
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _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.y = zone->desk_y_current;
zone->flip.direction = E_DIRECTION_RIGHT; zone->flip.direction = E_DIRECTION_RIGHT;
} }
else if (ev->win == zone->flip.bottom) else if (ev->win == zone->flip.bottom)
{ {
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _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.y = zone->desk_y_current + 1;
zone->flip.direction = E_DIRECTION_DOWN; zone->flip.direction = E_DIRECTION_DOWN;
} }
else if (ev->win == zone->flip.left) else if (ev->win == zone->flip.left)
{ {
if (zone->flip.timer)
ecore_timer_del(zone->flip.timer);
zone->flip.timer = ecore_timer_add(0.5, _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.y = zone->desk_y_current;
zone->flip.direction = E_DIRECTION_LEFT; zone->flip.direction = E_DIRECTION_LEFT;
} }
return 1; return 1;
@ -510,33 +547,62 @@ _e_zone_cb_timer(void *data)
{ {
E_Zone *zone; E_Zone *zone;
E_Desk *desk; E_Desk *desk;
int x, y;
zone = data; zone = data;
desk = e_desk_at_xy_get(zone, zone->flip.x, zone->flip.y);
if (desk) ecore_x_pointer_last_xy_get(&x, &y);
switch (zone->flip.direction)
{ {
int x, y; case E_DIRECTION_UP:
if (zone->desk_y_current > 0)
e_desk_show(desk); {
_e_zone_update_flip(zone); desk = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current - 1);
if (desk)
ecore_x_pointer_last_xy_get(&x, &y); {
e_desk_show(desk);
switch (zone->flip.direction) ecore_x_pointer_warp(zone->container->manager->win, x, zone->h - 2);
{ _e_zone_update_flip(zone);
case E_DIRECTION_UP: }
ecore_x_pointer_warp(zone->container->manager->win, x, zone->h - 2); }
break; break;
case E_DIRECTION_RIGHT: case E_DIRECTION_RIGHT:
ecore_x_pointer_warp(zone->container->manager->win, 2, y); if ((zone->desk_x_current + 1) < zone->desk_x_count)
break; {
case E_DIRECTION_DOWN: desk = e_desk_at_xy_get(zone, zone->desk_x_current + 1, zone->desk_y_current);
ecore_x_pointer_warp(zone->container->manager->win, x, 2); if (desk)
break; {
case E_DIRECTION_LEFT: e_desk_show(desk);
ecore_x_pointer_warp(zone->container->manager->win, zone->w - 2, y); ecore_x_pointer_warp(zone->container->manager->win, 2, y);
break; _e_zone_update_flip(zone);
} }
}
break;
case E_DIRECTION_DOWN:
if ((zone->desk_y_current + 1) < zone->desk_y_count)
{
desk = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current + 1);
if (desk)
{
e_desk_show(desk);
ecore_x_pointer_warp(zone->container->manager->win, x, 2);
_e_zone_update_flip(zone);
}
}
break;
case E_DIRECTION_LEFT:
if (zone->desk_x_current > 0)
{
desk = e_desk_at_xy_get(zone, zone->desk_x_current - 1, zone->desk_y_current);
if (desk)
{
e_desk_show(desk);
ecore_x_pointer_warp(zone->container->manager->win, zone->w - 2, y);
_e_zone_update_flip(zone);
}
}
break;
} }
zone->flip.timer = NULL; zone->flip.timer = NULL;

View File

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