Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_zone.h e_zone.c 


Log Message:
Edge flipping

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_zone.h    15 Mar 2005 10:26:05 -0000      1.15
+++ e_zone.h    22 Apr 2005 08:19:38 -0000      1.16
@@ -31,6 +31,14 @@
    int                  desk_x_count, desk_y_count;
    int                  desk_x_current, desk_y_current;
    E_Desk             **desks;
+
+   Evas_List           *handlers;
+
+   struct {
+       Ecore_X_Window top, right, bottom, left;
+       Ecore_Timer *timer;
+       int x, y;
+   } flip;
 };
 
 struct _E_Event_Zone_Desk_Count_Set
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- e_zone.c    9 Apr 2005 00:13:09 -0000       1.29
+++ e_zone.c    22 Apr 2005 08:19:39 -0000      1.30
@@ -13,6 +13,10 @@
 static void _e_zone_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 static void _e_zone_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 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_out(void *data, int type, void *event);
+static int  _e_zone_cb_timer(void *data);
+static void _e_zone_update_flip(E_Zone *zone);
 
 int E_EVENT_ZONE_DESK_COUNT_SET = 0;
 
@@ -47,6 +51,14 @@
    zone->h = h;
    zone->num = num;
 
+   zone->flip.top = ecore_x_window_input_new(con->manager->win, 1, 0, w - 2, 
1);
+   zone->flip.right = ecore_x_window_input_new(con->manager->win, w - 1, 1, 1, 
h - 2);
+   zone->flip.bottom = ecore_x_window_input_new(con->manager->win, 1, h - 1, w 
- 2, 1);
+   zone->flip.left = ecore_x_window_input_new(con->manager->win, 0, 1, 1, h - 
2);
+
+   zone->handlers = evas_list_append(zone->handlers, 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _e_zone_cb_mouse_in, zone));
+   zone->handlers = evas_list_append(zone->handlers, 
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, _e_zone_cb_mouse_out, zone));
+
    snprintf(name, sizeof(name), "Zone %d", zone->num);
    zone->name = strdup(name);
 
@@ -97,6 +109,9 @@
    e_zone_desk_count_set(zone,
                         e_config->zone_desks_x_count,
                         e_config->zone_desks_y_count);
+
+   _e_zone_update_flip(zone);
+
    return zone;
 }
 
@@ -422,3 +437,98 @@
    free(e);
 }
 
+static int
+_e_zone_cb_mouse_in(void *data, int type, void *event)
+{
+   Ecore_X_Event_Mouse_In *ev;
+   E_Zone *zone;
+
+   printf("in\n");
+
+   ev = event;
+   zone = data;
+
+   if (ev->win == zone->flip.top)
+     {
+       zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone);
+       zone->flip.x = zone->desk_x_current;
+       zone->flip.y = zone->desk_y_current - 1;
+     }
+   else if (ev->win == zone->flip.right)
+     {
+       zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone);
+       zone->flip.x = zone->desk_x_current + 1;
+       zone->flip.y = zone->desk_y_current;
+     }
+   else if (ev->win == zone->flip.bottom)
+     {
+       zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone);
+       zone->flip.x = zone->desk_x_current;
+       zone->flip.y = zone->desk_y_current + 1;
+     }
+   else if (ev->win == zone->flip.left)
+     {
+       zone->flip.timer = ecore_timer_add(1, _e_zone_cb_timer, zone);
+       zone->flip.x = zone->desk_x_current - 1;
+       zone->flip.y = zone->desk_y_current;
+     }
+   return 1;
+}
+
+static int
+_e_zone_cb_mouse_out(void *data, int type, void *event)
+{
+   Ecore_X_Event_Mouse_Out *ev;
+   E_Zone *zone;
+
+   ev = event;
+   zone = data;
+
+   if (zone->flip.timer)
+     ecore_timer_del(zone->flip.timer);
+   zone->flip.timer = NULL;
+
+   return 1;
+}
+
+static int
+_e_zone_cb_timer(void *data)
+{
+   E_Zone *zone;
+   E_Desk *desk;
+
+   zone = data;
+   desk = e_desk_at_xy_get(zone, zone->flip.x, zone->flip.y);
+   if (desk)
+     e_desk_show(desk);
+   _e_zone_update_flip(zone);
+
+   zone->flip.timer = NULL;
+
+   return 0;
+}
+
+static void
+_e_zone_update_flip(E_Zone *zone)
+{
+
+   if (zone->desk_y_current > 0)
+     ecore_x_window_show(zone->flip.top);
+   else
+     ecore_x_window_hide(zone->flip.top);
+
+   if ((zone->desk_x_current + 1) < zone->desk_x_count)
+     ecore_x_window_show(zone->flip.right);
+   else
+     ecore_x_window_hide(zone->flip.right);
+
+   if ((zone->desk_y_current + 1) < zone->desk_y_count)
+     ecore_x_window_show(zone->flip.bottom);
+   else
+     ecore_x_window_hide(zone->flip.bottom);
+
+   if (zone->desk_x_current > 0)
+     ecore_x_window_show(zone->flip.left);
+   else
+     ecore_x_window_hide(zone->flip.left);
+}




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to