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:
- Make the drop object the right size.
- Correct drop position.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/ibar/e_mod_main.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -3 -r1.56 -r1.57
--- e_mod_main.c        2 Jun 2005 09:49:07 -0000       1.56
+++ e_mod_main.c        8 Jun 2005 13:08:37 -0000       1.57
@@ -482,18 +482,30 @@
    evas_object_resize(ibb->bar_object, 1000, 1000);
    edje_object_calc_force(ibb->bar_object);
    edje_object_part_geometry_get(ibb->bar_object, "items", &x, &y, &w, &h);
-   ibb->inset.l = x;
-   ibb->inset.r = 1000 - (x + w);
-   ibb->inset.t = y;
-   ibb->inset.b = 1000 - (y + h);
+   ibb->bar_inset.l = x;
+   ibb->bar_inset.r = 1000 - (x + w);
+   ibb->bar_inset.t = y;
+   ibb->bar_inset.b = 1000 - (y + h);
+
+   o = edje_object_add(ibb->evas);
+   e_theme_edje_object_set(o, "base/theme/modules/ibar",
+                          "modules/ibar/icon");
+   evas_object_resize(o, 100, 100);
+   edje_object_calc_force(o);
+   edje_object_part_geometry_get(o, "item", &x, &y, &w, &h);
+   ibb->icon_inset.l = x;
+   ibb->icon_inset.r = 100 - (x + w);
+   ibb->icon_inset.t = y;
+   ibb->icon_inset.b = 100 - (y + h);
+   evas_object_del(o);
 
    ibb->drop_handler = e_drop_handler_add(ibb,
                                          _ibar_bar_cb_enter, _ibar_bar_cb_move,
                                          _ibar_bar_cb_leave, _ibar_bar_cb_drop,
                                          "enlightenment/eapp",
-                                         ibb->x + ibb->inset.l, ibb->y + 
ibb->inset.t,
-                                         ibb->w - (ibb->inset.l + 
ibb->inset.r),
-                                         ibb->h - (ibb->inset.t + 
ibb->inset.b));
+                                         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->gmc = e_gadman_client_new(ibb->con->gadman);
    e_gadman_client_domain_set(ibb->gmc, "module.ibar", bar_count++);
@@ -505,7 +517,7 @@
    e_gadman_client_max_size_set(ibb->gmc, 3200, 3200);
    e_gadman_client_auto_size_set(ibb->gmc, -1, -1);
    e_gadman_client_align_set(ibb->gmc, 0.5, 1.0);
-   e_gadman_client_resize(ibb->gmc, 400, 32 + ibb->inset.t + ibb->inset.b);
+   e_gadman_client_resize(ibb->gmc, 400, 32 + ibb->bar_inset.t + 
ibb->bar_inset.b);
    e_gadman_client_change_func_set(ibb->gmc, _ibar_bar_cb_gmc_change, ibb);
    e_gadman_client_edge_set(ibb->gmc, E_GADMAN_EDGE_BOTTOM);
    e_gadman_client_load(ibb->gmc);
@@ -603,7 +615,7 @@
    IBar_Icon *ic;
    char *str;
    Evas_Object *o;
-   Evas_Coord bw, bh;
+   Evas_Coord w, h;
 
    ic = E_NEW(IBar_Icon, 1);
    if (!ic) return NULL;
@@ -635,10 +647,9 @@
 
    o = edje_object_add(ibb->evas);
    ic->icon_object = o;
+   evas_object_resize(o, ibb->ibar->conf->iconsize, ibb->ibar->conf->iconsize);
    edje_object_file_set(o, ic->app->path, "icon");
-   edje_extern_object_min_size_set(o, ibb->ibar->conf->iconsize, 
ibb->ibar->conf->iconsize);
    edje_object_part_swallow(ic->bg_object, "item", o);
-   edje_object_size_min_calc(ic->bg_object, &bw, &bh);
    evas_object_pass_events_set(o, 1);
    evas_object_show(o);
 
@@ -659,13 +670,15 @@
 
    evas_object_raise(ic->event_object);
 
+   w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
+   h = ibb->ibar->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b;
    e_box_pack_end(ibb->box_object, ic->bg_object);
    e_box_pack_options_set(ic->bg_object,
                          1, 1, /* fill */
                          0, 0, /* expand */
                          0.5, 0.5, /* align */
-                         bw, bh, /* min */
-                         bw, bh /* max */
+                         w, h, /* min */
+                         w, h /* max */
                          );
 
    str = (char *)edje_object_data_get(ic->icon_object, "raise_on_hilight");
@@ -856,7 +869,7 @@
 static void
 _ibar_icon_reorder_after(IBar_Icon *ic, IBar_Icon *after)
 {
-   Evas_Coord bw, bh;
+   Evas_Coord w, h;
 
    e_box_freeze(ic->ibb->box_object);
    e_box_unpack(ic->bg_object);
@@ -871,13 +884,14 @@
        ic->ibb->icons = evas_list_append(ic->ibb->icons, ic);
        e_box_pack_end(ic->ibb->box_object, ic->bg_object);
      }
-   edje_object_size_min_calc(ic->bg_object, &bw, &bh);
+   w = ic->ibb->ibar->conf->iconsize + ic->ibb->icon_inset.l + 
ic->ibb->icon_inset.r;
+   h = ic->ibb->ibar->conf->iconsize + ic->ibb->icon_inset.t + 
ic->ibb->icon_inset.b;
    e_box_pack_options_set(ic->bg_object,
                          1, 1, /* fill */
                          0, 0, /* expand */
                          0.5, 0.5, /* align */
-                         bw, bh, /* min */
-                         bw, bh /* max */
+                         w, h, /* min */
+                         w, h /* max */
                          );
    e_box_thaw(ic->ibb->box_object);
 }
@@ -931,7 +945,7 @@
 _ibar_bar_edge_change(IBar_Bar *ibb, int edge)
 {
    Evas_List *l;
-   Evas_Coord bw, bh, tmp;
+   Evas_Coord w, h, tmp;
    Evas_Object *o;
    E_Gadman_Policy policy;
    int changed;
@@ -955,18 +969,19 @@
        o = ic->bg_object;
        edje_object_signal_emit(o, "set_orientation", 
_ibar_main_orientation[edge]);
        edje_object_message_signal_process(o);
-       edje_object_size_min_calc(ic->bg_object, &bw, &bh);
 
        o = ic->overlay_object;
        edje_object_signal_emit(o, "set_orientation", 
_ibar_main_orientation[edge]);
        edje_object_message_signal_process(o);
 
+       w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
+       h = ibb->ibar->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b;
        e_box_pack_options_set(ic->bg_object,
                               1, 1, /* fill */
                               0, 0, /* expand */
                               0.5, 0.5, /* align */
-                              bw, bh, /* min */
-                              bw, bh /* max */
+                              w, h, /* min */
+                              w, h /* max */
                               );
      }
 
@@ -1400,6 +1415,10 @@
    E_Event_Dnd_Enter *ev;
    Evas_Object *o;
    IBar_Bar *ibb;
+   IBar_Icon *ic;
+   Evas_Coord x, y, w, h;
+   double iw;
+   int pos;
 
    ev = event;
    ibb = data;
@@ -1407,7 +1426,48 @@
    o = evas_object_rectangle_add(ibb->evas);
    ibb->drag_object = o;
    evas_object_color_set(o, 255, 0, 0, 255);
-   evas_object_resize(o, 32, 32);
+   evas_object_resize(o, ibb->ibar->conf->iconsize, ibb->ibar->conf->iconsize);
+
+   if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
+       (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
+     {
+       iw = w / (double) e_box_pack_count_get(ibb->box_object);
+       pos = x / iw;
+     }
+   else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
+           (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
+     {
+       iw = h / (double) e_box_pack_count_get(ibb->box_object);
+       pos = y / iw;
+     }
+
+   ic = evas_list_nth(ibb->icons, pos);
+
+   e_box_freeze(ibb->box_object);
+   evas_object_show(ibb->drag_object);
+   e_box_unpack(ibb->drag_object);
+   if (ic)
+     {
+       /* Add new eapp before this icon */
+       e_box_pack_before(ibb->box_object, ibb->drag_object, ic->bg_object);
+     }
+   else
+     {
+       /* Add at the end */
+       e_box_pack_end(ibb->box_object, ibb->drag_object);
+     }
+   w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
+   h = ibb->ibar->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b;
+   e_box_pack_options_set(ibb->drag_object,
+                         1, 1, /* fill */
+                         0, 0, /* expand */
+                         0.5, 0.5, /* align */
+                         w, h, /* min */
+                         w, h /* max */
+                         );
+   e_box_thaw(ibb->box_object);
+
+   _ibar_bar_frame_resize(ibb);
 }
 
 static void
@@ -1423,25 +1483,23 @@
    ev = event;
    ibb = data;
 
-   x = ev->x - (ibb->x + ibb->inset.l);
-   y = ev->y - (ibb->y + ibb->inset.t);
-   w = ibb->w - (ibb->inset.l + ibb->inset.r);
-   h = ibb->h - (ibb->inset.t + ibb->inset.b);
+   x = ev->x - (ibb->x + ibb->bar_inset.l);
+   y = ev->y - (ibb->y + ibb->bar_inset.t);
+   w = ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r);
+   h = ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b);
 
    if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
        (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
      {
-       iw = w / (double) evas_list_count(ibb->icons);
-       pos = round(x / iw);
+       iw = w / (double) e_box_pack_count_get(ibb->box_object);
+       pos = x / iw;
      }
    else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
            (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
      {
-       iw = h / (double) evas_list_count(ibb->icons);
-       pos = round(y / iw);
+       iw = h / (double) e_box_pack_count_get(ibb->box_object);
+       pos = y / iw;
      }
-   else
-     return;
 
    ic = evas_list_nth(ibb->icons, pos);
 
@@ -1458,13 +1516,14 @@
        /* Add at the end */
        e_box_pack_end(ibb->box_object, ibb->drag_object);
      }
-   edje_object_size_min_calc(ibb->drag_object, &w, &h);
+   w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
+   h = ibb->ibar->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b;
    e_box_pack_options_set(ibb->drag_object,
                          1, 1, /* fill */
                          0, 0, /* expand */
                          0.5, 0.5, /* align */
-                         32, 32, /* min */
-                         32, 32 /* max */
+                         w, h, /* min */
+                         w, h /* max */
                          );
    e_box_thaw(ibb->box_object);
 
@@ -1512,25 +1571,23 @@
    _ibar_bar_frame_resize(ibb);
 
    /* add dropped element */
-   x = ev->x - (ibb->x + ibb->inset.l);
-   y = ev->y - (ibb->y + ibb->inset.t);
-   w = ibb->w - (ibb->inset.l + ibb->inset.r);
-   h = ibb->h - (ibb->inset.t + ibb->inset.b);
+   x = ev->x - (ibb->x + ibb->bar_inset.l);
+   y = ev->y - (ibb->y + ibb->bar_inset.t);
+   w = ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r);
+   h = ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b);
 
    if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
        (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
      {
        iw = w / (double) evas_list_count(ibb->icons);
-       pos = round(x / iw);
+       pos = x / iw;
      }
    else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
            (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
      {
        iw = h / (double) evas_list_count(ibb->icons);
-       pos = round(y / iw);
+       pos = y / iw;
      }
-   else
-     return;
 
    ic = evas_list_nth(ibb->icons, pos);
    if (ic)
@@ -1576,9 +1633,9 @@
         _ibar_bar_timer_handle(ibb);
 
         e_drop_handler_geometry_set(ibb->drop_handler,
-                                    ibb->x + ibb->inset.l, ibb->y + 
ibb->inset.t,
-                                    ibb->w - (ibb->inset.l + ibb->inset.r),
-                                    ibb->h - (ibb->inset.t + ibb->inset.b));
+                                    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));
         break;
       case E_GADMAN_CHANGE_EDGE:
         _ibar_bar_edge_change(ibb, e_gadman_client_edge_get(ibb->gmc));
@@ -1635,23 +1692,22 @@
      {
        IBar_Icon *ic;
        Evas_Object *o;
-       Evas_Coord bw, bh;
+       Evas_Coord w, h;
 
        ic = l->data;
        o = ic->icon_object;
-       edje_extern_object_min_size_set(o, ibb->ibar->conf->iconsize, 
ibb->ibar->conf->iconsize);
 
        evas_object_resize(o, ibb->ibar->conf->iconsize, 
ibb->ibar->conf->iconsize);
-
        edje_object_part_swallow(ic->bg_object, "item", o);
-       edje_object_size_min_calc(ic->bg_object, &bw, &bh);
 
+       w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
+       h = ibb->ibar->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b;
        e_box_pack_options_set(ic->bg_object,
              1, 1, /* fill */
              0, 0, /* expand */
              0.5, 0.5, /* align */
-             bw, bh, /* min */
-             bw, bh /* max */
+             w, h, /* min */
+             w, h /* max */
              );
      }
    e_box_thaw(ibb->box_object);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/ibar/e_mod_main.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_mod_main.h        14 May 2005 14:06:09 -0000      1.15
+++ e_mod_main.h        8 Jun 2005 13:08:44 -0000       1.16
@@ -62,7 +62,10 @@
    Evas_Coord      x, y, w, h;
    struct {
        Evas_Coord l, r, t, b;
-   } inset;
+   } bar_inset;
+   struct {
+       Evas_Coord l, r, t, b;
+   } icon_inset;
 
    E_Gadman_Client *gmc;
 




-------------------------------------------------------
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