Enlightenment CVS committal

Author  : iamsthitha
Project : e_modules
Module  : taskbar

Dir     : e_modules/taskbar


Modified Files:
        Makefile.am config.h.in configure.in e_mod_main.c e_mod_main.h 
Added Files:
        e_mod_config.c 


Log Message:
-Added a config dialog
-"Popular" Taskbar functionality
-Old theme still available as taskbar2.edj
-A few bug fixes


===================================================================
RCS file: /cvs/e/e_modules/taskbar/Makefile.am,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Makefile.am 13 Jun 2006 23:54:41 -0000      1.1
+++ Makefile.am 22 Jun 2006 05:30:18 -0000      1.2
@@ -18,7 +18,8 @@
 pkgdir                 = $(datadir)/$(MODULE_ARCH)
 pkg_LTLIBRARIES        = module.la
 module_la_SOURCES      = e_mod_main.c \
-                       e_mod_main.h 
+                       e_mod_main.h \
+                       e_mod_config.c  
                        
 module_la_LIBADD       = @e_libs@
 module_la_LDFLAGS      = -module -avoid-version
===================================================================
RCS file: /cvs/e/e_modules/taskbar/config.h.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- config.h.in 13 Jun 2006 23:54:41 -0000      1.1
+++ config.h.in 22 Jun 2006 05:30:18 -0000      1.2
@@ -36,6 +36,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Module Locale Directory */
+#undef LOCALEDIR
+
 /* "Module architecture" */
 #undef MODULE_ARCH
 
===================================================================
RCS file: /cvs/e/e_modules/taskbar/configure.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- configure.in        13 Jun 2006 23:54:41 -0000      1.1
+++ configure.in        22 Jun 2006 05:30:18 -0000      1.2
@@ -94,6 +94,16 @@
     AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, 
"${prefix}/lib/enlightenment/modules/${PACKAGE}", "Package installed data 
destination")
     datadir="${prefix}/lib/enlightenment/modules/${PACKAGE}"    
 fi
+
+AC_PREFIX_DEFAULT(${HOME}/.e/e)
+if test "x$prefix" = "xNONE"; then
+  datarootdir=${ac_default_prefix}
+else
+  datarootdir=${prefix}/share
+fi
+localedir=${datarootdir}/locale
+AC_SUBST(LOCALEDIR, "${localedir}")
+AC_DEFINE_UNQUOTED(LOCALEDIR, "${localedir}", [Module Locale Directory])
          
 #AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
 #AC_SUBST(dlopen_libs)
===================================================================
RCS file: /cvs/e/e_modules/taskbar/e_mod_main.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_mod_main.c        14 Jun 2006 00:09:11 -0000      1.2
+++ e_mod_main.c        22 Jun 2006 05:30:18 -0000      1.3
@@ -7,7 +7,7 @@
 /***************************************************************************/
  /**/
 /* gadcon requirements */
-static E_Gadcon_Client *_gc_init(E_Gadcon *gc, char *name, char *id, char 
*style);
+static E_Gadcon_Client *_gc_init(E_Gadcon *gc, const char *name, const char 
*id, const char *style);
 static void _gc_shutdown(E_Gadcon_Client *gcc);
 static void _gc_orient(E_Gadcon_Client *gcc);
 static char *_gc_label(void);
@@ -35,22 +35,24 @@
    E_Gadcon_Client *gcc;
    Evas_Object *o_taskbar;
    Taskbar *taskbar;
-   E_Drop_Handler *drop_handler;
-   Ecore_Timer *drop_recalc_timer;
 };
 
 struct _Taskbar
 {
    Instance *inst;
    Evas_Object *o_box;
-   Evas_Object *o_drop;
-   Evas_Object *o_drop_over;
    Evas_Object *o_empty;
-   Taskbar_Icon *ic_drop_before;
-   int drop_before;
    Evas_List *icons;
-   int show_label;
+   Evas_List *borders;
    E_Zone *zone;
+   int xpos;
+   int ypos;
+   int xmax;
+   int ymax;
+   int bwidth;
+   int bheight;
+   int bwmin;
+   int bhmin;
 };
 
 struct _Taskbar_Icon
@@ -61,13 +63,6 @@
    Evas_Object *o_holder2;
    Evas_Object *o_icon2;
    E_Border *border;
-   struct
-   {
-      unsigned char start:1;
-      unsigned char dnd:1;
-      int x, y;
-      int dx, dy;
-   } drag;
 };
 
 static Taskbar *_taskbar_new(Evas *evas, E_Zone * zone);
@@ -75,33 +70,29 @@
 static void _taskbar_cb_empty_mouse_down(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 static void _taskbar_empty_handle(Taskbar * b);
 static void _taskbar_fill(Taskbar * b);
+static void _taskbar_repack(Taskbar * b);
 static void _taskbar_empty(Taskbar * b);
 static void _taskbar_orient_set(Taskbar * b, int horizontal);
 static void _taskbar_resize_handle(Taskbar * b);
-static void _taskbar_instance_drop_zone_recalc(Instance *inst);
 static Taskbar_Icon *_taskbar_icon_find(Taskbar * b, E_Border * bd);
 static Taskbar_Icon *_taskbar_icon_at_coord(Taskbar * b, Evas_Coord x, 
Evas_Coord y);
 static Taskbar_Icon *_taskbar_icon_new(Taskbar * b, E_Border * bd);
+static void _taskbar_icon_add(Taskbar * b, E_Border * bd);
+static void _taskbar_icon_remove(Taskbar * b, Taskbar_Icon * ic);
 static void _taskbar_icon_free(Taskbar_Icon * ic);
 static void _taskbar_icon_fill(Taskbar_Icon * ic);
 static void _taskbar_icon_empty(Taskbar_Icon * ic);
 static void _taskbar_icon_signal_emit(Taskbar_Icon * ic, char *sig, char *src);
 static Taskbar *_taskbar_zone_find(E_Zone * zone);
-static int _taskbar_cb_timer_drop_recalc(void *data);
 static void _taskbar_cb_obj_moveresize(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
+static void _taskbar_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
 static void _taskbar_cb_menu_post(void *data, E_Menu *m);
 static void _taskbar_cb_icon_mouse_in(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _taskbar_cb_icon_mouse_out(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _taskbar_cb_icon_mouse_down(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _taskbar_cb_icon_mouse_up(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
-static void _taskbar_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _taskbar_cb_icon_move(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _taskbar_cb_icon_resize(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
-static void _taskbar_cb_drag_finished(E_Drag *drag, int dropped);
-static void _taskbar_inst_cb_enter(void *data, const char *type, void 
*event_info);
-static void _taskbar_inst_cb_move(void *data, const char *type, void 
*event_info);
-static void _taskbar_inst_cb_leave(void *data, const char *type, void 
*event_info);
-static void _taskbar_inst_cb_drop(void *data, const char *type, void 
*event_info);
 static int _taskbar_cb_event_border_add(void *data, int type, void *event);
 static int _taskbar_cb_event_border_remove(void *data, int type, void *event);
 static int _taskbar_cb_event_border_iconify(void *data, int type, void *event);
@@ -111,12 +102,17 @@
 static int _taskbar_cb_event_border_desk_set(void *data, int type, void 
*event);
 static int _taskbar_cb_window_focus_in(void *data, int type, void *event);
 static int _taskbar_cb_window_focus_out(void *data, int type, void *event);
+static int _taskbar_cb_window_property(void *data, int type, void *event);
 static int _taskbar_cb_event_desk_show(void *data, int type, void *event);
+static Config_Item *_taskbar_config_item_get(const char *id);
+
+static E_Config_DD *conf_edd = NULL;
+static E_Config_DD *conf_item_edd = NULL;
 
 Config *taskbar_config = NULL;
 
 static E_Gadcon_Client *
-_gc_init(E_Gadcon *gc, char *name, char *id, char *style)
+_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
 {
    Taskbar *b;
    Evas_Object *o;
@@ -124,12 +120,14 @@
    Instance *inst;
    Evas_Coord x, y, w, h;
    int cx, cy, cw, ch;
-   const char *drop[] = { "enlightenment/border" };
+   Config_Item *ci;
 
    inst = E_NEW(Instance, 1);
+   ci = _taskbar_config_item_get(id);
+   if (!ci->id) ci->id = evas_stringshare_add(id);
 
    b = _taskbar_new(gc->evas, gc->zone);
-   b->show_label = 1;
+
    b->inst = inst;
    inst->taskbar = b;
    o = b->o_box;
@@ -141,15 +139,9 @@
 
    e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, &ch);
    evas_object_geometry_get(o, &x, &y, &w, &h);
-   inst->drop_handler =
-      e_drop_handler_add(inst,
-                         _taskbar_inst_cb_enter, _taskbar_inst_cb_move,
-                         _taskbar_inst_cb_leave, _taskbar_inst_cb_drop, drop, 
1, cx + x, cy + y, w, h);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, 
_taskbar_cb_obj_moveresize, inst);
    evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, 
_taskbar_cb_obj_moveresize, inst);
    taskbar_config->instances = evas_list_append(taskbar_config->instances, 
inst);
-   /* FIXME: HACK!!!! */
-   inst->drop_recalc_timer = ecore_timer_add(1.0, 
_taskbar_cb_timer_drop_recalc, inst);
    return gcc;
 }
 
@@ -159,9 +151,7 @@
    Instance *inst;
 
    inst = gcc->data;
-   ecore_timer_del(inst->drop_recalc_timer);
    taskbar_config->instances = evas_list_remove(taskbar_config->instances, 
inst);
-   e_drop_handler_del(inst->drop_handler);
    _taskbar_free(inst->taskbar);
    free(inst);
 }
@@ -170,8 +160,10 @@
 _gc_orient(E_Gadcon_Client *gcc)
 {
    Instance *inst;
+   int w;
 
    inst = gcc->data;
+   
    switch (gcc->gadcon->orient)
      {
      case E_GADCON_ORIENT_FLOAT:
@@ -183,7 +175,10 @@
      case E_GADCON_ORIENT_CORNER_BL:
      case E_GADCON_ORIENT_CORNER_BR:
         _taskbar_orient_set(inst->taskbar, 1);
-        e_gadcon_client_aspect_set(gcc, evas_list_count(inst->taskbar->icons) 
* 16, 16);
+        //e_gadcon_client_aspect_set(gcc, 
evas_list_count(inst->taskbar->borders) * 16 * 3, 16);
+       w =evas_list_count(inst->taskbar->borders);
+
+       e_gadcon_client_aspect_set(gcc, w * inst->taskbar->bwmin, 
inst->taskbar->bheight);
         break;
      case E_GADCON_ORIENT_VERT:
      case E_GADCON_ORIENT_LEFT:
@@ -193,12 +188,12 @@
      case E_GADCON_ORIENT_CORNER_LB:
      case E_GADCON_ORIENT_CORNER_RB:
         _taskbar_orient_set(inst->taskbar, 0);
-        e_gadcon_client_aspect_set(gcc, 16, 
evas_list_count(inst->taskbar->icons) * 16);
+        e_gadcon_client_aspect_set(gcc, 16, 
evas_list_count(inst->taskbar->borders) * 16 * 3);
         break;
      default:
         break;
      }
-   if (evas_list_count(inst->taskbar->icons) < 1)
+   if (evas_list_count(inst->taskbar->borders) < 1)
       e_gadcon_client_aspect_set(gcc, 16, 16);
    e_gadcon_client_min_size_set(gcc, 16, 16);
 }
@@ -229,15 +224,18 @@
    Taskbar *b;
 
    b = E_NEW(Taskbar, 1);
-   b->o_box = e_box_add(evas);
+   b->o_box = e_table_add(evas);
+   b->xpos = 0;
+   b->ypos = 0;
+   b->xmax = 1;
+   b->ymax = 1;
 
    Evas_Coord w, h;
 
    evas_object_geometry_get(b->o_box, NULL, NULL, &w, &h);
 
-   e_box_homogenous_set(b->o_box, 0);
-   e_box_orientation_set(b->o_box, 1);
-   e_box_align_set(b->o_box, 0.5, 0.5);
+   e_table_homogenous_set(b->o_box, 0);
+   e_table_align_set(b->o_box, 0.5, 0.5);
    b->zone = zone;
    _taskbar_fill(b);
    return b;
@@ -248,10 +246,6 @@
 {
    _taskbar_empty(b);
    evas_object_del(b->o_box);
-   if (b->o_drop)
-      evas_object_del(b->o_drop);
-   if (b->o_drop_over)
-      evas_object_del(b->o_drop_over);
    if (b->o_empty)
       evas_object_del(b->o_empty);
    free(b);
@@ -269,12 +263,18 @@
    if (!taskbar_config->menu)
      {
         E_Menu *mn;
+       E_Menu_Item *mi;
         int cx, cy, cw, ch;
 
         mn = e_menu_new();
         e_menu_post_deactivate_callback_set(mn, _taskbar_cb_menu_post, NULL);
         taskbar_config->menu = mn;
 
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Configuration"));
+       e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
+       e_menu_item_callback_set(mi, _taskbar_cb_menu_configure, b);
+
         e_gadcon_client_util_menu_items_append(b->inst->gcc, mn, 0);
 
         e_gadcon_canvas_zone_geometry_get(b->inst->gcc->gadcon, &cx, &cy, &cw, 
&ch);
@@ -288,7 +288,7 @@
 static void
 _taskbar_empty_handle(Taskbar * b)
 {
-   if (!b->icons)
+   if (!b->borders)
      {
         if (!b->o_empty)
           {
@@ -298,17 +298,15 @@
              evas_object_event_callback_add(b->o_empty, 
EVAS_CALLBACK_MOUSE_DOWN, _taskbar_cb_empty_mouse_down, b);
              evas_object_color_set(b->o_empty, 0, 0, 0, 0);
              evas_object_show(b->o_empty);
-             e_box_pack_end(b->o_box, b->o_empty);
+             e_table_pack(b->o_box, b->o_empty, 0, 0, 1, 1);
              evas_object_geometry_get(b->o_box, NULL, NULL, &w, &h);
-             if (e_box_orientation_get(b->o_box))
-                w = h;
-             else
-                h = w;
-             e_box_pack_options_set(b->o_empty, 1, 1,   /* fill */
-                                    1, 1,       /* expand */
-                                    0.5, 0.5,   /* align */
-                                    w, h,       /* min */
-                                    w, h        /* max */
+
+            //edje_object_size_min_calc(b->o_box, &w, &h);
+             e_table_pack_options_set(b->o_empty, 1, 1,   /* fill */
+                                    1, 1,                 /* expand */
+                                    0.5, 0.5,             /* align */
+                                    0, 0,                 /* min */
+                                    -1, -1                /* max */
                 );
           }
      }
@@ -335,13 +333,27 @@
            continue;
         if (((bd->desk == e_desk_current_get(b->zone)) && (bd->zone == 
b->zone)) || (bd->sticky))
           {
+            b->borders = evas_list_append(b->borders, bd);
              ic = _taskbar_icon_new(b, bd);
              b->icons = evas_list_append(b->icons, ic);
-             e_box_pack_end(b->o_box, ic->o_holder);
+             e_table_pack(b->o_box, ic->o_holder, b->xpos, b->ypos, 1, 1);
+            e_table_pack_options_set(ic->o_holder, 0, 0,                     
/* fill */
+                                                   0, 0,                     
/* expand */
+                                                   0.5, 0.5,                 
/* align */
+                                                   b->bwidth, b->bheight,    
/* min */
+                                                   b->bwidth, b->bheight     
/* max */
+                  );
              if (bd->iconic)
-                _taskbar_icon_signal_emit(ic, "iconify", "");
+                _taskbar_icon_signal_emit(ic, "instant_iconify", "");
              if (bd->focused)
-                _taskbar_icon_signal_emit(ic, "focused", "");
+                _taskbar_icon_signal_emit(ic, "instant_focused", "");
+            b->xpos++;
+            if (b->xpos >= b->xmax)
+              {
+                 b->xpos = 0;
+                 b->ypos ++;
+                 //if (b->ypos >= b->ymax)
+              }
           }
      }
 
@@ -350,6 +362,52 @@
 }
 
 static void
+_taskbar_repack(Taskbar * b)
+{
+   Evas_List *borders;
+   E_Border *bd;
+   Taskbar_Icon *ic;
+
+   e_table_freeze(b->o_box);
+   
+   while (b->icons)
+     {
+       _taskbar_icon_free(b->icons->data);
+       b->icons = evas_list_remove_list(b->icons, b->icons);
+     }
+   b->xpos = 0;
+   b->ypos = 0;
+
+   for(borders = b->borders; borders; borders = evas_list_next(borders))
+     {
+       bd = borders->data;
+       ic = _taskbar_icon_new(b, bd);
+       b->icons = evas_list_append(b->icons, ic);
+       e_table_pack(b->o_box, ic->o_holder, b->xpos, b->ypos, 1, 1);
+       e_table_pack_options_set(ic->o_holder, 0, 0,                     /* 
fill */
+                                              0, 0,                     /* 
expand */
+                                              0.5, 0.5,                 /* 
align */
+                                              b->bwidth, b->bheight,    /* min 
*/
+                                              b->bwidth, b->bheight     /* max 
*/
+             );
+
+       if (bd->iconic)
+         _taskbar_icon_signal_emit(ic, "instant_iconify", "");
+       if (bd->focused)
+         _taskbar_icon_signal_emit(ic, "instant_focused", "");
+       b->xpos++;
+       if (b->xpos >= b->xmax)
+         {
+            b->xpos = 0;
+            b->ypos ++;
+            //if (b->ypos >= b->ymax)
+         }
+     }
+
+   e_table_thaw(b->o_box);
+}
+
+static void
 _taskbar_empty(Taskbar * b)
 {
    while (b->icons)
@@ -357,14 +415,19 @@
         _taskbar_icon_free(b->icons->data);
         b->icons = evas_list_remove_list(b->icons, b->icons);
      }
+   while (b->borders)
+     {
+       b->borders = evas_list_remove_list(b->borders, b->borders);
+     }
+   b->xpos = 0;
+   b->ypos = 0;
    _taskbar_empty_handle(b);
 }
 
 static void
 _taskbar_orient_set(Taskbar * b, int horizontal)
 {
-   e_box_orientation_set(b->o_box, horizontal);
-   e_box_align_set(b->o_box, 0.5, 0.5);
+   e_table_align_set(b->o_box, 0.5, 0.5);
 }
 
 static void
@@ -372,36 +435,30 @@
 {
    Evas_List *l;
    Taskbar_Icon *ic;
-   Evas_Coord w, h;
+   Evas_Coord w, h, wmin, hmin;
+   int wnum, wnum2, hnum;
 
    evas_object_geometry_get(b->o_box, NULL, NULL, &w, &h);
-   if (e_box_orientation_get(b->o_box))
-      w = h;
-   else
-      h = w;
-   e_box_freeze(b->o_box);
-   for (l = b->icons; l; l = l->next)
-     {
-        ic = l->data;
-        e_box_pack_options_set(ic->o_holder, 1, 1,      /* fill */
-                               0, 0,    /* expand */
-                               0.5, 0.5,        /* align */
-                               w, h,    /* min */
-                               w, h     /* max */
-           );
-     }
-   e_box_thaw(b->o_box);
-}
-
-static void
-_taskbar_instance_drop_zone_recalc(Instance *inst)
-{
-   Evas_Coord x, y, w, h;
-   int cx, cy, cw, ch;
+   if (!b->icons)
+     return;
+   ic = b->icons->data;
+   wnum = evas_list_count(b->borders);
+   edje_object_size_min_calc(ic->o_holder, &wmin, &hmin);
+   wnum2 = w / wmin;
+   if (wnum < wnum2)
+     wnum2 = wnum;
+   if (wnum2 < 1)
+     wnum2 = 1;
+   hnum = h / hmin;
+   if (hnum < 1)
+     hnum = 1;
+   b->xmax = wnum2;
+   b->bwidth = w / wnum2;
+   b->bheight = h / hnum;
+   b->bwmin = wmin;
+   b->bhmin = hmin;
 
-   evas_object_geometry_get(inst->o_taskbar, &x, &y, &w, &h);
-   e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, &ch);
-   e_drop_handler_geometry_set(inst->drop_handler, cx + x, cy + y, w, h);
+   _taskbar_repack(b);
 }
 
 static Taskbar_Icon *
@@ -457,7 +514,6 @@
    evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_OUT, 
_taskbar_cb_icon_mouse_out, ic);
    evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_DOWN, 
_taskbar_cb_icon_mouse_down, ic);
    evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_UP, 
_taskbar_cb_icon_mouse_up, ic);
-   evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_MOVE, 
_taskbar_cb_icon_mouse_move, ic);
    evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOVE, 
_taskbar_cb_icon_move, ic);
    evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_RESIZE, 
_taskbar_cb_icon_resize, ic);
    evas_object_show(ic->o_holder);
@@ -474,6 +530,29 @@
 }
 
 static void
+_taskbar_icon_add(Taskbar * b, E_Border * bd)
+{
+
+   b->borders = evas_list_append(b->borders, bd);
+   _taskbar_repack(b);
+   _taskbar_empty_handle(b);
+   _taskbar_resize_handle(b);
+
+   _gc_orient(b->inst->gcc);
+}
+
+static void
+_taskbar_icon_remove(Taskbar * b, Taskbar_Icon * ic)
+{
+
+   b->borders = evas_list_remove(b->borders, ic->border);
+   _taskbar_repack(b);
+   _taskbar_empty_handle(b);
+   _taskbar_resize_handle(b);
+   _gc_orient(b->inst->gcc);
+}
+
+static void
 _taskbar_icon_free(Taskbar_Icon * ic)
 {
 
@@ -483,8 +562,6 @@
         e_object_del(E_OBJECT(taskbar_config->menu));
         taskbar_config->menu = NULL;
      }
-   if (ic->taskbar->ic_drop_before == ic)
-      ic->taskbar->ic_drop_before = NULL;
    _taskbar_icon_empty(ic);
    evas_object_del(ic->o_holder);
    evas_object_del(ic->o_holder2);
@@ -556,13 +633,6 @@
    return NULL;
 }
 
-static int
-_taskbar_cb_timer_drop_recalc(void *data)
-{
-   _taskbar_instance_drop_zone_recalc((Instance *)data);
-   return 1;
-}
-
 static void
 _taskbar_cb_obj_moveresize(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
 {
@@ -570,7 +640,48 @@
 
    inst = (Instance *)data;
    _taskbar_resize_handle(inst->taskbar);
-   _taskbar_instance_drop_zone_recalc(inst);
+   
+}
+
+static void
+_taskbar_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Taskbar *b;
+   Config_Item *ci;
+
+   b = (Taskbar *)data;
+   ci = _taskbar_config_item_get(b->inst->gcc->id);
+   _config_taskbar_module(ci);
+}
+
+void
+_taskbar_config_updated(const char *id)
+{
+   Evas_List *l;
+   Config_Item *ci;
+   if (!taskbar_config) return;
+   ci = _taskbar_config_item_get(id);
+   for (l = taskbar_config->instances; l; l = l->next)
+     {
+       Instance *inst;
+       inst = l->data;
+       if (!inst->gcc->id) continue;
+       if (!strcmp(inst->gcc->id, ci->id))
+         {
+            for (l = inst->taskbar->icons; l; l = l->next)
+              {
+                 if (!ci->show_label)
+                   edje_object_signal_emit(l->data, "label_hidden", "");
+                 else
+                   edje_object_signal_emit(l->data, "label_visible", "");
+
+              }
+            _taskbar_resize_handle(inst->taskbar);
+            _gc_orient(inst->gcc);
+            break;
+         }
+     }
+
 }
 
 static void
@@ -587,11 +698,13 @@
 {
    Evas_Event_Mouse_In *ev;
    Taskbar_Icon *ic;
+   Config_Item *ci;
 
    ev = event_info;
    ic = data;
+   ci = _taskbar_config_item_get(ic->taskbar->inst->gcc->id);
    _taskbar_icon_signal_emit(ic, "active", "");
-   if (ic->taskbar->show_label)
+   if (ci->show_label)
       _taskbar_icon_signal_emit(ic, "label_active", "");
 }
 
@@ -600,11 +713,13 @@
 {
    Evas_Event_Mouse_Out *ev;
    Taskbar_Icon *ic;
+   Config_Item *ci;
 
    ev = event_info;
    ic = data;
+   ci = _taskbar_config_item_get(ic->taskbar->inst->gcc->id);
    _taskbar_icon_signal_emit(ic, "passive", "");
-   if (ic->taskbar->show_label)
+   if (ci->show_label)
       _taskbar_icon_signal_emit(ic, "label_passive", "");
 }
 
@@ -628,11 +743,17 @@
           {
 
              E_Menu *mn;
+            E_Menu_Item *mi;
 
              mn = e_menu_new();
              e_menu_post_deactivate_callback_set(mn, _taskbar_cb_menu_post, 
NULL);
              taskbar_config->menu = mn;
 
+            mi = e_menu_item_new(mn);
+            e_menu_item_label_set(mi, _("Configuration"));
+            e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
+            e_menu_item_callback_set(mi, _taskbar_cb_menu_configure, 
ic->taskbar);
+
              /* FIXME: other icon options go here too */
 
              e_gadcon_client_util_menu_items_append(ic->taskbar->inst->gcc, 
mn, 0);
@@ -721,48 +842,6 @@
 }
 
 static void
-_taskbar_cb_icon_mouse_move(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
-{
-   Evas_Event_Mouse_Move *ev;
-   Taskbar_Icon *ic;
-
-   ev = event_info;
-   ic = data;
-   if (ic->drag.start)
-     {
-        int dx, dy;
-
-        dx = ev->cur.output.x - ic->drag.x;
-        dy = ev->cur.output.y - ic->drag.y;
-        if (((dx * dx) + (dy * dy)) > (e_config->drag_resist * 
e_config->drag_resist))
-          {
-             E_Drag *d;
-             Evas_Object *o;
-             Evas_Coord x, y, w, h;
-             const char *drag_types[] = { "enlightenment/border" };
-
-             ic->drag.dnd = 1;
-             ic->drag.start = 0;
-
-             evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
-             d = e_drag_new(ic->taskbar->inst->gcc->gadcon->zone->container,
-                            x, y, drag_types, 1, ic->border, -1, 
_taskbar_cb_drag_finished);
-             o = e_border_icon_add(ic->border, e_drag_evas_get(d));
-             e_drag_object_set(d, o);
-
-             e_drag_resize(d, w, h);
-             e_drag_start(d, ic->drag.x, ic->drag.y);
-             evas_event_feed_mouse_up(ic->taskbar->inst->gcc->gadcon->evas, 1, 
EVAS_BUTTON_NONE, ecore_x_current_time_get(), NULL);
-             e_object_ref(E_OBJECT(ic->border));
-             ic->taskbar->icons = evas_list_remove(ic->taskbar->icons, ic);
-             _taskbar_resize_handle(ic->taskbar);
-             _gc_orient(ic->taskbar->inst->gcc);
-             _taskbar_icon_free(ic);
-          }
-     }
-}
-
-static void
 _taskbar_cb_icon_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
    Taskbar_Icon *ic;
@@ -786,242 +865,11 @@
    evas_object_raise(ic->o_holder2);
 }
 
-static void
-_taskbar_cb_drag_finished(E_Drag *drag, int dropped)
-{
-   E_Border *bd;
-
-   bd = drag->data;
-   if (!dropped)
-      e_border_uniconify(bd);
-   e_object_unref(E_OBJECT(bd));
-}
-
-static void
-_taskbar_cb_drop_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
-   Taskbar *b;
-   Evas_Coord x, y;
-
-   b = data;
-   evas_object_geometry_get(b->o_drop, &x, &y, NULL, NULL);
-   evas_object_move(b->o_drop_over, x, y);
-}
-
-static void
-_taskbar_cb_drop_resize(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
-{
-   Taskbar *b;
-   Evas_Coord w, h;
-
-   b = data;
-   evas_object_geometry_get(b->o_drop, NULL, NULL, &w, &h);
-   evas_object_resize(b->o_drop_over, w, h);
-}
-
-static void
-_taskbar_inst_cb_enter(void *data, const char *type, void *event_info)
-{
-   E_Event_Dnd_Enter *ev;
-   Instance *inst;
-   Evas_Object *o, *o2;
-   Taskbar_Icon *ic;
-   int cx, cy, cw, ch;
-
-   ev = event_info;
-   inst = data;
-   o = edje_object_add(evas_object_evas_get(inst->taskbar->o_box));
-   inst->taskbar->o_drop = o;
-   o2 = edje_object_add(evas_object_evas_get(inst->taskbar->o_box));
-   inst->taskbar->o_drop_over = o2;
-   evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, 
_taskbar_cb_drop_move, inst->taskbar);
-   evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, 
_taskbar_cb_drop_resize, inst->taskbar);
-   e_theme_edje_object_set(o, "base/theme/modules/taskbar", 
"modules/taskbar/drop");
-   e_theme_edje_object_set(o2, "base/theme/modules/taskbar", 
"modules/taskbar/drop_overlay");
-   evas_object_layer_set(o2, 19999);
-   evas_object_show(o);
-   evas_object_show(o2);
-   e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, &ch);
-   ic = _taskbar_icon_at_coord(inst->taskbar, ev->x - cx, ev->y - cy);
-   inst->taskbar->ic_drop_before = ic;
-   if (ic)
-     {
-        Evas_Coord ix, iy, iw, ih;
-        int before = 0;
-
-        evas_object_geometry_get(ic->o_holder, &ix, &iy, &iw, &ih);
-        if (e_box_orientation_get(inst->taskbar->o_box))
-          {
-             if ((ev->x - cx) < (ix + (iw / 2)))
-                before = 1;
-          }
-        else
-          {
-             if ((ev->y - cy) < (iy + (ih / 2)))
-                before = 1;
-          }
-        if (before)
-           e_box_pack_before(inst->taskbar->o_box, inst->taskbar->o_drop, 
ic->o_holder);
-        else
-           e_box_pack_after(inst->taskbar->o_box, inst->taskbar->o_drop, 
ic->o_holder);
-        inst->taskbar->drop_before = before;
-     }
-   else
-      e_box_pack_end(inst->taskbar->o_box, o);
-   e_box_pack_options_set(o, 1, 1,      /* fill */
-                          0, 0, /* expand */
-                          0.5, 0.5,     /* align */
-                          1, 1, /* min */
-                          -1, -1        /* max */
-      );
-   _taskbar_resize_handle(inst->taskbar);
-   _gc_orient(inst->gcc);
-}
-
-static void
-_taskbar_inst_cb_move(void *data, const char *type, void *event_info)
-{
-   E_Event_Dnd_Move *ev;
-   Instance *inst;
-   Taskbar_Icon *ic;
-   int cx, cy, cw, ch;
-
-   ev = event_info;
-   inst = data;
-   e_box_unpack(inst->taskbar->o_drop);
-   e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, &cw, &ch);
-   ic = _taskbar_icon_at_coord(inst->taskbar, ev->x - cx, ev->y - cy);
-   inst->taskbar->ic_drop_before = ic;
-   if (ic)
-     {
-        Evas_Coord ix, iy, iw, ih;
-        int before = 0;
-
-        evas_object_geometry_get(ic->o_holder, &ix, &iy, &iw, &ih);
-        if (e_box_orientation_get(inst->taskbar->o_box))
-          {
-             if ((ev->x - cx) < (ix + (iw / 2)))
-                before = 1;
-          }
-        else
-          {
-             if ((ev->y - cy) < (iy + (ih / 2)))
-                before = 1;
-          }
-        if (before)
-           e_box_pack_before(inst->taskbar->o_box, inst->taskbar->o_drop, 
ic->o_holder);
-        else
-           e_box_pack_after(inst->taskbar->o_box, inst->taskbar->o_drop, 
ic->o_holder);
-        inst->taskbar->drop_before = before;
-     }
-   else
-      e_box_pack_end(inst->taskbar->o_box, inst->taskbar->o_drop);
-   e_box_pack_options_set(inst->taskbar->o_drop, 1, 1,  /* fill */
-                          0, 0, /* expand */
-                          0.5, 0.5,     /* align */
-                          1, 1, /* min */
-                          -1, -1        /* max */
-      );
-   _taskbar_resize_handle(inst->taskbar);
-   _gc_orient(inst->gcc);
-}
-
-static void
-_taskbar_inst_cb_leave(void *data, const char *type, void *event_info)
-{
-   E_Event_Dnd_Leave *ev;
-   Instance *inst;
-
-   ev = event_info;
-   inst = data;
-   inst->taskbar->ic_drop_before = NULL;
-   evas_object_del(inst->taskbar->o_drop);
-   inst->taskbar->o_drop = NULL;
-   evas_object_del(inst->taskbar->o_drop_over);
-   inst->taskbar->o_drop_over = NULL;
-   _taskbar_resize_handle(inst->taskbar);
-   _gc_orient(inst->gcc);
-}
-
-static void
-_taskbar_inst_cb_drop(void *data, const char *type, void *event_info)
-{
-   E_Event_Dnd_Drop *ev;
-   Instance *inst;
-   E_Border *bd = NULL;
-   Taskbar *b;
-   Taskbar_Icon *ic, *ic2;
-   Evas_List *l;
-
-   ev = event_info;
-   inst = data;
-   if (!strcmp(type, "enlightenment/border"))
-     {
-        bd = ev->data;
-        if (!bd)
-           return;
-     }
-
-   if (!bd->iconic)
-      e_border_iconify(bd);
-
-   ic2 = inst->taskbar->ic_drop_before;
-   if (ic2)
-     {
-        /* Add new eapp before this icon */
-        if (!inst->taskbar->drop_before)
-          {
-             for (l = inst->taskbar->icons; l; l = l->next)
-               {
-                  if (l->data == ic2)
-                    {
-                       if (l->next)
-                          ic2 = l->next->data;
-                       else
-                          ic2 = NULL;
-                       break;
-                    }
-               }
-          }
-        if (!ic2)
-           goto atend;
-        b = inst->taskbar;
-        if (_taskbar_icon_find(b, bd))
-           return;
-        ic = _taskbar_icon_new(b, bd);
-        if (!ic)
-           return;
-        b->icons = evas_list_prepend_relative(b->icons, ic, ic2);
-        e_box_pack_before(b->o_box, ic->o_holder, ic2->o_holder);
-     }
-   else
-     {
-      atend:
-        b = inst->taskbar;
-        if (_taskbar_icon_find(b, bd))
-           return;
-        ic = _taskbar_icon_new(b, bd);
-        if (!ic)
-           return;
-        b->icons = evas_list_append(b->icons, ic);
-        e_box_pack_end(b->o_box, ic->o_holder);
-     }
-
-   evas_object_del(inst->taskbar->o_drop);
-   inst->taskbar->o_drop = NULL;
-   evas_object_del(inst->taskbar->o_drop_over);
-   inst->taskbar->o_drop_over = NULL;
-   _taskbar_empty_handle(b);
-   _taskbar_resize_handle(inst->taskbar);
-   _gc_orient(inst->gcc);
-}
-
 static int
 _taskbar_cb_event_border_add(void *data, int type, void *event)
 {
    E_Event_Border_Add *ev;
    Taskbar *b;
-   Taskbar_Icon *ic;
 
    ev = event;
    b = _taskbar_zone_find(ev->border->zone);
@@ -1029,20 +877,13 @@
       return 1;
    if (_taskbar_icon_find(b, ev->border))
       return 1;
-   ic = _taskbar_icon_new(b, ev->border);
-   if (!ic)
-      return 1;
    if (ev->border->client.netwm.state.skip_taskbar)
       return 1;
    if (ev->border->user_skip_winlist)
       return 1;
    if ((ev->border->desk == e_desk_current_get(ev->border->zone)) || 
(ev->border->sticky))
      {
-        b->icons = evas_list_append(b->icons, ic);
-        e_box_pack_end(b->o_box, ic->o_holder);
-        _taskbar_empty_handle(b);
-        _taskbar_resize_handle(b);
-        _gc_orient(b->inst->gcc);
+       _taskbar_icon_add(b, ev->border);
      }
    return 1;
 }
@@ -1062,11 +903,7 @@
    ic = _taskbar_icon_find(b, ev->border);
    if (!ic)
       return 1;
-   _taskbar_icon_free(ic);
-   b->icons = evas_list_remove(b->icons, ic);
-   _taskbar_empty_handle(b);
-   _taskbar_resize_handle(b);
-   _gc_orient(b->inst->gcc);
+   _taskbar_icon_remove(b, ic);
    return 1;
 }
 
@@ -1155,13 +992,8 @@
                           continue;
                        if (ev->border->client.netwm.state.skip_taskbar)
                           continue;
-                       ic = _taskbar_icon_new(inst->taskbar, ev->border);
-                       inst->taskbar->icons = 
evas_list_append(inst->taskbar->icons, ic);
-                       e_box_pack_end(inst->taskbar->o_box, ic->o_holder);
-                       _taskbar_empty_handle(inst->taskbar);
-                       _taskbar_resize_handle(inst->taskbar);
-                       _gc_orient(inst->taskbar->inst->gcc);
-                    }
+                      _taskbar_icon_add(inst->taskbar, ev->border);
+                   }
                }
           }
         else
@@ -1169,12 +1001,8 @@
              ic = _taskbar_icon_find(inst->taskbar, ev->border);
              if ((ic) && (!ev->border->sticky))
                {
-                  _taskbar_icon_free(ic);
-                  inst->taskbar->icons = 
evas_list_remove(inst->taskbar->icons, ic);
-                  _taskbar_empty_handle(inst->taskbar);
-                  _taskbar_resize_handle(inst->taskbar);
-                  _gc_orient(inst->taskbar->inst->gcc);
-               }
+                 _taskbar_icon_remove(inst->taskbar, ic);
+              }
           }
      }
    return 1;
@@ -1202,30 +1030,21 @@
         ic = _taskbar_icon_find(b, bd);
         if (ic)
            return 1;
-        ic = _taskbar_icon_new(b, ev->border);
         if (b->zone == ev->border->zone)
           {
              if (bd->user_skip_winlist)
                 return 1;
              if (bd->client.netwm.state.skip_taskbar)
                 return 1;
-             b->icons = evas_list_append(b->icons, ic);
-             e_box_pack_end(b->o_box, ic->o_holder);
-             _taskbar_empty_handle(b);
-             _taskbar_resize_handle(b);
-             _gc_orient(b->inst->gcc);
-          }
+            _taskbar_icon_add(b, bd);
+         }
      }
    else
      {
         ic = _taskbar_icon_find(b, bd);
         if (!ic)
            return 1;
-        _taskbar_icon_free(ic);
-        b->icons = evas_list_remove(b->icons, ic);
-        _taskbar_empty_handle(b);
-        _taskbar_resize_handle(b);
-        _gc_orient(b->inst->gcc);
+       _taskbar_icon_remove(b, ic);
      }
    return 0;
 }
@@ -1235,7 +1054,6 @@
 {
    Ecore_X_Event_Window_Focus_In *ev;
    E_Border *bd;
-   Taskbar *b;
    Taskbar_Icon *ic;
    Evas_List *l;
 
@@ -1260,7 +1078,6 @@
 {
    Ecore_X_Event_Window_Focus_Out *ev;
    E_Border *bd;
-   Taskbar *b;
    Taskbar_Icon *ic;
    Evas_List *l;
 
@@ -1282,6 +1099,40 @@
 }
 
 static int
+_taskbar_cb_window_property(void *data, int type, void *event)
+{
+   Ecore_X_Event_Window_Property *ev;
+   E_Border *bd;
+   Taskbar_Icon *ic;
+   Evas_List *l;
+   char *label;
+   
+   ev = event;
+   bd = e_border_find_by_client_window(ev->win);
+   if (!bd)
+     return 1;
+
+   for (l = taskbar_config->instances; l; l = l->next)
+     {
+        Instance *inst;
+
+        inst = l->data;
+        ic = _taskbar_icon_find(inst->taskbar, bd);
+        if (ic) {
+            label = ic->border->client.netwm.name;
+            if (!label)
+              label = ic->border->client.icccm.title;
+            if (!label)
+              label = "?";
+            edje_object_part_text_set(ic->o_holder, "label", label);
+            edje_object_part_text_set(ic->o_holder2, "label", label);
+
+       }
+     }
+
+}
+
+static int
 _taskbar_cb_event_desk_show(void *data, int type, void *event)
 {
    E_Event_Desk_Show *e;
@@ -1299,6 +1150,28 @@
    return 1;
 }
 
+static Config_Item *
+_taskbar_config_item_get(const char *id)
+{
+   Evas_List *l;
+   Config_Item *ci;
+
+   for (l = taskbar_config->items; l; l = l->next)
+     {
+        ci = l->data;
+        if (!ci->id) continue;
+        if (!strcmp(ci->id, id)) return ci;
+     }
+
+   ci = E_NEW(Config_Item, 1);
+   ci->id = evas_stringshare_add(id);
+   ci->show_label = 1;
+
+   taskbar_config->items = evas_list_append(taskbar_config->items, ci);
+   return ci;
+}
+
+
 /***************************************************************************/
  /**/
 /* module setup */
@@ -1310,8 +1183,35 @@
 EAPI void *
 e_modapi_init(E_Module *m)
 {
-   taskbar_config = E_NEW(Config, 1);
+   bindtextdomain(PACKAGE, LOCALEDIR);
+   bind_textdomain_codeset(PACKAGE, "UTF-8");
 
+   conf_item_edd = E_CONFIG_DD_NEW("Taskbar_Config_Item", Config_Item);
+#undef T
+#undef D
+#define T Config_Item
+#define D conf_item_edd
+  E_CONFIG_VAL(D, T, id, STR);
+  E_CONFIG_VAL(D, T, show_label, INT);
+
+  conf_edd = E_CONFIG_DD_NEW("TClock_Config", Config);
+#undef T
+#undef D
+#define T Config
+#define D conf_edd
+  E_CONFIG_LIST(D, T, items, conf_item_edd);
+  
+   taskbar_config = e_config_domain_load("module.taskbar", conf_edd);
+   if (!taskbar_config) {
+       Config_Item *ci;
+       taskbar_config = E_NEW(Config, 1);
+       ci = E_NEW(Config_Item, 1);
+       ci->id = evas_stringshare_add("0");
+       ci->show_label = 1;
+
+       taskbar_config->items = evas_list_append(taskbar_config->items, ci);
+   }
+   
    taskbar_config->module = m;
 
    taskbar_config->handlers = evas_list_append
@@ -1333,25 +1233,10 @@
    taskbar_config->handlers = evas_list_append
       (taskbar_config->handlers, 
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, 
_taskbar_cb_window_focus_out, NULL));
    taskbar_config->handlers = evas_list_append
+      (taskbar_config->handlers, 
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, 
_taskbar_cb_window_property, NULL));
+   taskbar_config->handlers = evas_list_append
       (taskbar_config->handlers, ecore_event_handler_add(E_EVENT_DESK_SHOW, 
_taskbar_cb_event_desk_show, NULL));
 
-/* FIXME: add these later for things taskbar-like functionality   
-   taskbar_config->handlers = evas_list_append
-     (taskbar_config->handlers, ecore_event_handler_add
-      (E_EVENT_BORDER_DESK_SET, _taskbar_cb_event_border_zone_set, NULL));
-   taskbar_config->handlers = evas_list_append
-     (taskbar_config->handlers, ecore_event_handler_add
-      (E_EVENT_BORDER_SHOW, _taskbar_cb_event_border_zone_set, NULL));
-   taskbar_config->handlers = evas_list_append
-     (taskbar_config->handlers, ecore_event_handler_add
-      (E_EVENT_BORDER_HIDE, _taskbar_cb_event_border_zone_set, NULL));
-   taskbar_config->handlers = evas_list_append
-     (taskbar_config->handlers, ecore_event_handler_add
-      (E_EVENT_BORDER_STACK, _taskbar_cb_event_border_zone_set, NULL));
-   taskbar_config->handlers = evas_list_append
-     (taskbar_config->handlers, ecore_event_handler_add
-      (E_EVENT_BORDER_STICK, _taskbar_cb_event_border_zone_set, NULL));
- */
    e_gadcon_provider_register(&_gadcon_class);
 }
 
@@ -1360,6 +1245,9 @@
 {
    e_gadcon_provider_unregister(&_gadcon_class);
 
+   if (taskbar_config->config_dialog)
+     e_object_del(E_OBJECT(taskbar_config->config_dialog));
+
    while (taskbar_config->handlers)
      {
         ecore_event_handler_del(taskbar_config->handlers->data);
@@ -1373,12 +1261,27 @@
      }
    free(taskbar_config);
    taskbar_config = NULL;
+   E_CONFIG_DD_FREE(conf_item_edd);
+   E_CONFIG_DD_FREE(conf_edd);
    return 1;
 }
 
 EAPI int
 e_modapi_save(E_Module *m)
 {
+   Evas_List *l;
+
+   for (l = taskbar_config->instances; l; l = l->next)
+     {
+       Instance *inst;
+       Config_Item *ci;
+
+       inst = l->data;
+       ci = _taskbar_config_item_get(inst->gcc->id);
+       if (ci->id) evas_stringshare_del(ci->id);
+       ci->id = evas_stringshare_add(inst->gcc->id);
+     }
+   e_config_domain_save("module.taskbar", conf_edd, taskbar_config);
    return 1;
 }
 
===================================================================
RCS file: /cvs/e/e_modules/taskbar/e_mod_main.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_mod_main.h        14 Jun 2006 00:09:11 -0000      1.2
+++ e_mod_main.h        22 Jun 2006 05:30:18 -0000      1.3
@@ -5,14 +5,23 @@
 #define E_MOD_MAIN_H
 
 typedef struct _Config Config;
+typedef struct _Config_Item Config_Item;
 
 struct _Config
 {
    /* just config state */
    E_Module *module;
    Evas_List *instances;
+   Evas_List *items;
    E_Menu *menu;
    Evas_List *handlers;
+   E_Config_Dialog *config_dialog;
+};
+
+struct _Config_Item
+{
+   const char *id;
+   int show_label;
 };
 
 EAPI extern E_Module_Api e_modapi;
@@ -22,5 +31,9 @@
 EAPI int e_modapi_save(E_Module *m);
 EAPI int e_modapi_info(E_Module *m);
 EAPI int e_modapi_about(E_Module *m);
+
+void _config_taskbar_module(Config_Item *ci);
+void _taskbar_config_updated(const char *id);
+extern Config *taskbar_config;
 
 #endif



All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to