* handle the save-settings in all cases, when quiting via menu
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Wed, 9 Aug 2006 13:19:47 +0000 (13:19 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Wed, 9 Aug 2006 13:19:47 +0000 (13:19 +0000)
  and in modest-edit-msg-window

pmo-trunk-r469

src/gtk/modest-edit-msg-window.c
src/gtk/modest-ui.c

index 468bf94..440bcb6 100644 (file)
@@ -116,11 +116,42 @@ modest_edit_msg_window_init (ModestEditMsgWindow *obj)
        priv->factory = NULL;
        priv->toolbar = NULL;
        priv->menubar = NULL;
        priv->factory = NULL;
        priv->toolbar = NULL;
        priv->menubar = NULL;
-               
 }
 
 
 
 }
 
 
 
+static void
+save_settings (ModestEditMsgWindow *self)
+{
+       ModestEditMsgWindowPrivate *priv;
+       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self);
+       modest_widget_memory_save_settings (priv->conf,
+                                           GTK_WIDGET(self),
+                                           "modest-edit-msg-window");
+}
+
+
+static void
+restore_settings (ModestEditMsgWindow *self)
+{
+       ModestEditMsgWindowPrivate *priv;
+       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self);
+       modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(self),
+                                              "modest-edit-msg-window");
+}
+
+
+
+       
+
+static void
+on_menu_quit (ModestEditMsgWindow *self, guint action, GtkWidget *widget)
+{
+       save_settings (self);
+       gtk_widget_destroy (GTK_WIDGET(self));
+}
+
+
 
 
 
 
 
 
@@ -135,7 +166,7 @@ static GtkItemFactoryEntry menu_items[] = {
 
 
        { "/File/sep1",         NULL,                   NULL,           0, "<Separator>" },
 
 
        { "/File/sep1",         NULL,                   NULL,           0, "<Separator>" },
-       { "/File/_Quit",        "<CTRL>Q",              NULL,           0, "<StockItem>", GTK_STOCK_QUIT },
+       { "/File/_Quit",        "<CTRL>Q",              on_menu_quit,   0, "<StockItem>", GTK_STOCK_QUIT },
 
        { "/_Edit",             NULL,                   NULL,           0, "<Branch>" },
        { "/Edit/_Undo",        "<CTRL>Z",              NULL,           0, "<StockItem>", GTK_STOCK_UNDO },
 
        { "/_Edit",             NULL,                   NULL,           0, "<Branch>" },
        { "/Edit/_Undo",        "<CTRL>Z",              NULL,           0, "<StockItem>", GTK_STOCK_UNDO },
@@ -206,7 +237,7 @@ on_toolbar_button_clicked (ModestToolbar *toolbar, ModestToolbarButton button_id
 {
        switch (button_id) {
        case MODEST_TOOLBAR_BUTTON_MAIL_SEND:
 {
        switch (button_id) {
        case MODEST_TOOLBAR_BUTTON_MAIL_SEND:
-               g_warning ("send the mail!");
+               save_settings (self);
                gtk_widget_destroy (GTK_WIDGET(self));
                break;
                
                gtk_widget_destroy (GTK_WIDGET(self));
                break;
                
@@ -328,12 +359,7 @@ modest_edit_msg_window_finalize (GObject *obj)
 static gboolean
 on_delete_event (GtkWidget *widget, GdkEvent *event, ModestEditMsgWindow *self)
 {
 static gboolean
 on_delete_event (GtkWidget *widget, GdkEvent *event, ModestEditMsgWindow *self)
 {
-       ModestEditMsgWindowPrivate *priv;
-       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self);
-       
-       modest_widget_memory_save_settings (priv->conf,
-                                           GTK_WIDGET(priv->msg_body),
-                                           "modest-edit-msg-body");
+       save_settings (self);
        return FALSE;
 }
 
        return FALSE;
 }
 
@@ -361,9 +387,8 @@ modest_edit_msg_window_new (ModestConf *conf, ModestWidgetFactory *factory,
        priv->factory = factory;
 
        init_window (MODEST_EDIT_MSG_WINDOW(obj));
        priv->factory = factory;
 
        init_window (MODEST_EDIT_MSG_WINDOW(obj));
-       
-       modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(obj),
-                                              "modest-edit-msg-body");
+
+       restore_settings (MODEST_EDIT_MSG_WINDOW(obj));
        
        gtk_window_set_title (GTK_WINDOW(obj), "Modest");
        gtk_window_set_icon  (GTK_WINDOW(obj),
        
        gtk_window_set_title (GTK_WINDOW(obj), "Modest");
        gtk_window_set_icon  (GTK_WINDOW(obj),
index 834b0dc..62b06cc 100644 (file)
@@ -197,9 +197,9 @@ modest_ui_new (ModestConf *modest_conf)
 }
 
 static gboolean
 }
 
 static gboolean
-on_main_window_delete_event (GtkWidget *widget, GdkEvent *event, ModestUI *self)
+on_main_window_destroy (GtkObject *widget, ModestUI *self)
 {
 {
-       g_warning (__FUNCTION__);
+       /* FIXME: check if there any viewer/editing windows opened */
        gtk_main_quit ();
        return FALSE;
 }
        gtk_main_quit ();
        return FALSE;
 }
@@ -217,8 +217,9 @@ modest_ui_main_window (ModestUI *modest_ui)
                priv->main_window =
                        modest_main_window_new (priv->conf, priv->account_mgr,
                                                priv->widget_factory);
                priv->main_window =
                        modest_main_window_new (priv->conf, priv->account_mgr,
                                                priv->widget_factory);
-               g_signal_connect (G_OBJECT(priv->main_window), "delete-event",
-                                 G_CALLBACK(on_main_window_delete_event), modest_ui);
+               g_signal_connect (G_OBJECT(priv->main_window), "destroy",
+                                 G_CALLBACK(on_main_window_destroy), modest_ui);
+
        }
                
        if (!priv->main_window)
        }
                
        if (!priv->main_window)