Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/pager


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
The pager shows which desk a drop is over.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -3 -r1.91 -r1.92
--- e_mod_main.c        13 May 2005 13:34:21 -0000      1.91
+++ e_mod_main.c        15 May 2005 22:16:00 -0000      1.92
@@ -62,7 +62,10 @@
 static void        _pager_desk_cb_intercept_move(void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
 static void        _pager_desk_cb_intercept_resize(void *data, Evas_Object *o, 
Evas_Coord w, Evas_Coord h);
 
-static void        _pager_cb_drop(void *data, const char *type, void *drop);
+static void        _pager_face_cb_enter(void *data, const char *type, void 
*drop);
+static void        _pager_face_cb_move(void *data, const char *type, void 
*drop);
+static void        _pager_face_cb_leave(void *data, const char *type, void 
*drop);
+static void        _pager_face_cb_drop(void *data, const char *type, void 
*drop);
 
 static int         _pager_count;
 
@@ -274,6 +277,7 @@
 {
    Pager_Face  *face;
    Evas_Object *o;
+   Evas_Coord   x, y, w, h;
 
    face = E_NEW(Pager_Face, 1);
    if (!face) return NULL;
@@ -341,8 +345,17 @@
    edje_object_part_swallow(face->pager_object, "items", face->table_object);
    evas_object_show(o);
 
+   evas_object_resize(face->pager_object, 1000, 1000);
+   edje_object_calc_force(face->pager_object);
+   edje_object_part_geometry_get(face->pager_object, "items", &x, &y, &w, &h);
+   face->inset.l = x;
+   face->inset.r = 1000 - (x + w);
+   face->inset.t = y;
+   face->inset.b = 1000 - (y + h);
+
    face->drop_handler = e_drop_handler_add(face,
-                                          NULL, NULL, NULL, _pager_cb_drop,
+                                          _pager_face_cb_enter, 
_pager_face_cb_move,
+                                          _pager_face_cb_leave, 
_pager_face_cb_drop,
                                           "enlightenment/border",
                                           face->fx, face->fy, face->fw, 
face->fh);
    
@@ -1367,12 +1380,10 @@
 }
 
 static void
-_pager_cb_drop(void *data, const char *type, void *event_info)
+_pager_face_cb_enter(void *data, const char *type, void *event_info)
 {
-   E_Event_Dnd_Drop *ev;
+   E_Event_Dnd_Enter *ev;
    Pager_Face *face;
-   E_Desk *desk;
-   E_Border *bd;
    int x, y;
    double w, h;
 
@@ -1385,6 +1396,73 @@
 
    x = (ev->x - face->fx) / w;
    y = (ev->y - face->fy) / h;
+}
+
+static void
+_pager_face_cb_move(void *data, const char *type, void *event_info)
+{
+   E_Event_Dnd_Move *ev;
+   Pager_Face *face;
+   Pager_Desk *pd;
+   int x, y;
+   double w, h;
+   Evas_List *l;
+
+   ev = event_info;
+   face = data;
+
+   w = (face->fw - (face->inset.l + face->inset.r)) / (double) face->xnum;
+   h = (face->fh - (face->inset.t + face->inset.b)) / (double) face->ynum;
+
+   x = (ev->x - (face->fx + face->inset.l)) / w;
+   y = (ev->y - (face->fy + face->inset.t)) / h;
+
+   for (l = face->desks; l; l = l->next)
+     {
+       pd = l->data;
+       if ((pd->xpos == x) && (pd->ypos == y))
+         edje_object_signal_emit(pd->desk_object, "drag", "in");
+       else
+         edje_object_signal_emit(pd->desk_object, "drag", "out");
+     }
+}
+
+static void
+_pager_face_cb_leave(void *data, const char *type, void *event_info)
+{
+   E_Event_Dnd_Leave *ev;
+   Pager_Face *face;
+   Evas_List *l;
+
+   ev = event_info;
+   face = data;
+
+   for (l = face->desks; l; l = l->next)
+     {
+       Pager_Desk *pd;
+       pd = l->data;
+       edje_object_signal_emit(pd->desk_object, "drag", "out");
+     }
+}
+
+static void
+_pager_face_cb_drop(void *data, const char *type, void *event_info)
+{
+   E_Event_Dnd_Drop *ev;
+   Pager_Face *face;
+   E_Desk *desk;
+   E_Border *bd;
+   int x, y;
+   double w, h;
+
+   ev = event_info;
+   face = data;
+
+   w = (face->fw - (face->inset.l + face->inset.r)) / (double) face->xnum;
+   h = (face->fh - (face->inset.t + face->inset.b)) / (double) face->ynum;
+
+   x = (ev->x - (face->fx + face->inset.l)) / w;
+   y = (ev->y - (face->fy + face->inset.t)) / h;
 
    desk = e_desk_at_xy_get(face->zone, x, y);
    bd = ev->data;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- e_mod_main.h        24 Apr 2005 16:04:20 -0000      1.23
+++ e_mod_main.h        15 May 2005 22:16:00 -0000      1.24
@@ -53,6 +53,9 @@
    Evas_Object  *table_object;
    
    Evas_Coord    fx, fy, fw, fh;
+   struct {
+       Evas_Coord l, r, t, b;
+   } inset;
 
    /* Current nr. of desktops */
    int           xnum, ynum;
@@ -87,6 +90,7 @@
    Evas_Object *desk_object;
    Evas_Object *layout_object;
    Evas_Object *event_object;
+
    int          xpos, ypos;
 
    int          current : 1;




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7393&alloc_id=16281&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to