2008-05-18 [colin] 3.4.0cvs49
[claws.git] / src / stock_pixmap.c
index 776e5cce1ec78708d38c317a3e704c323d7cff7b..390e6db3608e02f2afb0cf4b9f53d9daa20940df 100644 (file)
@@ -83,7 +83,7 @@
 #include "pixmaps/queue_open.xpm"
 #include "pixmaps/queue_open_hrm.xpm"
 #include "pixmaps/claws-mail_icon.xpm"
-#ifndef MAEMO
+#ifndef GENERIC_UMPC
 #include "pixmaps/claws-mail_logo.xpm"
 #else
 #include "pixmaps/claws-mail_logo-small.xpm"
@@ -362,7 +362,7 @@ static StockPixmapData pixmaps[] =
        {claws_mail_icon_xpm                    , NULL, NULL, "claws_mail_icon", NULL},
        {read_xpm                               , NULL, NULL, "read", NULL},
        {trash_btn_xpm                          , NULL, NULL, "trash_btn", NULL},
-#ifndef MAEMO
+#ifndef GENERIC_UMPC
        {claws_mail_logo_xpm                    , NULL, NULL, "claws_mail_logo", NULL},
 #else
        {claws_mail_logo_small_xpm              , NULL, NULL, "claws_mail_logo_small", NULL},
@@ -410,6 +410,7 @@ gint stock_pixbuf_gdk(GtkWidget *window, StockPixmap icon, GdkPixbuf **pixbuf)
        StockPixmapData *pix_d;
        static const char *extension[]={".png", ".xpm", NULL};
        int i = 0;
+       gboolean theme_changed = FALSE;
 
        if (pixbuf)
                *pixbuf = NULL;
@@ -418,9 +419,15 @@ gint stock_pixbuf_gdk(GtkWidget *window, StockPixmap icon, GdkPixbuf **pixbuf)
 
        pix_d = &pixmaps[icon];
 
-       if (!pix_d->pixbuf || (strcmp2(pix_d->icon_path, prefs_common.pixmap_theme_path) != 0)) {
+       theme_changed = (strcmp2(pix_d->icon_path, prefs_common.pixmap_theme_path) != 0);
+       if (!pix_d->pixbuf || theme_changed) {
                GdkPixbuf *pix = NULL;
-       
+               
+               if (theme_changed && pix_d->pixmap) {
+                       g_object_unref(pix_d->pixmap);
+                       pix_d->pixmap = NULL;
+               }
+
                if (strcmp(prefs_common.pixmap_theme_path, DEFAULT_PIXMAP_THEME) != 0) {
                        if (is_dir_exist(prefs_common.pixmap_theme_path)) {
                                char *icon_file_name; 
@@ -479,6 +486,7 @@ gint stock_pixmap_gdk(GtkWidget *window, StockPixmap icon,
        StockPixmapData *pix_d;
        static const char *extension[]={".png", ".xpm", NULL};
        int i = 0;
+       gboolean theme_changed = FALSE;
 
        if (pixmap) *pixmap = NULL;
        if (mask)   *mask   = NULL;
@@ -488,9 +496,15 @@ gint stock_pixmap_gdk(GtkWidget *window, StockPixmap icon,
 
        pix_d = &pixmaps[icon];
 
-       if (!pix_d->pixmap || (strcmp2(pix_d->icon_path, prefs_common.pixmap_theme_path) != 0)) {
+       theme_changed = (strcmp2(pix_d->icon_path, prefs_common.pixmap_theme_path) != 0);
+       if (!pix_d->pixmap || theme_changed) {
                GdkPixmap *pix = NULL;
-       
+
+               if (theme_changed && pix_d->pixbuf) {
+                       g_object_unref(pix_d->pixbuf);
+                       pix_d->pixbuf = NULL;
+               }
+
                if (strcmp(prefs_common.pixmap_theme_path, DEFAULT_PIXMAP_THEME) != 0) {
                        if ( is_dir_exist(prefs_common.pixmap_theme_path) ) {
                                char *icon_file_name;