2006-08-16 [colin] 2.4.0cvs54
[claws.git] / src / main.c
index f453e015a776e62c142caee408762bd3c086003b..089739a022d8a06eefa966bb547d3c37b599e9c8 100644 (file)
@@ -456,7 +456,7 @@ int main(int argc, char *argv[])
        renderer_read_config();
 
        gtkut_widget_init();
-       stock_pixbuf_gdk(NULL, STOCK_PIXMAP_SYLPHEED_ICON, &icon);
+       stock_pixbuf_gdk(NULL, STOCK_PIXMAP_SYLPHEED_CLAWS_ICON, &icon);
        gtk_window_set_default_icon(icon);
 
        folderview_initialize();
@@ -487,6 +487,7 @@ int main(int argc, char *argv[])
        if (folder_read_list() < 0) {
                if (!run_wizard(mainwin, TRUE))
                        exit(1);
+               main_window_reflect_prefs_all_now();
                folder_write_list();
        }
 
@@ -498,6 +499,10 @@ int main(int argc, char *argv[])
                        exit_sylpheed(mainwin);
        }
 
+       
+       toolbar_main_set_sensitive(mainwin);
+       main_window_set_menu_sensitive(mainwin);
+
        main_window_popup(mainwin);
 
 #ifdef HAVE_LIBETPAN
@@ -638,10 +643,14 @@ static void save_all_caches(FolderItem *item, gpointer data)
                folder_item_write_cache(item);
 }
 
+static gboolean sc_exiting = FALSE;
+
 static void exit_sylpheed(MainWindow *mainwin)
 {
        gchar *filename;
 
+       sc_exiting = TRUE;
+
        debug_print("shutting down\n");
        inc_autocheck_timer_remove();
 
@@ -949,12 +958,19 @@ void app_will_exit(GtkWidget *widget, gpointer data)
 {
        MainWindow *mainwin = data;
        
+       if (sc_exiting == TRUE) {
+               debug_print("exit pending\n");
+               return;
+       }
+       sc_exiting = TRUE;
+       debug_print("exiting\n");
        if (compose_get_compose_list()) {
                gint val = alertpanel(_("Really quit?"),
                               _("Composing message exists."),
                               _("_Save to Draft"), _("_Discard them"), _("Do_n't quit"));
                switch (val) {
                        case G_ALERTOTHER:
+                               sc_exiting = FALSE;
                                return;
                        case G_ALERTALTERNATE:
                                break;
@@ -970,6 +986,7 @@ void app_will_exit(GtkWidget *widget, gpointer data)
                               _("Some unsent messages are queued. Exit now?"),
                               GTK_STOCK_CANCEL, GTK_STOCK_OK, NULL)
                    != G_ALERTALTERNATE) {
+                       sc_exiting = FALSE;
                        return;
                }
                manage_window_focus_in(mainwin->window, NULL, NULL);
@@ -981,6 +998,11 @@ void app_will_exit(GtkWidget *widget, gpointer data)
        gtk_main_quit();
 }
 
+gboolean sylpheed_is_exiting(void)
+{
+       return sc_exiting;
+}
+
 /*
  * CLAWS: want this public so crash dialog can delete the
  * lock file too
@@ -1276,6 +1298,7 @@ static void quit_signal_handler(int sig)
 #ifdef SIGPIPE
        if (sig == SIGPIPE) {
                debug_print("caugth SIGPIPE, maybe X closing!\n");
+               signal(SIGPIPE, SIG_IGN); /* ignore following sigpipes */
                folder_write_list();
                folder_func_to_all_folders(save_all_caches, GINT_TO_POINTER(0));
                return;