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:
Border drop on ibar (From Sébastien HOUZE).

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/ibar/e_mod_main.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -3 -r1.64 -r1.65
--- e_mod_main.c        25 Jul 2005 09:55:45 -0000      1.64
+++ e_mod_main.c        26 Jul 2005 11:03:35 -0000      1.65
@@ -71,7 +71,9 @@
 static void    _ibar_bar_cb_enter(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_leave(void *data, const char *type, void *event);
+
 static void    _ibar_bar_cb_drop_eapp(void *data, const char *type, void 
*event);
+static void    _ibar_bar_cb_drop_border(void *data, const char *type, void 
*event);
 static void    _ibar_bar_cb_drop_file(void *data, const char *type, void 
*event);
 static void    _ibar_bar_cb_finished(E_Drag *drag, int dropped);
 
@@ -516,6 +518,13 @@
                                       ibb->x + ibb->bar_inset.l, ibb->y + 
ibb->bar_inset.t,
                                       ibb->w - (ibb->bar_inset.l + 
ibb->bar_inset.r),
                                       ibb->h - (ibb->bar_inset.t + 
ibb->bar_inset.b));
+   ibb->drop_border = e_drop_handler_add(ibb,
+                                      _ibar_bar_cb_enter, _ibar_bar_cb_move,
+                                      _ibar_bar_cb_leave, 
_ibar_bar_cb_drop_border,
+                                      "enlightenment/border",
+                                      ibb->x + ibb->bar_inset.l, ibb->y + 
ibb->bar_inset.t,
+                                      ibb->w - (ibb->bar_inset.l + 
ibb->bar_inset.r),
+                                      ibb->h - (ibb->bar_inset.t + 
ibb->bar_inset.b));
    ibb->drop_file = e_drop_handler_add(ibb,
                                       _ibar_bar_cb_enter, _ibar_bar_cb_move,
                                       _ibar_bar_cb_leave, 
_ibar_bar_cb_drop_file,
@@ -564,6 +573,7 @@
      _ibar_icon_free(ibb->icons->data);
 
    e_drop_handler_del(ibb->drop_eapp);
+   e_drop_handler_del(ibb->drop_border);
    e_drop_handler_del(ibb->drop_file);
 
    if (ibb->timer) ecore_timer_del(ibb->timer);
@@ -1608,6 +1618,52 @@
    ev = event;
    ibb = data;
    app = ev->data;
+   
+   /* add dropped element */
+   ic = _ibar_icon_pos_find(ibb, ev->x, ev->y);
+
+   /* remove drag marker */
+   e_box_freeze(ibb->box_object);
+   e_box_unpack(ibb->drag_object);
+   evas_object_del(ibb->drag_object);
+   ibb->drag_object = NULL;
+   evas_object_del(ibb->drag_object_overlay);
+   ibb->drag_object_overlay = NULL;
+   e_box_thaw(ibb->box_object);
+
+   _ibar_bar_frame_resize(ibb);
+
+   if (ic)
+     {
+       /* Add new eapp before this icon */
+       e_app_prepend_relative(app, ic->app);
+     }
+   else
+     {
+       /* Add at the end */
+       e_app_append(app, ibb->ibar->apps);
+     }
+}
+
+static void
+_ibar_bar_cb_drop_border(void *data, const char *type, void *event)
+{
+   E_Event_Dnd_Drop *ev;
+   E_App *app;
+   IBar_Bar *ibb;
+   IBar_Icon *ic;
+
+   E_Border *bd;
+   char *title = "";
+
+   ev = event;
+   ibb = data;
+   bd = ev->data;
+   if (bd->client.netwm.name) title = bd->client.netwm.name;
+   else title = bd->client.icccm.title;
+   app = e_app_window_name_class_title_role_find(bd->client.icccm.name,
+                                                bd->client.icccm.class,
+                                                title, 
bd->client.icccm.window_role);
 
    /* add dropped element */
    ic = _ibar_icon_pos_find(ibb, ev->x, ev->y);
@@ -1709,6 +1765,10 @@
                                     ibb->x + ibb->bar_inset.l, ibb->y + 
ibb->bar_inset.t,
                                     ibb->w - (ibb->bar_inset.l + 
ibb->bar_inset.r),
                                     ibb->h - (ibb->bar_inset.t + 
ibb->bar_inset.b));
+        e_drop_handler_geometry_set(ibb->drop_border,
+                                    ibb->x + ibb->bar_inset.l, ibb->y + 
ibb->bar_inset.t,
+                                    ibb->w - (ibb->bar_inset.l + 
ibb->bar_inset.r),
+                                    ibb->h - (ibb->bar_inset.t + 
ibb->bar_inset.b));
         e_drop_handler_geometry_set(ibb->drop_file,
                                     ibb->x + ibb->bar_inset.l, ibb->y + 
ibb->bar_inset.t,
                                     ibb->w - (ibb->bar_inset.l + 
ibb->bar_inset.r),
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/ibar/e_mod_main.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- e_mod_main.h        18 Jun 2005 00:10:31 -0000      1.19
+++ e_mod_main.h        26 Jul 2005 11:03:36 -0000      1.20
@@ -74,6 +74,7 @@
    Config_Bar     *conf;
 
    E_Drop_Handler *drop_eapp;
+   E_Drop_Handler *drop_border;
    E_Drop_Handler *drop_file;
 };
 




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to