Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

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


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Icon dragging.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/ibar/e_mod_main.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- e_mod_main.c        25 Apr 2005 09:12:38 -0000      1.30
+++ e_mod_main.c        1 May 2005 19:29:16 -0000       1.31
@@ -28,6 +28,9 @@
 static E_Config_DD *conf_edd;
 static E_Config_DD *conf_bar_edd;
 
+static int drag, drag_start;
+static int drag_x, drag_y;
+
 /* const strings */
 static const char *_ibar_main_orientation[] =
 {"left", "right", "top", "bottom"};
@@ -65,6 +68,8 @@
 static void    _ibar_bar_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static int     _ibar_bar_cb_timer(void *data);
 static int     _ibar_bar_cb_animator(void *data);
+static void    _ibar_bar_cb_drop(void *data, const char *type, void *event);
+static void    _ibar_bar_cb_move(void *data, const char *type, void *event);
 
 static void    _ibar_icon_cb_intercept_move(void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
 static void    _ibar_icon_cb_intercept_resize(void *data, Evas_Object *o, 
Evas_Coord w, Evas_Coord h);
@@ -72,6 +77,7 @@
 static void    _ibar_icon_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void    _ibar_icon_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void    _ibar_icon_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
+static void    _ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 
 static void    _ibar_bar_cb_width_auto(void *data, E_Menu *m, E_Menu_Item *mi);
 #if 0
@@ -475,6 +481,9 @@
 
    e_box_thaw(ibb->box_object);
 
+   ibb->drop_handler = e_drop_handler_add(ibb, _ibar_bar_cb_drop, 
_ibar_bar_cb_move, "enlightenment/eapp",
+                                         ibb->x, ibb->y, ibb->w, ibb->h);
+
    ibb->gmc = e_gadman_client_new(ibb->con->gadman);
    e_gadman_client_domain_set(ibb->gmc, "module.ibar", bar_count++);
    policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | 
E_GADMAN_POLICY_VMOVE;
@@ -602,6 +611,7 @@
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_OUT, 
_ibar_icon_cb_mouse_out, ic);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_ibar_icon_cb_mouse_down, ic);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, 
_ibar_icon_cb_mouse_up, ic);
+   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, 
_ibar_icon_cb_mouse_move, ic);
    evas_object_show(o);
 
    o = edje_object_add(ibb->evas);
@@ -1168,10 +1178,17 @@
    ic = data;
    if (ev->button == 1)
      {
+#if 0
        edje_object_signal_emit(ic->bg_object, "start", "");
        edje_object_signal_emit(ic->overlay_object, "start", "");
        edje_object_signal_emit(ic->ibb->overlay_object, "start", "");
        e_app_exec(ic->app);
+#else
+       drag_x = ev->output.x;
+       drag_y = ev->output.y;
+       drag_start = 1; 
+       drag = 0; 
+#endif
      }
 }
 
@@ -1185,9 +1202,40 @@
    ic = data;
    if (ev->button == 1)
      {
+#if 0
        edje_object_signal_emit(ic->bg_object, "start_end", "");
        edje_object_signal_emit(ic->overlay_object, "start_end", "");
        edje_object_signal_emit(ic->ibb->overlay_object, "start_end", "");
+#else
+       if (!drag)
+         e_app_exec(ic->app);
+       drag = 0;
+#endif
+     }
+}
+
+static void
+_ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
+{
+   Evas_Event_Mouse_Move *ev;
+   IBar_Icon *ic;
+
+   ev = event_info;
+   ic = data;
+
+   if (drag_start)
+     {
+       double dist;
+
+       dist = sqrt(pow((ev->cur.output.x - drag_x), 2) + pow((ev->cur.output.y 
- drag_y), 2));
+       printf("dist: %f\n", dist);
+       if (dist > 10)
+         {
+            drag = 1;
+            drag_start = 0;
+            e_drag_start(ic->ibb->con, "enlightenment/eapp", ic->app, 
ic->app->path, "icon");
+            evas_event_feed_mouse_up(ic->ibb->evas, 1, EVAS_BUTTON_NONE, NULL);
+         }
      }
 }
 
@@ -1319,15 +1367,27 @@
 }
 
 static void
+_ibar_bar_cb_drop(void *data, const char *type, void *event)
+{
+}
+
+static void
+_ibar_bar_cb_move(void *data, const char *type, void *event)
+{
+}
+
+static void
 _ibar_bar_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change 
change)
 {
    IBar_Bar *ibb;
+   int x, y, w, h;
 
    ibb = data;
    switch (change)
      {
       case E_GADMAN_CHANGE_MOVE_RESIZE:
         e_gadman_client_geometry_get(ibb->gmc, &ibb->x, &ibb->y, &ibb->w, 
&ibb->h);
+        printf("ibar: %d %d %d %d\n", ibb->x, ibb->y, ibb->w, ibb->h);
 
         edje_extern_object_min_size_set(ibb->box_object, 0, 0);
         edje_object_part_swallow(ibb->bar_object, "items", ibb->box_object);
@@ -1339,6 +1399,8 @@
 
         _ibar_bar_follower_reset(ibb);
         _ibar_bar_timer_handle(ibb);
+        evas_object_geometry_get(ibb->box_object, &x, &y, &w, &h);
+        printf("box: %d %d %d %d\n", x, y, w, h);
         break;
       case E_GADMAN_CHANGE_EDGE:
         _ibar_bar_edge_change(ibb, e_gadman_client_edge_get(ibb->gmc));
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/ibar/e_mod_main.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_mod_main.h        12 Apr 2005 03:34:28 -0000      1.10
+++ e_mod_main.h        1 May 2005 19:29:17 -0000       1.11
@@ -63,6 +63,8 @@
    E_Gadman_Client *gmc;
 
    Config_Bar     *conf;
+
+   E_Drop_Handler *drop_handler;
 };
 
 struct _IBar_Icon




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit 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