Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_zone.c e_zone.h 


Log Message:
Fix moving border on edge flip.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.250
retrieving revision 1.251
diff -u -3 -r1.250 -r1.251
--- e_border.c  8 Jun 2005 13:10:52 -0000       1.250
+++ e_border.c  8 Jun 2005 14:06:28 -0000       1.251
@@ -45,6 +45,8 @@
 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_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_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);
@@ -102,7 +104,6 @@
 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_desk_update(E_Border *bd);
 
 static void _e_border_resize_begin(E_Border *bd);
 static void _e_border_resize_end(E_Border *bd);
@@ -176,6 +177,8 @@
    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);
 
+   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_REMOVE = ecore_event_type_new();
    E_EVENT_BORDER_DESK_SET = ecore_event_type_new();
@@ -192,7 +195,7 @@
    E_EVENT_BORDER_LOWER = 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;
 }
@@ -208,7 +211,7 @@
        handlers = evas_list_remove_list(handlers, handlers);
        ecore_event_handler_del(h);
      }
-   ecore_timer_del(focus_fix_timer);
+   //ecore_timer_del(focus_fix_timer);
    focus_fix_timer = NULL;
    return 1;
 }
@@ -611,7 +614,6 @@
                                  bd->client.h);
    _e_border_move_update(bd);
    _e_border_zone_update(bd);
-   _e_border_desk_update(bd);
    ev = calloc(1, sizeof(E_Event_Border_Move));
    ev->border = bd;
    e_object_ref(E_OBJECT(bd));
@@ -2407,6 +2409,39 @@
    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
 _e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char 
*emission, const char *source)
 {
@@ -4712,12 +4747,6 @@
 }
 
 static void
-_e_border_desk_update(E_Border *bd)
-{
-   e_border_desk_set(bd, e_desk_current_get(bd->zone));
-}
-
-static void
 _e_border_resize_begin(E_Border *bd)
 {
    int w, h;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -3 -r1.56 -r1.57
--- e_zone.c    7 Jun 2005 13:05:18 -0000       1.56
+++ e_zone.c    8 Jun 2005 14:06:28 -0000       1.57
@@ -18,8 +18,10 @@
 static int  _e_zone_cb_timer(void *data);
 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_event_zone_desk_flip_free(void *data, void *ev);
 
 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_RIGHT(zone) (((zone)->desk_x_current + 1) < 
(zone)->desk_x_count)
@@ -30,6 +32,7 @@
 e_zone_init(void)
 {
    E_EVENT_ZONE_DESK_COUNT_SET = ecore_event_type_new();
+   E_EVENT_ZONE_DESK_FLIP = ecore_event_type_new();
 
    return 1;
 }
@@ -715,23 +718,23 @@
 _e_zone_cb_timer(void *data)
 {
    E_Zone *zone;
-   E_Desk *desk;
+   E_Desk *prev = NULL, *current = NULL;
    int x, y;
 
    zone = data;
 
    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)
      {
       case E_DIRECTION_UP:
         if (E_ZONE_FLIP_UP(zone))
           {
-             desk = e_desk_at_xy_get(zone, zone->desk_x_current, 
zone->desk_y_current - 1);
-             if (desk)
+             current = e_desk_at_xy_get(zone, zone->desk_x_current, 
zone->desk_y_current - 1);
+             if (current)
                {
-                  e_desk_show(desk);
-                  /* FIXME: move border after warp */
+                  e_desk_show(current);
                   ecore_x_pointer_warp(zone->container->win, x, zone->h - 2);
                }
           }
@@ -739,11 +742,10 @@
       case E_DIRECTION_RIGHT:
         if (E_ZONE_FLIP_RIGHT(zone))
           {
-             desk = e_desk_at_xy_get(zone, zone->desk_x_current + 1, 
zone->desk_y_current);
-             if (desk)
+             current = e_desk_at_xy_get(zone, zone->desk_x_current + 1, 
zone->desk_y_current);
+             if (current)
                {
-                  e_desk_show(desk);
-                  /* FIXME: move border after warp */
+                  e_desk_show(current);
                   ecore_x_pointer_warp(zone->container->win, 2, y);
                }
           }
@@ -751,11 +753,10 @@
       case E_DIRECTION_DOWN:
         if (E_ZONE_FLIP_DOWN(zone))
           {
-             desk = e_desk_at_xy_get(zone, zone->desk_x_current, 
zone->desk_y_current + 1);
-             if (desk)
+             current = e_desk_at_xy_get(zone, zone->desk_x_current, 
zone->desk_y_current + 1);
+             if (current)
                {
-                  e_desk_show(desk);
-                  /* FIXME: move border after warp */
+                  e_desk_show(current);
                   ecore_x_pointer_warp(zone->container->win, x, 2);
                }
           }
@@ -763,11 +764,10 @@
       case E_DIRECTION_LEFT:
         if (E_ZONE_FLIP_LEFT(zone))
           {
-             desk = e_desk_at_xy_get(zone, zone->desk_x_current - 1, 
zone->desk_y_current);
-             if (desk)
+             current = e_desk_at_xy_get(zone, zone->desk_x_current - 1, 
zone->desk_y_current);
+             if (current)
                {
-                  e_desk_show(desk);
-                  /* FIXME: move border after warp */
+                  e_desk_show(current);
                   ecore_x_pointer_warp(zone->container->win, zone->w - 2, y);
                }
           }
@@ -776,6 +776,24 @@
 
    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;
 }
 
@@ -842,3 +860,14 @@
        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);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- e_zone.h    2 Jun 2005 09:49:07 -0000       1.25
+++ e_zone.h    8 Jun 2005 14:06:28 -0000       1.26
@@ -6,6 +6,7 @@
 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_Flip          E_Event_Zone_Desk_Flip;
 
 #else
 #ifndef E_ZONE_H
@@ -49,6 +50,13 @@
    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_shutdown(void);
 EAPI E_Zone    *e_zone_new(E_Container *con, int num, int x, int y, int w, int 
h);
@@ -69,6 +77,7 @@
 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_FLIP;
 
 #endif
 #endif




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to