Enlightenment CVS committal

Author  : handyande
Project : misc
Module  : engage

Dir     : misc/engage/src/module


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Tidy a load of stuff
add running app listening
move min apps to sub icons along with running instances
no events on sub icons yet :(
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_mod_main.c        1 Mar 2005 15:14:57 -0000       1.12
+++ e_mod_main.c        2 Mar 2005 14:41:00 -0000       1.13
@@ -9,8 +9,13 @@
 /* TODO List:
  *
  * immediate fixes needed:
- * * pick up iconified apps on startup
- * * get running app info similar to iconified apps
+ * * hook up event callbacks for Engage_App_Icon s
+ * * render the list of subapps better (semicircle)
+ * * fix mouse overs etc to reach the sub icons
+ * * add emblems to show what is iconified and what is running
+ * * when an app is iconified change tha ai->min bit, not create new icon
+ *
+ * * pick up iconified apps and running apps on startup
  * * zoom and unzoom (eb->zoom from 1.0 to conf->zoom_factor) on timer
  * * bounce icons on click ( following e_app exec hints? )
  *
@@ -47,6 +52,8 @@
 static void    _engage_app_change(void *data, E_App *a, E_App_Change ch);
 static void    _engage_config_menu_new(Engage *e);
 
+static int     _engage_cb_event_border_add(void *data, int type, void *event);
+static int     _engage_cb_event_border_remove(void *data, int type, void 
*event);
 static int     _engage_cb_event_border_iconify(void *data, int type, void 
*event);
 static int     _engage_cb_event_border_uniconify(void *data, int type, void 
*event);
 
@@ -60,11 +67,15 @@
 static void    _engage_bar_update_policy(Engage_Bar *eb);
 static void    _engage_bar_motion_handle(Engage_Bar *eb, Evas_Coord mx, 
Evas_Coord my);
 
-static Engage_Icon *_engage_icon_new(Engage_Bar *eb, E_App *a, int min);
+static Engage_Icon *_engage_icon_new(Engage_Bar *eb, E_App *a);
 static void    _engage_icon_free(Engage_Icon *ic);
 static Engage_Icon *_engage_icon_find(Engage_Bar *eb, E_App *a);
 static void    _engage_icon_reorder_after(Engage_Icon *ic, Engage_Icon *after);
 
+static Engage_App_Icon *_engage_app_icon_new(Engage_Icon *ic, E_Border *bd, 
int min);
+static void    _engage_app_icon_free(Engage_App_Icon *ai);
+static Engage_App_Icon *_engage_app_icon_find(Engage_Icon *ic, E_Border *bd);
+
 static void    _engage_bar_cb_gmc_change(void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change);
 static void    _engage_bar_cb_intercept_move(void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
 static void    _engage_bar_cb_intercept_resize(void *data, Evas_Object *o, 
Evas_Coord w, Evas_Coord h);
@@ -84,6 +95,11 @@
 #if 0
 static void    _engage_icon_reorder_before(Engage_Icon *ic, Engage_Icon 
*before);
 #endif
+static void    _engage_app_icon_cb_intercept_move(void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
+static void    _engage_app_icon_cb_intercept_resize(void *data, Evas_Object 
*o, Evas_Coord w, Evas_Coord h);
+static void    _engage_app_icon_cb_intercept_show(void *data, Evas_Object *o);
+static void    _engage_app_icon_cb_intercept_hide(void *data, Evas_Object *o);
+
 static void    _engage_bar_iconsize_change(Engage_Bar *eb);
 
 static void    _engage_bar_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item 
*mi);
@@ -91,7 +107,7 @@
 
 static void    _engage_bar_cb_menu_zoom(void *data, E_Menu *m, E_Menu_Item 
*mi);
 
-static void    zoom_function(double d, double *zoom, double *disp, Engage_Bar 
*eb);
+static int     zoom_function(double d, double *zoom, double *disp, Engage_Bar 
*eb);
 
 E_App         *_engage_unmatched_app;
 
@@ -328,7 +344,7 @@
                  Engage_Icon *ic;
 
                  e_box_freeze(eb->box_object);
-                 ic = _engage_icon_new(eb, a, 0);
+                 ic = _engage_icon_new(eb, a);
                  if (ic)
                    {
                       for (ll = e->apps->subapps; ll; ll = ll->next)
@@ -364,7 +380,7 @@
                  if (ic) _engage_icon_free(ic);
                  evas_image_cache_flush(eb->evas);
                  evas_image_cache_reload(eb->evas);
-                 ic = _engage_icon_new(eb, a, 0);
+                 ic = _engage_icon_new(eb, a);
                  if (ic)
                    {
                       for (ll = e->apps->subapps; ll; ll = ll->next)
@@ -462,7 +478,7 @@
             Engage_Icon *ic;
 
             a = l->data;
-            ic = _engage_icon_new(eb, a, 0);
+            ic = _engage_icon_new(eb, a);
          }
      }
 
@@ -497,6 +513,10 @@
    */
 
 
+   eb->add_handler = ecore_event_handler_add(E_EVENT_BORDER_ADD,
+        _engage_cb_event_border_add, eb);
+   eb->remove_handler = ecore_event_handler_add(E_EVENT_BORDER_REMOVE,
+        _engage_cb_event_border_remove, eb);
    /* FIXME - these are not really iconify events, we need them to be
     * added to E before we can hook in "properly" */
    eb->iconify_handler = ecore_event_handler_add(E_EVENT_BORDER_HIDE,
@@ -515,8 +535,6 @@
 
    while (eb->icons)
      _engage_icon_free(eb->icons->data);
-   while (eb->min_icons)
-     _engage_icon_free(eb->min_icons->data);
 
    evas_object_del(eb->bar_object);
    evas_object_del(eb->box_object);
@@ -527,6 +545,8 @@
 
    eb->engage->bars = evas_list_remove(eb->engage->bars, eb);
 
+   ecore_event_handler_del(eb->add_handler);
+   ecore_event_handler_del(eb->remove_handler);
    ecore_event_handler_del(eb->iconify_handler);
    ecore_event_handler_del(eb->uniconify_handler);
 
@@ -588,10 +608,9 @@
 }
 
 static Engage_Icon *
-_engage_icon_new(Engage_Bar *eb, E_App *a, int min)
+_engage_icon_new(Engage_Bar *eb, E_App *a)
 {
    Engage_Icon *ic;
-   char *str;
    Evas_Object *o;
    Evas_Coord bw, bh;
 
@@ -600,12 +619,9 @@
    ic->eb = eb;
    ic->app = a;
    ic->scale = 1.0;
+   ic->temp = 0;
    e_object_ref(E_OBJECT(a));
-   ic->min = min?1:0;
-   if (min)
-     eb->min_icons = evas_list_append(eb->min_icons, ic);
-   else
-     eb->icons = evas_list_append(eb->icons, ic);
+   eb->icons = evas_list_append(eb->icons, ic);
 
    o = evas_object_rectangle_add(eb->evas);
    ic->event_object = o;
@@ -637,19 +653,10 @@
 
    o = edje_object_add(eb->evas);
    ic->overlay_object = o;
-   evas_object_intercept_move_callback_add(o, _engage_icon_cb_intercept_move, 
ic);
-   evas_object_intercept_resize_callback_add(o, 
_engage_icon_cb_intercept_resize, ic);
    edje_object_file_set(o, PACKAGE_DATA_DIR "/themes/module.eet", 
         "icon_overlay");
    evas_object_show(o);
 
-   o = edje_object_add(eb->evas);
-   ic->extra_icons = evas_list_append(ic->extra_icons, o);
-   edje_object_file_set(o, ic->app->path, "icon");
-   edje_object_part_swallow(ic->overlay_object, "item", o);
-   evas_object_pass_events_set(o, 1);
-   evas_object_show(o);
-
    evas_object_raise(ic->event_object);
 
    e_box_pack_end(eb->box_object, ic->bg_object);
@@ -669,21 +676,18 @@
 static void
 _engage_icon_free(Engage_Icon *ic)
 {
-   if (ic->min)
-     ic->eb->min_icons = evas_list_remove(ic->eb->min_icons, ic);
-   else
-     ic->eb->icons = evas_list_remove(ic->eb->icons, ic);
+   ic->eb->icons = evas_list_remove(ic->eb->icons, ic);
    if (ic->bg_object) evas_object_del(ic->bg_object);
    if (ic->overlay_object) evas_object_del(ic->overlay_object);
    if (ic->icon_object) evas_object_del(ic->icon_object);
    if (ic->event_object) evas_object_del(ic->event_object);
    while (ic->extra_icons)
      {
-       Evas_Object *o;
+       Engage_App_Icon *ai;
 
-       o = ic->extra_icons->data;
+       ai = ic->extra_icons->data;
        ic->extra_icons = evas_list_remove_list(ic->extra_icons, 
ic->extra_icons);
-       evas_object_del(o);
+       _engage_app_icon_free(ai);
      }
    e_object_unref(E_OBJECT(ic->app));
    free(ic);
@@ -704,6 +708,87 @@
    return NULL;
 }
 
+static Engage_App_Icon *
+_engage_app_icon_new(Engage_Icon *ic, E_Border *bd, int min)
+{
+   Engage_App_Icon *ai;
+   Evas_Object *o;
+   Evas_Coord bw, bh;
+
+   ai = E_NEW(Engage_App_Icon, 1);
+   if (!ai) return NULL;
+   
+   ai->ic = ic;
+   ai->border = bd;
+   e_object_ref(E_OBJECT(bd));
+   ai->min = min?1:0;
+   ic->extra_icons = evas_list_append(ic->extra_icons, ai);
+
+   o = evas_object_rectangle_add(ic->eb->evas);
+   ai->event_object = o;
+   evas_object_layer_set(o, 1);
+   evas_object_color_set(o, 0, 0, 0, 0);
+   evas_object_repeat_events_set(o, 0);
+//   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN,  
_engage_app_icon_cb_mouse_in,  ai);
+//   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_OUT, 
_engage_app_icon_cb_mouse_out, ai);
+//   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
_engage_app_icon_cb_mouse_down, ai);
+//   evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, 
_engage_app_icon_cb_mouse_up, ai);
+
+   o = edje_object_add(ic->eb->evas);
+   ai->bg_object = o;
+   evas_object_intercept_move_callback_add(o, 
_engage_app_icon_cb_intercept_move, ai);
+   evas_object_intercept_resize_callback_add(o, 
_engage_app_icon_cb_intercept_resize, ai);
+   evas_object_intercept_show_callback_add(o, 
_engage_app_icon_cb_intercept_show, ai);
+   evas_object_intercept_hide_callback_add(o, 
_engage_app_icon_cb_intercept_hide, ai);
+   edje_object_file_set(o, PACKAGE_DATA_DIR "/themes/module.eet", "icon");
+
+   o = edje_object_add(ic->eb->evas);
+   ai->icon_object = o;
+   edje_object_file_set(o, ic->app->path, "icon");
+   edje_object_part_swallow(ai->bg_object, "item", o);
+   edje_object_size_min_calc(ai->bg_object, &bw, &bh);
+   evas_object_pass_events_set(o, 1);
+
+   o = edje_object_add(ic->eb->evas);
+   ai->overlay_object = o;
+   edje_object_file_set(o, PACKAGE_DATA_DIR "/themes/module.eet", 
+        "icon_overlay");
+
+   evas_object_raise(ai->event_object);
+   evas_object_resize(ai->bg_object, ic->eb->engage->conf->iconsize / 2, 
ic->eb->engage->conf->iconsize / 2);
+
+   edje_object_signal_emit(ai->bg_object, "passive", "");
+   edje_object_signal_emit(ai->overlay_object, "passive", "");
+   return ai;
+}
+
+static void
+_engage_app_icon_free(Engage_App_Icon *ai)
+{
+   ai->ic->extra_icons = evas_list_remove(ai->ic->extra_icons, ai);
+   if (ai->bg_object) evas_object_del(ai->bg_object);
+   if (ai->overlay_object) evas_object_del(ai->overlay_object);
+   if (ai->icon_object) evas_object_del(ai->icon_object);
+   if (ai->event_object) evas_object_del(ai->event_object);
+   e_object_unref(E_OBJECT(ai->border));
+   free(ai);
+}
+
+static Engage_App_Icon *
+_engage_app_icon_find(Engage_Icon *ic, E_Border *bd)
+{
+   Evas_List *l;
+
+   for (l = ic->extra_icons; l; l = l->next)
+     {
+       Engage_App_Icon *ai;
+
+       ai = l->data;
+       if (ai->border == bd) return ai;
+     }
+   return NULL;
+}
+
 void
 _engage_config_menu_new(Engage *e)
 {
@@ -732,10 +817,84 @@
 }
 
 static int
+_engage_cb_event_border_add(void *data, int type, void *event)
+{
+   Engage_Bar *eb;
+   Engage_Icon *ic;
+   Engage_App_Icon *ai;
+   E_Event_Border_Add *e;
+   E_App *app;
+
+   e = event;
+   eb = data;
+   if (e->border->container != eb->con)
+     return;
+
+   app = e_app_window_name_class_find(e->border->client.icccm.name,
+                                     e->border->client.icccm.class);
+   if (!app)
+     app = _engage_unmatched_app;
+   ic = _engage_icon_find(eb, app);
+   if (!ic)
+     {
+       ic = _engage_icon_new(eb, app);
+       ic->temp = 1;
+       _engage_bar_frame_resize(eb);
+     }
+   if (ic)
+     {
+       ai = _engage_app_icon_new(ic, e->border, 0);
+     }
+}
+
+static int
+_engage_cb_event_border_remove(void *data, int type, void *event)
+{
+   Engage_Bar *eb;
+   Engage_Icon *ic;
+   Engage_App_Icon *ai;
+   E_Event_Border_Remove *e;
+   E_App *app;
+   Evas_List *icons;
+
+   e = event;
+   eb = data;
+
+   if (e->border->container != eb->con)
+     return;
+
+   app = e_app_window_name_class_find(e->border->client.icccm.name,
+                                     e->border->client.icccm.class);
+   if (!app)
+     app = _engage_unmatched_app;
+   ic = _engage_icon_find(eb, app);
+   if (!ic)
+     return;
+
+   icons = ic->extra_icons;
+   while (icons)
+     {
+       ai = icons->data;
+       if (ai->border == e->border)
+         {
+             _engage_app_icon_free(ai);
+             if (!ic->extra_icons && ic->temp == 1)
+               {
+                  _engage_icon_free(ic);
+                  _engage_bar_frame_resize(eb);
+               }                                     
+             break;
+         }
+       icons = icons->next;
+     }
+}
+
+static int
 _engage_cb_event_border_iconify(void *data, int type, void *event)
 {
    Engage_Bar *eb;
    Engage_Icon *ic;
+   Engage_App_Icon *ai;
    E_Event_Border_Hide *e;
    E_App *app;
 
@@ -743,19 +902,24 @@
    eb = data;
    if (e->border->container != eb->con)
      return;
-   
+
+   /* FIXME we can remove this when this is a real iconify event */
    if (!e->border->iconic)
      return;
    app = e_app_window_name_class_find(e->border->client.icccm.name,
                                      e->border->client.icccm.class);
    if (!app)
      app = _engage_unmatched_app;
-   if (app)
+   ic = _engage_icon_find(eb, app);
+   if (!ic)
      {
-       ic = _engage_icon_new(eb, app, 1);
+       ic = _engage_icon_new(eb, app);
+       ic->temp = 1;
        _engage_bar_frame_resize(eb);
-       ic->border = e->border;
-       e_object_ref(E_OBJECT(e->border));
+     }
+   if (ic)
+     {
+       ai = _engage_app_icon_new(ic, e->border, 1);
      }
 }
 
@@ -764,6 +928,7 @@
 {
    Engage_Bar *eb;
    Engage_Icon *ic;
+   Engage_App_Icon *ai;
    E_Event_Border_Show *e;
    E_App *app;
    Evas_List *icons;
@@ -774,15 +939,26 @@
    if (e->border->container != eb->con)
      return;
 
-   icons = eb->min_icons;
+   app = e_app_window_name_class_find(e->border->client.icccm.name,
+                                     e->border->client.icccm.class);
+   if (!app)
+     app = _engage_unmatched_app;
+   ic = _engage_icon_find(eb, app);
+   if (!ic)
+     return;
+
+   icons = ic->extra_icons;
    while (icons)
      {
-       ic = icons->data;
-       if (ic->border == e->border)
+       ai = icons->data;
+       if (ai->min && ai->border == e->border)
          {
-            e_object_unref(E_OBJECT(ic->border));
-             _engage_icon_free(ic);
-             _engage_bar_frame_resize(eb);
+             _engage_app_icon_free(ai);
+             if (!ic->extra_icons && ic->temp == 1)
+               {
+                  _engage_icon_free(ic);
+                  _engage_bar_frame_resize(eb);
+               }                                     
              break;
          }
        icons = icons->next;
@@ -880,7 +1056,6 @@
    Evas_Object *o;
    E_Gadman_Policy policy;
    int changed;
-   int done_min;
 
    evas_event_freeze(eb->evas);
    o = eb->bar_object;
@@ -888,9 +1063,8 @@
    edje_object_message_signal_process(o);
 
    e_box_freeze(eb->box_object);
-   done_min = 0;
    l = eb->icons;
-   while (l)
+   for (l = eb->icons; l; l = l->next)
      {
        Engage_Icon *ic;
 
@@ -911,13 +1085,6 @@
                               bw, bh, /* min */
                               bw, bh /* max */
                               );
-
-       l = l->next;
-       if (!l->next && !done_min)
-         {
-            done_min = 1;
-            l = eb->min_icons;
-         }
      }
 
    eb->align_req = 0.5;
@@ -983,10 +1150,10 @@
 static void
 _engage_bar_motion_handle(Engage_Bar *eb, Evas_Coord mx, Evas_Coord my)
 {
-   Evas_Coord x, y, w, h, md;
+   Evas_Coord x, y, w, h, md, xx, yy;
    double relx, rely, left, right, dummy;
-   Evas_List *items;
-   int bordersize, counter, done_min;
+   Evas_List *items, *extras;
+   int bordersize, counter;
    Engage_Icon *prev;
    E_Gadman_Edge edge;
               
@@ -1024,46 +1191,79 @@
        counter = x;
      }
    counter += (eb->engage->iconbordersize / 2) + 1;
-   done_min = 0;
    while (items)
      {
        Engage_Icon *icon;
-       double          distance, new_zoom, relative, size;
+       double       distance, new_zoom, relative, size;
+       int          do_zoom;
 
        icon = (Engage_Icon *) items->data;
        distance = (double) (counter - md) / (eb->engage->iconbordersize);
 
-       if (-0.5 < distance && distance < 0.5)
-         {
-            evas_object_raise(icon->icon_object);
-            evas_object_show(icon->event_object);
-            if (prev)
-              evas_object_hide(prev->event_object);
-         }
-       else
-         evas_object_hide(icon->event_object);
-       zoom_function(distance, &new_zoom, &relative, eb);
+       do_zoom = zoom_function(distance, &new_zoom, &relative, eb);
        size = icon->scale * new_zoom * eb->engage->iconbordersize;
        evas_object_image_fill_set(icon->icon_object, 0.0, 0.0, size, size);
        evas_object_resize(icon->bg_object, size, size);
+       xx = x;
+       yy = y;
        if (edge == E_GADMAN_EDGE_LEFT)
-         evas_object_move(icon->bg_object, x, counter - 0.5 * size);
+         yy = counter - 0.5 * size;
        else if (edge == E_GADMAN_EDGE_RIGHT)
-         evas_object_move(icon->bg_object, x + w - size, counter - 0.5 * size);
+         {
+            x = x + w - size;
+            y = counter - 0.5 * size;
+         }
        else if (edge == E_GADMAN_EDGE_TOP)
-         evas_object_move(icon->bg_object, counter - 0.5 * size, y);
+         xx = counter - 0.5 * size;
        else
-         evas_object_move(icon->bg_object, counter - 0.5 * size, y + h - size);
+         {
+            xx = counter - 0.5 * size;
+            yy = y + h - size;
+         }
+       evas_object_move(icon->bg_object, xx, yy);
 
-       prev = icon;
-       items = items->next;
-       counter += eb->engage->iconbordersize;
+       if (edge == E_GADMAN_EDGE_LEFT)
+         xx += size;
+       else if (edge == E_GADMAN_EDGE_RIGHT)
+         xx -= size;
+       else if (edge == E_GADMAN_EDGE_TOP)
+         yy += size;
+       else
+         yy -= size;
+       if (do_zoom && -0.5 < distance && distance < 0.5)
+         {
+            evas_object_raise(icon->icon_object);
+            evas_object_show(icon->event_object);
+ 
+            for (extras = icon->extra_icons; extras; extras = extras->next)
+              {
+                 Engage_App_Icon *ai;
+
+                 ai = extras->data;
+                 evas_object_show(ai->bg_object);
+                 evas_object_move(ai->bg_object, xx, yy);
 
-       if (!items && !done_min) 
+                 if (edge == E_GADMAN_EDGE_LEFT || edge == E_GADMAN_EDGE_RIGHT)
+                   yy += eb->engage->iconbordersize / 2;
+                 else
+                   xx += eb->engage->iconbordersize / 2;
+              }
+         }
+       else
          {
-            done_min = 1;
-            items = eb->min_icons;
+            evas_object_hide(icon->event_object);
+            for (extras = icon->extra_icons; extras; extras = extras->next)
+              {
+                  Engage_App_Icon *ai;
+
+                  ai = extras->data;
+                  evas_object_hide(ai->bg_object);
+              }
          }
+
+       prev = icon;
+       items = items->next;
+       counter += eb->engage->iconbordersize;
      }
 
    e_box_thaw(eb->box_object);
@@ -1092,6 +1292,50 @@
 }
 
 static void
+_engage_app_icon_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, 
Evas_Coord y)
+{
+   Engage_App_Icon *ai;
+
+   ai = data;
+   evas_object_move(o, x, y);
+   evas_object_move(ai->event_object, x, y);
+   evas_object_move(ai->overlay_object, x, y);
+}
+
+static void
+_engage_app_icon_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, 
Evas_Coord h)
+{
+   Engage_App_Icon *ai;
+
+   ai = data;
+   evas_object_resize(o, w, h);
+   evas_object_resize(ai->event_object, w, h);
+   evas_object_resize(ai->overlay_object, w, h);
+}
+
+static void
+_engage_app_icon_cb_intercept_show(void *data, Evas_Object *o)
+{
+   Engage_App_Icon *ai;
+
+   ai = data;
+   evas_object_show(o);
+   evas_object_show(ai->event_object);
+   evas_object_show(ai->overlay_object);
+}
+
+static void
+_engage_app_icon_cb_intercept_hide(void *data, Evas_Object *o)
+{
+   Engage_App_Icon *ai;
+
+   ai = data;
+   evas_object_hide(o);
+   evas_object_hide(ai->event_object);
+   evas_object_hide(ai->overlay_object);
+}
+
+static void
 _engage_bar_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, 
Evas_Coord y)
 {
    Engage_Bar *eb;
@@ -1167,17 +1411,9 @@
    ic = data;
    if (ev->button == 1)
      {
-       if (ic->min)
-         {
-            e_border_uniconify(ic->border);
-            e_border_raise(ic->border);
-         }
-       else
-         {
-            edje_object_signal_emit(ic->bg_object, "start", "");
-            edje_object_signal_emit(ic->overlay_object, "start", "");
-            e_app_exec(ic->app);
-         }
+       edje_object_signal_emit(ic->bg_object, "start", "");
+       edje_object_signal_emit(ic->overlay_object, "start", "");
+       e_app_exec(ic->app);
      }
 }
 
@@ -1324,9 +1560,7 @@
    int done_mins;
 
    e_box_freeze(eb->box_object);
-   done_mins = 0;
-   l = eb->icons;
-   while (l)
+   for (l = eb->icons; l; l = l->next)
      {
        Engage_Icon *ic;
        Evas_Object *o;
@@ -1349,13 +1583,6 @@
              bw, bh, /* min */
              bw, bh /* max */
              );
-
-       l = l->next;
-       if (!l && !done_mins)
-         {
-            done_mins = 1;
-            l = eb->min_icons;
-         }
      }
    eb->engage->iconbordersize = border;
    
@@ -1404,7 +1631,7 @@
 /* engage ported functions */
 
 
-void
+static int
 zoom_function(double d, double *zoom, double *disp, Engage_Bar *eb)
 {
    double          range, f, x;
@@ -1419,29 +1646,35 @@
    sqrt_ffxx = sqrt(ff - x * x);
    sqrt_ff_1 = sqrt(ff - 1.0);
 
-   if (!eb->conf->zoom)
+   if (eb->zoom == 1.0)
      {
        *disp = d * eb->engage->iconbordersize;
        *zoom = 1.0;
-       return;
+       return 0;
      }
 
    if (d > -range && d < range)
      {
        *zoom = (eb->zoom - 1.0) * (eb->conf->zoom_factor - 1.0) *
            ((sqrt_ff_1 - sqrt_ffxx) / (sqrt_ff_1 - f)) + 1.0;
+/* disp is not currently used, so free up some cycles */
+#if 0
        *disp = (eb->engage->iconbordersize) *
            ((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);
+#endif
       } else {
        *zoom = 1.0;
+#if 0
        *disp = (eb->engage->iconbordersize) *
            ((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);
        if (d < 0.0)
           *disp = -(*disp);
+#endif
       }
+   return 1;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/misc/engage/src/module/e_mod_main.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_mod_main.h        28 Feb 2005 12:45:56 -0000      1.3
+++ e_mod_main.h        2 Mar 2005 14:41:00 -0000       1.4
@@ -9,6 +9,7 @@
 typedef struct _Engage        Engage;
 typedef struct _Engage_Bar    Engage_Bar;
 typedef struct _Engage_Icon   Engage_Icon;
+typedef struct _Engage_App_Icon Engage_App_Icon;
 
 struct _Config
 {
@@ -50,7 +51,6 @@
    Evas_Object *event_object;
    
    Evas_List   *icons;
-   Evas_List   *min_icons;
    
    double          align, align_req;
    
@@ -60,6 +60,8 @@
    E_Gadman_Client *gmc;
 
    Config_Bar     *conf;
+   Ecore_Event_Handler *add_handler;
+   Ecore_Event_Handler *remove_handler;
    Ecore_Event_Handler *iconify_handler;
    Ecore_Event_Handler *uniconify_handler;
 };
@@ -75,6 +77,17 @@
    Evas_List     *extra_icons;
 
    double         scale;
+   int            temp;
+};
+
+struct _Engage_App_Icon
+{
+   Engage_Icon   *ic;
+   Evas_Object   *bg_object;
+   Evas_Object   *overlay_object;
+   Evas_Object   *icon_object;
+   Evas_Object   *event_object;
+
    int            min;
    E_Border      *border;
 };




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to