Enlightenment CVS committal

Author  : handyande
Project : misc
Module  : engage

Dir     : misc/engage/src/module


Modified Files:
        e_mod_main.c e_mod_main.h tray.c 


Log Message:
calculate border size properly
move iconsize to the bar config
tidy some other bits of resize code
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -3 -r1.86 -r1.87
--- e_mod_main.c        10 Dec 2005 16:25:02 -0000      1.86
+++ e_mod_main.c        10 Dec 2005 18:44:50 -0000      1.87
@@ -57,7 +57,7 @@
 static int     _engage_cb_event_border_uniconify(void *data, int type, void 
*event);
 static int     _engage_cb_border_add(Engage_Bar *eb, E_Border *bd);
 
-static Engage_Bar *_engage_bar_new(Engage *e, E_Container *con);
+static Engage_Bar *_engage_bar_new(Engage_Bar *eb, E_Container *con);
 static void    _engage_bar_free(Engage_Bar *eb);
 static void    _engage_bar_menu_gen(Engage_Bar *eb);
 static void    _engage_bar_enable(Engage_Bar *eb);
@@ -231,6 +231,7 @@
 #define T Config_Bar
 #define D conf_bar_edd
    E_CONFIG_VAL(D, T, enabled, INT);
+   E_CONFIG_VAL(D, T, iconsize, INT);
    E_CONFIG_VAL(D, T, zoom, INT);
    E_CONFIG_VAL(D, T, zoom_factor, DOUBLE);
    E_CONFIG_VAL(D, T, zoom_duration, DOUBLE);
@@ -243,7 +244,6 @@
 #define T Config
 #define D conf_edd
    E_CONFIG_VAL(D, T, appdir, STR);
-   E_CONFIG_VAL(D, T, iconsize, INT);
    E_CONFIG_LIST(D, T, bars, conf_bar_edd);
    /*
    E_CONFIG_VAL(D, T, handle, DOUBLE);
@@ -255,13 +255,11 @@
      {
        e->conf = E_NEW(Config, 1);
        e->conf->appdir = strdup("engage");
-       e->conf->iconsize = 64;
        /*
        e->conf->handle = 0.5;
        e->conf->autohide = 0;
        */
      }
-   E_CONFIG_LIMIT(e->conf->iconsize, 2, 400);
    /*
    E_CONFIG_LIMIT(e->conf->handle, 0.0, 1.0);
    E_CONFIG_LIMIT(e->conf->autohide, 0, 1);
@@ -300,15 +298,17 @@
             Engage_Bar *eb;
             /* Config */
             con = l2->data;
-            eb = _engage_bar_new(e, con);
+            eb = E_NEW(Engage_Bar, 1);
             if (eb)
               {
                  E_Menu_Item *mi;
 
+                 eb->loaded = 0;
                  if (!cl)
                    {
                       eb->conf = E_NEW(Config_Bar, 1);
                       eb->conf->enabled = 1;
+                      eb->conf->iconsize = 64;
                       eb->conf->zoom = 1;
                       eb->conf->zoom_factor = 2.0;
                       eb->conf->zoom_duration = 0.3;
@@ -321,11 +321,15 @@
                       eb->conf = cl->data;
                       cl = cl->next;
                    }
+                 E_CONFIG_LIMIT(eb->conf->iconsize, 2, 400);
                  E_CONFIG_LIMIT(eb->conf->zoom, 0, 1);
                  E_CONFIG_LIMIT(eb->conf->zoom_factor, 1.0, 4.0);
                  E_CONFIG_LIMIT(eb->conf->zoom_duration, 0.1, 0.5);
                  E_CONFIG_LIMIT(eb->conf->zoom_stretch, 0, 1);
                  E_CONFIG_LIMIT(eb->conf->tray, 0, 1);
+
+                 eb->engage = e;
+                 _engage_bar_new(eb, con);
                  _engage_bar_iconsize_change(eb);
                  /* Menu */
                  _engage_bar_menu_gen(eb);
@@ -352,6 +356,7 @@
 
                  /* We need to resize, the number of apps could have changed
                   *  since last startup */
+                 eb->loaded = 1;
                  _engage_bar_frame_resize(eb);
               }
          }
@@ -577,17 +582,13 @@
 }
 
 static Engage_Bar *
-_engage_bar_new(Engage *e, E_Container *con)
+_engage_bar_new(Engage_Bar *eb, E_Container *con)
 {
-   Engage_Bar *eb;
    Evas_List *l;
    Evas_Object *o;
    E_Gadman_Policy policy;
 
-   eb = E_NEW(Engage_Bar, 1);
-   if (!eb) return NULL;
-   eb->engage = e;
-   e->bars = evas_list_append(e->bars, eb);
+   eb->engage->bars = evas_list_append(eb->engage->bars, eb);
 
    eb->con = con;
    e_object_ref(E_OBJECT(con));
@@ -608,6 +609,7 @@
    eb->bar_object = o;
    edje_object_file_set(o, PACKAGE_DATA_DIR "/themes/module.edj", "main");
    evas_object_show(o);
+   edje_object_size_min_calc(o, &eb->bw, &eb->bh);
 
    o = evas_object_rectangle_add(eb->evas);
    eb->event_object = o;
@@ -622,9 +624,9 @@
    evas_object_show(o);
 
    o = e_box_add(eb->evas); 
-   eb->box_object = o;
    evas_object_intercept_move_callback_add(o, _engage_bar_cb_intercept_move, 
eb);
-   evas_object_intercept_resize_callback_add(o, 
_engage_bar_cb_intercept_resize, eb);
+   evas_object_intercept_resize_callback_add(o, 
_engage_bar_cb_intercept_resize,eb);
+   eb->box_object = o;
    e_box_freeze(o);
    edje_object_part_swallow(eb->bar_object, "items", o);
    evas_object_show(o);
@@ -687,7 +689,7 @@
    ecore_event_handler_add(ECORE_X_EVENT_SELECTION_NOTIFY, 
_engage_cb_event_dnd_selection, eb);
 
    /* search for available contexts to switch to */
-   if(e->conf->appdir)
+   if(eb->engage->conf->appdir)
      {
        Ecore_List *cons = NULL;
        char buf[4096];
@@ -697,7 +699,8 @@
        homedir = e_user_homedir_get();
        if (homedir)
          {
-            snprintf(buf, sizeof(buf), "%s/.e/e/applications/%s", homedir, 
e->conf->appdir);
+            snprintf(buf, sizeof(buf), "%s/.e/e/applications/%s", homedir,
+                      eb->engage->conf->appdir);
             free(homedir);
          }     
        cons = ecore_file_ls(buf);
@@ -716,7 +719,6 @@
               }
          }
      }
-   
    return eb;
 }
 
@@ -724,6 +726,8 @@
 _engage_bar_free(Engage_Bar *eb)
 {
    e_object_unref(E_OBJECT(eb->con));
+   evas_object_intercept_move_callback_del(eb->box_object, 
_engage_bar_cb_intercept_move);
+   evas_object_intercept_resize_callback_del(eb->box_object, 
_engage_bar_cb_intercept_resize);
 
    e_object_del(E_OBJECT(eb->zoom_size_menu));
    e_object_del(E_OBJECT(eb->zoom_speed_menu));
@@ -959,7 +963,7 @@
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, 
_engage_icon_cb_mouse_wheel, ic);
    evas_object_show(o);
 
-   size = eb->engage->conf->iconsize;
+   size = eb->conf->iconsize;
    o = edje_object_add(eb->evas);
    ic->bg_object = o;
    edje_extern_object_min_size_set(o, size, size);
@@ -1085,7 +1089,7 @@
         "icon_overlay");
 
    evas_object_raise(ai->event_object);
-   evas_object_resize(ai->bg_object, ic->eb->engage->iconbordersize / 2, 
ic->eb->engage->iconbordersize / 2);
+   evas_object_resize(ai->bg_object, ic->eb->conf->iconsize / 2, 
ic->eb->conf->iconsize / 2);
 
    edje_object_signal_emit(ai->bg_object, "passive", "");
    edje_object_signal_emit(ai->overlay_object, "passive", "");
@@ -1497,10 +1501,7 @@
    int edge;
 
    /* Not finished loading config yet! */
-   if ((eb->x == -1)
-       || (eb->y == -1)
-       || (eb->w == -1)
-       || (eb->h == -1))
+   if (!eb->loaded)
      return;
 
    evas_event_freeze(eb->evas);
@@ -1509,15 +1510,15 @@
    edge = e_gadman_client_edge_get(eb->gmc);
    if ((edge == E_GADMAN_EDGE_LEFT) || (edge == E_GADMAN_EDGE_RIGHT))
      {
-       w = eb->engage->iconbordersize;
-       h = evas_list_count(eb->icons) * eb->engage->iconbordersize;
+       w = eb->conf->iconsize;
+       h = evas_list_count(eb->icons) * eb->conf->iconsize;
      }
    else
      {
-       w = evas_list_count(eb->icons) * eb->engage->iconbordersize;
-       h = eb->engage->iconbordersize;
+       w = evas_list_count(eb->icons) * eb->conf->iconsize;
+       h = eb->conf->iconsize;
      }
-   evas_object_resize(eb->event_object, w, h);
+//   evas_object_resize(eb->event_object, w, h);
 
    _engage_tray_freeze(eb);
    edje_object_part_unswallow(eb->bar_object, eb->box_object);
@@ -1525,6 +1526,7 @@
    edje_extern_object_min_size_set(eb->box_object, w, h);
    edje_extern_object_max_size_set(eb->box_object, w, h);
    edje_object_part_swallow(eb->bar_object, "items", eb->box_object);
+   _engage_tray_layout(eb);
 
    edje_object_size_min_calc(eb->bar_object, &w, &h);
    e_gadman_client_resize(eb->gmc, w, h);
@@ -1546,6 +1548,16 @@
    o = eb->bar_object;
    edje_object_signal_emit(o, "set_orientation", 
_engage_main_orientation[edge]);
    edje_object_message_signal_process(o);
+
+   _engage_tray_freeze(eb);
+   if (eb->tray)
+     edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
+   edje_object_part_unswallow(eb->bar_object, eb->box_object);
+   edje_object_size_min_calc(o, &eb->bw, &eb->bh);
+   edje_object_part_swallow(eb->bar_object, "items", eb->box_object);
+   if (eb->tray)
+     edje_object_part_swallow(eb->bar_object, "tray", eb->tray->tray);
+   _engage_tray_thaw(eb);
    _engage_tray_layout(eb);
 
    e_box_freeze(eb->box_object);
@@ -1639,7 +1651,7 @@
    Evas_Coord x, y, w, h, md, md2, xx, yy, app_size, halfapp_size;
    double relx, rely;
    Evas_List *items, *extras;
-   int bordersize, counter;
+   int counter;
    Engage_Icon *prev;
    E_Gadman_Edge edge;
               
@@ -1667,7 +1679,6 @@
    e_box_freeze(eb->box_object);
    items = eb->icons;
    
-   bordersize = eb->engage->iconbordersize - eb->engage->conf->iconsize;
    if (edge == E_GADMAN_EDGE_LEFT || edge == E_GADMAN_EDGE_RIGHT)
      {
        md = my;
@@ -1686,9 +1697,9 @@
          md2 = y + h - my;
        counter = x;
      }
-   app_size = eb->engage->iconbordersize / 1.5;
+   app_size = eb->conf->iconsize / 1.5;
    halfapp_size = app_size / 2;
-   counter += (eb->engage->iconbordersize / 2) + 1;
+   counter += (eb->conf->iconsize / 2) + 1;
    while (items)
      {
        Engage_Icon *icon;
@@ -1698,12 +1709,12 @@
 
        icon = (Engage_Icon *) items->data;
        if (eb->mouse_out != -1)
-         distance = (double) (counter - eb->mouse_out) / 
(eb->engage->iconbordersize);
+         distance = (double) (counter - eb->mouse_out) / (eb->conf->iconsize);
        else
-         distance = (double) (counter - md) / (eb->engage->iconbordersize);
+         distance = (double) (counter - md) / (eb->conf->iconsize);
 
        do_zoom = _engage_zoom_function(distance, &new_zoom, &relative, eb);
-       size = icon->scale * new_zoom * eb->engage->iconbordersize;
+       size = icon->scale * new_zoom * eb->conf->iconsize;
        halfsize = size / 2;
 
        evas_object_image_fill_set(icon->icon_object, 0.0, 0.0, size, size);
@@ -1891,7 +1902,7 @@
 
        prev = icon;
        items = items->next;
-       counter += eb->engage->iconbordersize;
+       counter += eb->conf->iconsize;
      }
 
    e_box_thaw(eb->box_object);
@@ -1992,12 +2003,12 @@
 {
    Engage_Bar *eb;
    E_Gadman_Edge edge;
-   Evas_Coord border;
 
    eb = data;
+   if (w <= eb->bw || h <= eb->bh)
+     return;
 
    evas_object_resize(o, w, h);
-        
    evas_object_resize(eb->event_object, w, h);
    edje_extern_object_min_size_set(eb->box_object, w, h);
    
@@ -2006,14 +2017,6 @@
    else
      edge = E_GADMAN_EDGE_BOTTOM;
 
-   /* FIXME "4" should not be hardcoded, difference between engage->conf->icon
-    * and engage->iconbordersize */
-   border = 4;
-   if (edge == E_GADMAN_EDGE_TOP || edge == E_GADMAN_EDGE_BOTTOM)
-     eb->engage->conf->iconsize = h - border;
-   else
-     eb->engage->conf->iconsize = w - border;
-
    _engage_bar_iconsize_change(eb);
 }
 
@@ -2355,6 +2358,7 @@
 _engage_bar_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change 
change)
 {
    Engage_Bar *eb;
+   int         edge;
 
    eb = data;
    switch (change)
@@ -2362,11 +2366,11 @@
        case E_GADMAN_CHANGE_MOVE_RESIZE:
          e_gadman_client_geometry_get(eb->gmc, &eb->x, &eb->y, &eb->w, &eb->h);
 
-         _engage_tray_freeze(eb);
-         edje_object_part_unswallow(eb->bar_object, eb->box_object);
-         _engage_tray_thaw(eb);
-         edje_extern_object_min_size_set(eb->box_object, eb->w, eb->h);
-         edje_object_part_swallow(eb->bar_object, "items", eb->box_object);
+          edge = e_gadman_client_edge_get(eb->gmc);
+          if (edge == E_GADMAN_EDGE_TOP || edge == E_GADMAN_EDGE_BOTTOM)
+            eb->conf->iconsize = eb->h - eb->bh;
+          else
+            eb->conf->iconsize = eb->w - eb->bw;
 
          evas_object_move(eb->bar_object, eb->x, eb->y);
          evas_object_resize(eb->bar_object, eb->w, eb->h);
@@ -2388,15 +2392,14 @@
 _engage_bar_iconsize_change(Engage_Bar *eb)
 {
    Evas_List *l;
-   Evas_Coord border, size;
+   Evas_Coord size;
 
    e_box_freeze(eb->box_object);
-   size = eb->engage->conf->iconsize;
+   size = eb->conf->iconsize;
    for (l = eb->icons; l; l = l->next)
      {
        Engage_Icon *ic;
        Evas_Object *o;
-       Evas_Coord bw, bh;
 
        ic = l->data;
        o = ic->icon_object;
@@ -2407,17 +2410,14 @@
        evas_object_resize(o, size, size);
        edje_object_part_swallow(ic->bg_object, "item", o);
 
-       edje_object_size_min_calc(ic->bg_object, &bw, &bh);
        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 */
+             size, size, /* min */
+             size, size /* max */
              );
-       border = bw;
      }
-   eb->engage->iconbordersize = border;
    
    e_box_thaw(eb->box_object);
    _engage_bar_frame_resize(eb);
@@ -2652,7 +2652,7 @@
 
    if (!eb->zooming || !eb->conf->zoom)
      {
-       *disp = d * eb->engage->iconbordersize;
+       *disp = d * eb->conf->iconsize;
        *zoom = 1.0;
        return eb->zooming;
      }
@@ -2664,7 +2664,7 @@
 
        if (eb->conf->zoom_stretch)
          {
-            *disp = (eb->engage->iconbordersize) *
+            *disp = (eb->conf->iconsize) *
               ((eb->zoom - 1.0) * (eb->conf->zoom_factor - 1.0) *
                 (range * (x * (2 * sqrt_ff_1 - sqrt_ffxx) -
                   ff * atan(x / sqrt_ffxx)) / (2.0 * (sqrt_ff_1 - f))) + d);
@@ -2673,7 +2673,7 @@
        *zoom = 1.0;
        if (eb->conf->zoom_stretch)
          {
-            *disp = (eb->engage->iconbordersize) *
+            *disp = (eb->conf->iconsize) *
               ((eb->zoom - 1.0) * (eb->conf->zoom_factor - 1.0) *
                 (range * (sqrt_ff_1 - ff * atan(1.0 / sqrt_ff_1)) /
                   (2.0 * (sqrt_ff_1 - f))) + range + fabs(d) - range);
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- e_mod_main.h        10 Dec 2005 15:07:56 -0000      1.23
+++ e_mod_main.h        10 Dec 2005 18:44:50 -0000      1.24
@@ -15,7 +15,6 @@
 struct _Config
 {
    char         *appdir;
-   int           iconsize;
    Evas_List    *bars;
    /*
    double        handle;
@@ -26,6 +25,7 @@
 struct _Config_Bar
 {
    unsigned char enabled;
+   int           iconsize;
    int           zoom;
    double        zoom_factor, zoom_duration;
    int           zoom_stretch;
@@ -39,7 +39,6 @@
    E_Menu      *config_menu;
    
    Config      *conf;
-   Evas_Coord   iconbordersize;
 };
 
 struct _Engage_Tray
@@ -68,12 +67,14 @@
    Evas_Object *bar_object;
    Evas_Object *box_object;
    Evas_Object *event_object;
+   Evas_Coord   bw, bh;
    Evas_Coord   mouse_out;
    
    Evas_List   *icons;   
    Evas_List   *contexts;
    
    double       align, align_req;
+   int          loaded;
    
    Evas_Coord   x, y, w, h;
    double       zoom;
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/tray.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- tray.c      10 Dec 2005 15:37:52 -0000      1.16
+++ tray.c      10 Dec 2005 18:44:50 -0000      1.17
@@ -237,7 +237,7 @@
    Evas_List *wins;
    E_Gadman_Edge edge;
 
-   if (!eb->gmc || !eb->conf)
+   if (!eb->gmc || !eb->conf || !eb->tray)
      return;
 
    edge = e_gadman_client_edge_get(eb->gmc);
@@ -248,11 +248,11 @@
        if (edge == E_GADMAN_EDGE_BOTTOM || edge == E_GADMAN_EDGE_TOP)
          {
             w = 0;
-            h = eb->engage->conf->iconsize;
+            h = eb->conf->iconsize;
          }
        else
          {
-            w = eb->engage->conf->iconsize;
+            w = eb->conf->iconsize;
             h = 0;
          }
        edje_object_part_unswallow(eb->bar_object, eb->tray->tray);
@@ -264,7 +264,7 @@
        return;
      }
 
-   h = eb->engage->conf->iconsize;
+   h = eb->conf->iconsize;
    if (h < 24)
      h = 24;
    c = (h - (h % 24)) / 24;




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to