Add temporary hack for config saving of menu, launchbar, and image.
authorHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Mon, 30 Oct 2006 12:14:47 +0000 (12:14 +0000)
committerHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Mon, 30 Oct 2006 12:14:47 +0000 (12:14 +0000)
Fix errors in save_config of taskbar.

src/configurator.c
src/plugins/deskno2.c
src/plugins/image.c
src/plugins/launchbar.c
src/plugins/menu.c
src/plugins/taskbar.c

index ae2de9a..7f1ba4e 100644 (file)
@@ -94,6 +94,9 @@ response_event(GtkDialog *widget, gint arg1, gpointer user_data)
     ENTER;
     switch (arg1) {
     case GTK_RESPONSE_APPLY:
+    case GTK_RESPONSE_DELETE_EVENT:
+    case GTK_RESPONSE_CLOSE:
+    case GTK_RESPONSE_NONE:
         if (!mk_profile_dir()) {
             ERR("can't make ~/.lxpanel direcory\n");
             RET();
@@ -109,9 +112,6 @@ response_event(GtkDialog *widget, gint arg1, gpointer user_data)
         plugin_config_save(fp);
         fclose(fp);
         /* NOTE: NO BREAK HERE*/
-    case GTK_RESPONSE_DELETE_EVENT:
-    case GTK_RESPONSE_CLOSE:
-    case GTK_RESPONSE_NONE:
         gtk_widget_destroy(dialog);
         dialog = NULL;
         break;
@@ -900,6 +900,13 @@ plugin_config_save(FILE *fp)
         plugin* pl = (plugin*)l->data;
         lxpanel_put_line( fp, "Plugin {" );
         lxpanel_put_line( fp, "type = %s", pl->class->type );
+        if( pl->expand )
+            lxpanel_put_bool( fp, "expand", TRUE );
+        if( pl->padding > 0 )
+            lxpanel_put_int( fp, "padding", pl->padding );
+        if( pl->border > 0 )
+            lxpanel_put_int( fp, "border", pl->border );
+
         if( pl->class->save )
         {
             lxpanel_put_line( fp, "Config {" );
index faacac0..b62e26c 100644 (file)
@@ -1,4 +1,3 @@
-
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -18,7 +17,7 @@ typedef struct {
     char      **dnames;         // desktop names
     int         dnames_num;     // number of desktop names
     char      **lnames;         // label names
-    char       *fmt;    
+    char       *fmt;
 } deskno;
 
 
@@ -35,7 +34,7 @@ update_dno(GtkWidget *widget, deskno *dc)
     ENTER;
     dc->dno = fb_ev_current_desktop(fbev);
     gtk_button_set_label(GTK_BUTTON(dc->main), dc->lnames[dc->dno]);
-    
+
     RET();
 }
 
@@ -45,7 +44,7 @@ static  void
 update_all(GtkWidget *widget, deskno *dc)
 {
     int i;
-    
+
     ENTER;
     dc->dnum = fb_ev_number_of_desktops(fbev);
     if (dc->dnames)
@@ -69,7 +68,7 @@ static gboolean
 scroll (GtkWidget *widget, GdkEventScroll *event, deskno *dc)
 {
     int dno;
-    
+
     ENTER;
     dno = dc->dno + ((event->direction == GDK_SCROLL_UP) ? (-1) : (+1));
     if (dno < 0)
@@ -117,7 +116,7 @@ deskno_destructor(plugin *p)
 
   ENTER;
   dc = (deskno *) p->priv;
-  //g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), name_update, dc); 
+  //g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), name_update, dc);
   g_free(dc);
   RET();
 }
index f7a857f..c99626a 100644 (file)
@@ -16,10 +16,9 @@ typedef struct {
     GdkBitmap *mask;
     GtkTooltips *tips;
     GtkWidget *mainw;
+    char* config_data;
 } image;
 
-
-
 static void
 image_destructor(plugin *p)
 {
@@ -31,15 +30,12 @@ image_destructor(plugin *p)
         g_object_unref(img->mask);
     if (img->pix)
         g_object_unref(img->pix);
-    //
+    g_free( img->config_data );
     g_object_unref( img->tips );
     g_free(img);
     RET();
 }
 
-
-
-
 static int
 image_constructor(plugin *p, char **fp)
 {
@@ -48,7 +44,8 @@ image_constructor(plugin *p, char **fp)
     GdkPixbuf *gp, *gps;
     GtkWidget *wid;
     GError *err = NULL;
-    
+    char *config_start, *config_end;
+
     line s;
 
     s.len = 256;
@@ -64,15 +61,15 @@ image_constructor(plugin *p, char **fp)
 #endif
     p->priv = img;
     tooltip = fname = 0;
-    if( fp )
-    {
+    if( fp ) {
+        config_start = *fp;
         while (lxpanel_get_line(fp, &s) != LINE_BLOCK_END) {
             if (s.type == LINE_NONE) {
                 ERR( "image: illegal token %s\n", s.str);
                 goto error;
             }
             if (s.type == LINE_VAR) {
-                if (!g_ascii_strcasecmp(s.t[0], "image")) 
+                if (!g_ascii_strcasecmp(s.t[0], "image"))
                     fname = expand_tilda(s.t[1]);
                 else if (!g_ascii_strcasecmp(s.t[0], "tooltip"))
                     tooltip = g_strdup(s.t[1]);
@@ -85,6 +82,17 @@ image_constructor(plugin *p, char **fp)
                 goto error;
             }
         }
+        config_end = *fp - 1;
+        while( *config_end != '}' && config_end > config_start ) {
+            --config_end;
+        }
+        if( *config_end == '}' )
+            --config_end;
+        img->config_data = g_strndup( config_start,
+                                      (config_end-config_start) );
+    }
+    else {
+        config_start = config_end = NULL;
     }
     img->mainw = gtk_event_box_new();
     gtk_widget_show(img->mainw);
@@ -129,7 +137,17 @@ image_constructor(plugin *p, char **fp)
 
 static void save_config( plugin* p, FILE* fp )
 {
-    // FIXME: not complete
+    image *img = (image *)p->priv;
+    if( img->config_data ) {
+        char** lines = g_strsplit( img->config_data, "\n", 0 );
+        char** line;
+        for( line = lines; *line; ++line ) {
+            g_strstrip( *line );
+            if( **line )
+                lxpanel_put_line( fp, *line );
+        }
+        g_strfreev( lines );
+    }
 }
 
 plugin_class image_plugin_class = {
index e278223..538daec 100644 (file)
@@ -55,6 +55,7 @@ typedef struct launchbar {
     btn btns[MAXBUTTONS];
     int btn_num;
     int iconsize;
+    char* config_data;
 } launchbar;
 
 
@@ -70,14 +71,14 @@ my_button_pressed(GtkWidget *widget, GdkEventButton *event, btn *b )
     if (event->type == GDK_BUTTON_RELEASE) {
         if ((event->x >=0 && event->x < widget->allocation.width)
               && (event->y >=0 && event->y < widget->allocation.height)) {
-            
+
             g_spawn_command_line_async(b->action, NULL);
         }
         gtk_misc_set_padding (GTK_MISC(image), 0, 0);
-        
+
         //system(b->action);
     } else if (event->type == GDK_BUTTON_PRESS) {
-      
+
         gtk_misc_set_padding (GTK_MISC(image), 0, 3);
         //ERR("here\n");
     }
@@ -97,6 +98,7 @@ launchbar_destructor(plugin *p)
     for (i = 0; i < lb->btn_num; i++) {
         g_free(lb->btns[i].action);
     }
+    g_free( lb->config_data );
     g_free(lb);
     RET();
 }
@@ -145,7 +147,7 @@ drag_data_received_cb (GtkWidget        *widget,
         DBG("cmd=<%s>\n", str);
         g_spawn_command_line_async(str, NULL);
         g_free(str);
-        
+
         //gtk_drag_finish (context, TRUE, FALSE, time);
     }
     RET();
@@ -277,11 +279,11 @@ read_button(plugin *p, char** fp)
         gtk_tooltips_set_tip(GTK_TOOLTIPS (lb->tips), button, tooltip, NULL);
         g_free(tooltip);
     }
+
     //gtk_container_add(GTK_CONTAINER(eb), button);
     lb->btns[lb->btn_num].action = action;
     lb->btn_num++;
-    
+
     RET(1);
 
  error:
@@ -297,6 +299,7 @@ launchbar_constructor(plugin *p, char **fp)
     launchbar *lb;
     line s;
     GtkRequisition req;
+    char *config_start, *config_end;
     static gchar *launchbar_rc = "style 'launchbar-style'\n"
         "{\n"
         "GtkWidget::focus-line-width = 0\n"
@@ -305,12 +308,12 @@ launchbar_constructor(plugin *p, char **fp)
         "GtkButton::default-outside-border = { 0, 0, 0, 0 }\n"
         "}\n"
         "widget '*' style 'launchbar-style'";
-   
+
     ENTER;
     gtk_widget_set_name(p->pwid, "launchbar");
     gtk_rc_parse_string(launchbar_rc);
     get_button_spacing(&req, GTK_CONTAINER(p->pwid), "");
-    
+
     lb = g_new0(launchbar, 1);
     g_return_val_if_fail(lb != NULL, 0);
     p->priv = lb;
@@ -331,41 +334,65 @@ launchbar_constructor(plugin *p, char **fp)
         lb->iconsize = GTK_WIDGET(p->panel->box)->allocation.width;
     DBG("button: req width=%d height=%d\n", req.width, req.height);
     DBG("iconsize=%d\n", lb->iconsize);
-    
-    s.len = 256;
-    while (lxpanel_get_line(fp, &s) != LINE_BLOCK_END) {
-        if (s.type == LINE_NONE) {
-            ERR( "launchbar: illegal token %s\n", s.str);
-            goto error;
-        }
-        if (s.type == LINE_BLOCK_START) {
-            if (!g_ascii_strcasecmp(s.t[0], "button")) {
-                if (!read_button(p, fp)) {
-                    ERR( "launchbar: can't init button\n");
+
+    if( fp ) {
+        config_start = *fp;
+        s.len = 256;
+        while (lxpanel_get_line(fp, &s) != LINE_BLOCK_END) {
+            if (s.type == LINE_NONE) {
+                ERR( "launchbar: illegal token %s\n", s.str);
+                goto error;
+            }
+            if (s.type == LINE_BLOCK_START) {
+                if (!g_ascii_strcasecmp(s.t[0], "button")) {
+                    if (!read_button(p, fp)) {
+                        ERR( "launchbar: can't init button\n");
+                        goto error;
+                    }
+                } else {
+                    ERR( "launchbar: unknown var %s\n", s.t[0]);
                     goto error;
                 }
             } else {
-                ERR( "launchbar: unknown var %s\n", s.t[0]);
+                ERR( "launchbar: illegal in this context %s\n", s.str);
                 goto error;
             }
-        } else {
-            ERR( "launchbar: illegal in this context %s\n", s.str);
-            goto error;
         }
+        config_end = *fp - 1;
+        while( *config_end != '}' && config_end > config_start ) {
+            --config_end;
+        }
+        if( *config_end == '}' )
+            --config_end;
+
+        lb->config_data = g_strndup( config_start,
+                                     (config_end-config_start) );
+    }
+    else {
+        config_start = config_end = NULL;
     }
 
     RET(1);
 
  error:
     launchbar_destructor(p);
     RET(0);
-    
+
 }
 
 static void save_config( plugin* p, FILE* fp )
 {
-    /* FIXME: not complete */
+    launchbar *lb = (launchbar *)p->priv;
+    if( lb->config_data ) {
+        char** lines = g_strsplit( lb->config_data, "\n", 0 );
+        char** line;
+        for( line = lines; *line; ++line ) {
+            g_strstrip( *line );
+            if( **line )
+                lxpanel_put_line( fp, *line );
+        }
+        g_strfreev( lines );
+    }
 }
 
 plugin_class launchbar_plugin_class = {
index 416c383..2463bf4 100644 (file)
@@ -33,6 +33,7 @@ typedef struct {
     int iconsize, paneliconsize;
     GSList *files;
     gboolean has_system_menu;
+    char* config_data;
 } menup;
 
 static void
@@ -441,6 +442,7 @@ static int
 menu_constructor(plugin *p, char **fp)
 {
     menup *m;
+    char *config_start, *config_end;
 
     ENTER;
     m = g_new0(menup, 1);
@@ -460,9 +462,21 @@ menu_constructor(plugin *p, char **fp)
     gtk_container_set_border_width(GTK_CONTAINER(m->box), 0);
     gtk_container_add(GTK_CONTAINER(p->pwid), m->box);
 
-    if (!read_submenu(p, fp, FALSE)) {
-        ERR("menu: plugin init failed\n");
-        goto error;
+    if( fp ) {
+        config_start = *fp;
+        if (!read_submenu(p, fp, FALSE)) {
+            ERR("menu: plugin init failed\n");
+            goto error;
+        }
+        config_end = *fp - 1;
+        while( *config_end != '}' && config_end > config_start ) {
+            --config_end;
+        }
+        if( *config_end == '}' )
+            --config_end;
+
+        m->config_data = g_strndup( config_start,
+                                    (config_end-config_start) );
     }
     RET(1);
 
@@ -473,7 +487,17 @@ menu_constructor(plugin *p, char **fp)
 
 static void save_config( plugin* p, FILE* fp )
 {
-    /* FIXME: not complete */
+    menup* menu = (menup*)p->priv;
+    if( menu->config_data ) {
+        char** lines = g_strsplit( menu->config_data, "\n", 0 );
+        char** line;
+        for( line = lines; *line; ++line ) {
+            g_strstrip( *line );
+            if( **line )
+                lxpanel_put_line( fp, *line );
+        }
+        g_strfreev( lines );
+    }
 }
 
 plugin_class menu_plugin_class = {
index 090c40b..ea2f8f9 100644 (file)
@@ -37,9 +37,9 @@ typedef struct _task{
     char *name, *iname;
     GtkWidget *button, *label, *eb;
     GtkWidget *image;
-    
+
     GdkPixbuf *pixbuf;
-    
+
     int refcount;
     XClassHint ch;
     int pos_x;
@@ -111,7 +111,7 @@ static gchar *taskbar_rc = "style 'taskbar-style'\n"
 static gboolean use_net_active=FALSE;
 
 #define DRAG_ACTIVE_DELAY      1000
+
 
 
 #define TASK_WIDTH_MAX   200
@@ -164,7 +164,7 @@ accept_net_wm_window_type(net_wm_window_type *nwwt)
 
 inline static void
 tk_free_names(task *tk)
-{    
+{
     ENTER;
     DBG("tk->name %s\n", tk->name);
     DBG("tk->iname %s\n", tk->iname);
@@ -179,7 +179,7 @@ static void
 tk_set_names(task *tk)
 {
     char *name;
-    
+
     ENTER;
     tk_free_names(tk);
 
@@ -193,13 +193,13 @@ tk_set_names(task *tk)
         name = get_textproperty(tk->win,  XA_WM_NAME);
         DBG("XA_WM_NAME:%s\n", name);
     }
-    
-    if (name) {                
+
+    if (name) {
        tk->name = g_strdup_printf(" %s ", name);
        tk->iname = g_strdup_printf("[%s]", name);
        g_free(name);
         name = tk->iconified ? tk->iname : tk->name;
-    } 
+    }
     gtk_label_set_text(GTK_LABEL(tk->label), name);
     if (tk->tb->tooltips)
         gtk_tooltips_set_tip(tk->tb->tips, tk->button, tk->name, NULL);
@@ -225,7 +225,7 @@ del_task (taskbar * tb, task *tk, int hdel)
         g_source_remove( tk->flash_timeout );
     gtk_widget_destroy(tk->button);
     --tb->num_tasks;
-    tk_free_names(tk);     
+    tk_free_names(tk);
     if (tb->focused == tk)
         tb->focused = NULL;
     if (hdel)
@@ -267,7 +267,7 @@ get_cmap (GdkPixmap *pixmap)
       (gdk_colormap_get_visual (cmap)->depth !=
        gdk_drawable_get_depth (pixmap)))
     cmap = NULL;
-  
+
   RET(cmap);
 }
 
@@ -287,7 +287,7 @@ _wnck_gdk_pixbuf_get_from_pixmap (GdkPixbuf   *dest,
 
     ENTER;
     retval = NULL;
-  
+
     drawable = gdk_xid_table_lookup (xpixmap);
 
     if (drawable)
@@ -304,7 +304,7 @@ _wnck_gdk_pixbuf_get_from_pixmap (GdkPixbuf   *dest,
         gdk_drawable_get_size (drawable, &width, NULL);
     if (height < 0)
         gdk_drawable_get_size (drawable, NULL, &height);
-  
+
     retval = gdk_pixbuf_get_from_drawable (dest,
           drawable,
           cmap,
@@ -334,7 +334,7 @@ apply_mask (GdkPixbuf *pixbuf,
   ENTER;
   w = MIN (gdk_pixbuf_get_width (mask), gdk_pixbuf_get_width (pixbuf));
   h = MIN (gdk_pixbuf_get_height (mask), gdk_pixbuf_get_height (pixbuf));
-  
+
   with_alpha = gdk_pixbuf_add_alpha (pixbuf, FALSE, 0, 0, 0);
 
   dest = gdk_pixbuf_get_pixels (with_alpha);
@@ -342,7 +342,7 @@ apply_mask (GdkPixbuf *pixbuf,
 
   dest_stride = gdk_pixbuf_get_rowstride (with_alpha);
   src_stride = gdk_pixbuf_get_rowstride (mask);
-  
+
   i = 0;
   while (i < h)
     {
@@ -351,7 +351,7 @@ apply_mask (GdkPixbuf *pixbuf,
         {
           guchar *s = src + i * src_stride + j * 3;
           guchar *d = dest + i * dest_stride + j * 4;
-          
+
           /* s[0] == s[1] == s[2], they are 255 if the bit was set, 0
            * otherwise
            */
@@ -359,10 +359,10 @@ apply_mask (GdkPixbuf *pixbuf,
             d[3] = 0;   /* transparent */
           else
             d[3] = 255; /* opaque */
-          
+
           ++j;
         }
-      
+
       ++i;
     }
 
@@ -394,10 +394,10 @@ argbdata_to_pixdata (gulong *argb_data, int len)
     while (i < len) {
         guint32 argb;
         guint32 rgba;
-      
+
         argb = argb_data[i];
         rgba = (argb << 8) | (argb >> 24);
-      
+
         *p = rgba >> 24;
         ++p;
         *p = (rgba >> 16) & 0xff;
@@ -406,7 +406,7 @@ argbdata_to_pixdata (gulong *argb_data, int len)
         ++p;
         *p = rgba & 0xff;
         ++p;
-      
+
         ++i;
     }
     RET(ret);
@@ -427,7 +427,7 @@ get_netwm_icon(Window tkwin, int iw, int ih)
     if (0) {
         gulong *tmp;
         int len;
-        
+
         len = n/sizeof(gulong);
         tmp = data;
         while (len > 2) {
@@ -437,13 +437,13 @@ get_netwm_icon(Window tkwin, int iw, int ih)
             tmp += size;
         }
     }
-    
+
     if (data) {
         if (n > 2*sizeof(guint32)) {
             guchar *p;
             GdkPixbuf *src;
             int w, h;
-            
+
             w = data[0];
             h = data[1];
             p = argbdata_to_pixdata(data + 2, w * h);
@@ -470,13 +470,13 @@ get_wm_icon(Window tkwin, int iw, int ih)
     unsigned int w, h;
     int sd;
     GdkPixbuf *ret, *masked, *pixmap, *mask = NULL;
+
     ENTER;
     hints = (XWMHints *) get_xaproperty (tkwin, XA_WM_HINTS, XA_WM_HINTS, 0);
     if (!hints)
         RET(NULL);
-    
-    if ((hints->flags & IconPixmapHint)) 
+
+    if ((hints->flags & IconPixmapHint))
         xpixmap = hints->icon_pixmap;
     if ((hints->flags & IconMaskHint))
         xmask = hints->icon_mask;
@@ -484,7 +484,7 @@ get_wm_icon(Window tkwin, int iw, int ih)
     XFree(hints);
     if (xpixmap == None)
         RET(NULL);
-    
+
     if (!XGetGeometry (GDK_DISPLAY(), xpixmap, &win, &sd, &sd, &w, &h,
               (guint *)&sd, (guint *)&sd)) {
         LOG(LOG_WARN,"XGetGeometry failed for %x pixmap\n", (unsigned int)xpixmap);
@@ -497,7 +497,7 @@ get_wm_icon(Window tkwin, int iw, int ih)
     if (xmask != None && XGetGeometry (GDK_DISPLAY(), xmask,
               &win, &sd, &sd, &w, &h, (guint *)&sd, (guint *)&sd)) {
         mask = _wnck_gdk_pixbuf_get_from_pixmap (NULL, xmask, 0, 0, 0, 0, w, h);
-        
+
         if (mask) {
             masked = apply_mask (pixmap, mask);
             g_object_unref (G_OBJECT (pixmap));
@@ -525,7 +525,7 @@ static void
 tk_update_icon (taskbar *tb, task *tk, Atom a)
 {
     GdkPixbuf *pixbuf;
-    
+
     ENTER;
     g_assert ((tb != NULL) && (tk != NULL));
     g_return_if_fail(tk != NULL);
@@ -535,7 +535,7 @@ tk_update_icon (taskbar *tb, task *tk, Atom a)
         tk->pixbuf = get_netwm_icon(tk->win, tb->iconsize, tb->iconsize);
         tk->using_netwm_icon = (tk->pixbuf != NULL);
     }
-    if (!tk->using_netwm_icon) 
+    if (!tk->using_netwm_icon)
         tk->pixbuf = get_wm_icon(tk->win, tb->iconsize, tb->iconsize);
     if (!tk->pixbuf)
         tk->pixbuf = get_generic_icon(tb); // always exists
@@ -622,14 +622,14 @@ static gboolean delay_active_win(task* tk)
 }
 
 static gboolean
-tk_callback_drag_motion( GtkWidget *widget, 
+tk_callback_drag_motion( GtkWidget *widget,
       GdkDragContext *drag_context,
       gint x, gint y,
       guint time, task *tk)
 {
     /* prevent excessive motion notification */
     if (!tk->tb->dnd_activate) {
-        tk->tb->dnd_activate = g_timeout_add(DRAG_ACTIVE_DELAY, 
+        tk->tb->dnd_activate = g_timeout_add(DRAG_ACTIVE_DELAY,
               (GSourceFunc)delay_active_win, tk);
     }
     gdk_drag_status (drag_context,0,time);
@@ -637,7 +637,7 @@ tk_callback_drag_motion( GtkWidget *widget,
 }
 
 static void
-tk_callback_drag_leave (GtkWidget *widget, 
+tk_callback_drag_leave (GtkWidget *widget,
       GdkDragContext *drag_context,
       guint time, task *tk)
 {
@@ -661,13 +661,13 @@ tk_callback_expose(GtkWidget *widget, GdkEventExpose *event, task *tk)
     } else {
         if( ! tk->flash || 0 == tk->flash_state ) {
             gtk_paint_box (widget->style, widget->window,
-                  state, 
+                  state,
                   (tk->focused) ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
                   &event->area, widget, "button",
                   widget->allocation.x, widget->allocation.y,
                   widget->allocation.width, widget->allocation.height);
         } else {
-            gdk_draw_rectangle( widget->window, 
+            gdk_draw_rectangle( widget->window,
                                 widget->style->bg_gc[GTK_STATE_SELECTED],
                                 TRUE, 0, 0,
                                 widget->allocation.width,
@@ -692,12 +692,12 @@ tk_callback_scroll_event (GtkWidget *widget, GdkEventScroll *event, task *tk)
         return TRUE;
     if (event->direction == GDK_SCROLL_UP) {
         GdkWindow *gdkwindow;
-        
+
         gdkwindow = gdk_xid_table_lookup (tk->win);
         if (gdkwindow)
             gdk_window_show (gdkwindow);
         else
-            XMapRaised (GDK_DISPLAY(), tk->win);                           
+            XMapRaised (GDK_DISPLAY(), tk->win);
         XSetInputFocus (GDK_DISPLAY(), tk->win, RevertToNone, CurrentTime);
         DBG("XMapRaised  %x\n", tk->win);
     } else if (event->direction == GDK_SCROLL_DOWN) {
@@ -705,7 +705,7 @@ tk_callback_scroll_event (GtkWidget *widget, GdkEventScroll *event, task *tk)
         XIconifyWindow (GDK_DISPLAY(), tk->win, DefaultScreen(GDK_DISPLAY()));
         DBG("XIconifyWindow %x\n", tk->win);
     }
-    
+
     XSync (gdk_display, False);
     RET(TRUE);
 }
@@ -723,12 +723,12 @@ tk_callback_button_release_event(GtkWidget *widget, GdkEventButton *event, task
                Xclimsg(tk->win, a_NET_ACTIVE_WINDOW, 2, event->time, 0, 0, 0);
            } else {
                GdkWindow *gdkwindow;
-               
+
                gdkwindow = gdk_xid_table_lookup (tk->win);
                if (gdkwindow)
                    gdk_window_show (gdkwindow);
-               else 
-                   XMapRaised (GDK_DISPLAY(), tk->win);                           
+               else
+                   XMapRaised (GDK_DISPLAY(), tk->win);
                XSync (GDK_DISPLAY(), False);
                DBG("XMapRaised  %x\n", tk->win);
            }
@@ -746,7 +746,7 @@ tk_callback_button_release_event(GtkWidget *widget, GdkEventButton *event, task
         Xclimsg(tk->win, a_NET_WM_STATE,
               2 /*a_NET_WM_STATE_TOGGLE*/,
               a_NET_WM_STATE_SHADED,
-              0, 0, 0);    
+              0, 0, 0);
     } else if (event->button == 3) {
         /*
         XLowerWindow (GDK_DISPLAY(), tk->win);
@@ -755,7 +755,7 @@ tk_callback_button_release_event(GtkWidget *widget, GdkEventButton *event, task
         tk->tb->menutask = tk;
         gtk_menu_popup (GTK_MENU (tk->tb->menu), NULL, NULL, NULL, NULL,
               event->button, event->time);
-        
+
     }
     XSync (gdk_display, False);
     gtk_button_released(GTK_BUTTON(widget));
@@ -780,17 +780,17 @@ tk_update(gpointer key, task *tk, taskbar *tb)
             gtk_tooltips_set_tip(tb->tips, tk->button, tk->name, NULL);
         }
        RET();
-    }    
+    }
     gtk_widget_hide(tk->button);
     RET();
 }
 
 static void
 tk_display(taskbar *tb, task *tk)
-{    
+{
     ENTER;
     tk_update(NULL, tk, tb);
-    RET();       
+    RET();
 }
 
 static void
@@ -813,7 +813,7 @@ tk_build_gui(taskbar *tb, task *tk)
 
     /* NOTE
      * 1. the extended mask is sum of taskbar and pager needs
-     * see bug [ 940441 ] pager loose track of windows 
+     * see bug [ 940441 ] pager loose track of windows
      *
      * Do not change event mask to gtk windows spwaned by this gtk client
      * this breaks gtk internals */
@@ -828,9 +828,9 @@ tk_build_gui(taskbar *tb, task *tk)
     gtk_container_set_border_width(GTK_CONTAINER(tk->button), 0);
     gtk_widget_add_events (tk->button, GDK_BUTTON_RELEASE_MASK );
     g_signal_connect(G_OBJECT(tk->button), "button_release_event",
-          G_CALLBACK(tk_callback_button_release_event), (gpointer)tk);  
+          G_CALLBACK(tk_callback_button_release_event), (gpointer)tk);
     g_signal_connect_after (G_OBJECT (tk->button), "leave",
-          G_CALLBACK (tk_callback_leave), (gpointer) tk);    
+          G_CALLBACK (tk_callback_leave), (gpointer) tk);
     g_signal_connect_after (G_OBJECT (tk->button), "enter",
           G_CALLBACK (tk_callback_enter), (gpointer) tk);
 #if 0
@@ -845,7 +845,7 @@ tk_build_gui(taskbar *tb, task *tk)
     g_signal_connect_after(G_OBJECT(tk->button), "scroll-event",
             G_CALLBACK(tk_callback_scroll_event), (gpointer)tk);
 
+
     /* pix and name */
     w1 = tb->plug->panel->my_box_new(FALSE, 1);
     gtk_container_set_border_width(GTK_CONTAINER(w1), 0);
@@ -861,18 +861,18 @@ tk_build_gui(taskbar *tb, task *tk)
     tk->label = gtk_label_new(tk->iconified ? tk->iname : tk->name);
     //gtk_label_set_justify(GTK_LABEL(tk->label), GTK_JUSTIFY_LEFT);
     gtk_label_set_ellipsize(GTK_LABEL(tk->label), PANGO_ELLIPSIZE_END);
-    gtk_misc_set_alignment(GTK_MISC(tk->label), 0.0, 0.5); 
+    gtk_misc_set_alignment(GTK_MISC(tk->label), 0.0, 0.5);
     if (!tb->icons_only)
         gtk_widget_show(tk->label);
-    gtk_box_pack_start(GTK_BOX(w1), tk->label, TRUE, TRUE, 0);    
+    gtk_box_pack_start(GTK_BOX(w1), tk->label, TRUE, TRUE, 0);
     gtk_widget_show(w1);
     gtk_container_add (GTK_CONTAINER (tk->button), w1);
 
     //gtk_container_add (GTK_CONTAINER (tk->eb), tk->button);
     gtk_box_pack_start(GTK_BOX(tb->bar), tk->button, FALSE, TRUE, 0);
-    GTK_WIDGET_UNSET_FLAGS (tk->button, GTK_CAN_FOCUS);    
+    GTK_WIDGET_UNSET_FLAGS (tk->button, GTK_CAN_FOCUS);
     GTK_WIDGET_UNSET_FLAGS (tk->button, GTK_CAN_DEFAULT);
-    
+
     gtk_widget_show(tk->button);
     if (!task_visible(tb, tk)) {
         gtk_widget_hide(tk->button);
@@ -985,14 +985,14 @@ tb_net_active_window(GtkWidget *widget, taskbar *tb)
     Window *f;
     task *ntk, *ctk;
     int drop_old, make_new;
-    
+
     ENTER;
     g_assert (tb != NULL);
     drop_old = make_new = 0;
     ctk = tb->focused;
     ntk = NULL;
     f = get_xaproperty(GDK_ROOT_WINDOW(), a_NET_ACTIVE_WINDOW, XA_WINDOW, 0);
-    DBG("FOCUS=%x\n", f ? *f : 0); 
+    DBG("FOCUS=%x\n", f ? *f : 0);
     if (!f) {
         drop_old = 1;
         tb->ptk = NULL;
@@ -1036,7 +1036,7 @@ static gboolean
 tk_has_urgency( task* tk )
 {
     XWMHints* hints;
-    
+
     tk->urgency = 0;
     hints = (XWMHints *) get_xaproperty (tk->win, XA_WM_HINTS, XA_WM_HINTS, 0);
     if (hints) {
@@ -1052,20 +1052,20 @@ tb_propertynotify(taskbar *tb, XEvent *ev)
 {
     Atom at;
     Window win;
-    
+
     ENTER;
     DBG("win=%x\n", ev->xproperty.window);
     at = ev->xproperty.atom;
     win = ev->xproperty.window;
     if (win != GDK_ROOT_WINDOW()) {
        task *tk = find_task(tb, win);
-        
+
        if (!tk) RET();
         DBG("win=%x\n", ev->xproperty.window);
        if (at == a_NET_WM_DESKTOP) {
             DBG("NET_WM_DESKTOP\n");
            tk->desktop = get_net_wm_desktop(win);
-           tb_display(tb);     
+           tb_display(tb);
        }  else if (at == XA_WM_NAME) {
             DBG("WM_NAME\n");
            tk_set_names(tk);
@@ -1130,7 +1130,7 @@ tb_propertynotify(taskbar *tb, XEvent *ev)
 static GdkFilterReturn
 tb_event_filter( XEvent *xev, GdkEvent *event, taskbar *tb)
 {
-    
+
     ENTER;
     //RET(GDK_FILTER_CONTINUE);
     g_assert(tb != NULL);
@@ -1142,7 +1142,7 @@ tb_event_filter( XEvent *xev, GdkEvent *event, taskbar *tb)
 static void
 menu_close_window(GtkWidget *widget, taskbar *tb)
 {
-    ENTER;    
+    ENTER;
     DBG("win %x\n", tb->menutask->win);
     XSync (GDK_DISPLAY(), 0);
     //XKillClient(GDK_DISPLAY(), tb->menutask->win);
@@ -1155,7 +1155,7 @@ menu_close_window(GtkWidget *widget, taskbar *tb)
 static void
 menu_raise_window(GtkWidget *widget, taskbar *tb)
 {
-    ENTER;    
+    ENTER;
     DBG("win %x\n", tb->menutask->win);
     XMapRaised(GDK_DISPLAY(), tb->menutask->win);
     RET();
@@ -1165,7 +1165,7 @@ menu_raise_window(GtkWidget *widget, taskbar *tb)
 static void
 menu_iconify_window(GtkWidget *widget, taskbar *tb)
 {
-    ENTER;    
+    ENTER;
     DBG("win %x\n", tb->menutask->win);
     XIconifyWindow (GDK_DISPLAY(), tb->menutask->win, DefaultScreen(GDK_DISPLAY()));
     RET();
@@ -1175,14 +1175,14 @@ static void
 menu_restore_window(GtkWidget *widget, taskbar *tb)
 {
     GdkWindow* win;
-    ENTER;    
+    ENTER;
     DBG("win %x\n", tb->menutask->win);
     win = gdk_window_foreign_new( tb->menutask->win );
     gdk_window_unmaximize( win );
     gdk_window_unref( win );
     RET();
 }
+
 static void
 menu_maximize_window(GtkWidget *widget, taskbar *tb)
 {
@@ -1241,18 +1241,18 @@ taskbar_build_gui(plugin *p)
 {
     taskbar *tb = (taskbar *)p->priv;
     GtkBarOrientation  bo;
-    
+
     ENTER;
     bo = (tb->plug->panel->orientation == ORIENT_HORIZ) ? GTK_BAR_HORIZ : GTK_BAR_VERTICAL;
     tb->bar = gtk_bar_new(bo, tb->spacing);
     if (tb->icons_only) {
         gtk_bar_set_max_child_size(GTK_BAR(tb->bar),
-              GTK_WIDGET(p->panel->box)->allocation.height -2);        
+              GTK_WIDGET(p->panel->box)->allocation.height -2);
      } else
         gtk_bar_set_max_child_size(GTK_BAR(tb->bar), tb->task_width_max);
     gtk_container_add (GTK_CONTAINER (p->pwid), tb->bar);
     gtk_widget_show(tb->bar);
-  
+
     tb->gen_pixbuf =  gdk_pixbuf_new_from_xpm_data((const char **)icon_xpm);
 
     gdk_window_add_filter(NULL, (GdkFilterFunc)tb_event_filter, tb );
@@ -1294,13 +1294,13 @@ void net_active_detect()
     data = get_xaproperty(GDK_ROOT_WINDOW(), a_NET_SUPPORTED, XA_ATOM, &nitens);
     if (!data)
        return;
-    
-    while (nitens > 0) 
+
+    while (nitens > 0)
        if(data[--nitens]==a_NET_ACTIVE_WINDOW) {
            use_net_active = TRUE;
             break;
         }
-    
+
     XFree(data);
 }
 
@@ -1384,9 +1384,9 @@ taskbar_constructor(plugin *p, char** fp)
     taskbar_build_gui(p);
     tb_net_client_list(NULL, tb);
     tb_display(tb);
-    tb_net_active_window(NULL, tb);   
+    tb_net_active_window(NULL, tb);
     RET(1);
-    
+
  error:
     taskbar_destructor(p);
     RET(0);
@@ -1397,12 +1397,12 @@ static void
 taskbar_destructor(plugin *p)
 {
     taskbar *tb = (taskbar *)p->priv;
-    
+
     ENTER;
     g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), tb_net_current_desktop, tb);
     g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), tb_net_active_window, tb);
     g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), tb_net_number_of_desktops, tb);
-    g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), tb_net_client_list, tb);   
+    g_signal_handlers_disconnect_by_func(G_OBJECT (fbev), tb_net_client_list, tb);
     gdk_window_remove_filter(NULL, (GdkFilterFunc)tb_event_filter, tb );
     g_object_unref( tb->tips );
     g_hash_table_destroy(tb->task_list);
@@ -1454,10 +1454,10 @@ static void save_config( plugin* p, FILE* fp )
     lxpanel_put_bool( fp, "ShowIconified", tb->show_iconified );
     lxpanel_put_bool( fp, "ShowMapped", tb->show_mapped );
     lxpanel_put_bool( fp, "ShowAllDesks", tb->show_all_desks );
-    lxpanel_put_bool( fp, "MaxTaskWidth", tb->task_width_max );
-    lxpanel_put_bool( fp, "spacing", tb->spacing );
     lxpanel_put_bool( fp, "UseMouseWheel", tb->use_mouse_wheel );
     lxpanel_put_bool( fp, "UseUrgencyHint", tb->use_urgency_hint );
+    lxpanel_put_int( fp, "MaxTaskWidth", tb->task_width_max );
+    lxpanel_put_int( fp, "spacing", tb->spacing );
 }
 
 plugin_class taskbar_plugin_class = {