This fixes NB#75543.
[modest] / src / maemo / modest-msg-edit-window.c
index 026a676..77cedb0 100644 (file)
@@ -381,6 +381,9 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj)
        priv->sent = FALSE;
 
        priv->last_vadj_upper = 0;
+
+       modest_window_mgr_register_help_id (modest_runtime_get_window_mgr(),
+                                           GTK_WINDOW(obj),"applications_email_editor");
 }
 
 
@@ -873,7 +876,7 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich)
        cc      = tny_header_get_cc (header);
        bcc     = tny_header_get_bcc (header);
        subject = tny_header_get_subject (header);
-       priority_flags = tny_header_get_flags (header) & TNY_HEADER_FLAG_PRIORITY;
+       priority_flags = tny_header_get_priority (header);
 
        if (to)
                modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->to_field),  to);
@@ -968,6 +971,9 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich)
        if (msg_folder) {               
                if (modest_tny_folder_is_local_folder (msg_folder)) {
                        TnyFolderType type = modest_tny_folder_get_local_or_mmc_folder_type (msg_folder);
+                       if (type == TNY_FOLDER_TYPE_INVALID)
+                               g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+                       
                        if (type == TNY_FOLDER_TYPE_DRAFTS) 
                                priv->draft_msg = g_object_ref(msg);
                        if (type == TNY_FOLDER_TYPE_OUTBOX)
@@ -1747,22 +1753,42 @@ modest_msg_edit_window_select_color (ModestMsgEditWindow *window)
        hildon_color_selector_set_color (HILDON_COLOR_SELECTOR (dialog), &(buffer_format->color));
        g_free (buffer_format);
 
-       response = gtk_dialog_run (GTK_DIALOG (dialog));
-       switch (response) {
-       case GTK_RESPONSE_OK: {
+       if (gtk_dialog_run (GTK_DIALOG (dialog) == GTK_RESPONSE_OK)) {
                new_color = hildon_color_selector_get_color (HILDON_COLOR_SELECTOR (dialog));
-       }
-               break;
-       default:
-               break;
+               if (new_color != NULL) {
+                       wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR,
+                                                     (gpointer) new_color);
+               }
        }
        gtk_widget_destroy (dialog);
+}
+
+
+void
+modest_msg_edit_window_select_background_color (ModestMsgEditWindow *window)
+{
        
-       if (new_color != NULL) {
-               wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR, (gpointer) new_color);
-               /* FIXME: free new_color here? */
+       ModestMsgEditWindowPrivate *priv;
+       GtkWidget *dialog = NULL;
+       gint response;
+       GdkColor *old_color = NULL;
+       const GdkColor *new_color = NULL;
+       
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+       old_color = (GdkColor*)wp_text_buffer_get_background_color (WP_TEXT_BUFFER (priv->text_buffer));
+       
+       dialog = hildon_color_selector_new (GTK_WINDOW (window));
+       hildon_color_selector_set_color (HILDON_COLOR_SELECTOR (dialog),(GdkColor*)old_color);
+
+       if (gtk_dialog_run (GTK_DIALOG (dialog) == GTK_RESPONSE_OK)) {
+               new_color = hildon_color_selector_get_color (HILDON_COLOR_SELECTOR (dialog));
+               if (new_color != NULL)
+                       wp_text_buffer_set_background_color (WP_TEXT_BUFFER (priv->text_buffer), new_color);
        }
+       gtk_widget_destroy (dialog);
+
 }
+
 #else 
 void
 modest_msg_edit_window_select_color (ModestMsgEditWindow *window)
@@ -1771,9 +1797,6 @@ modest_msg_edit_window_select_color (ModestMsgEditWindow *window)
        WPTextBufferFormat *buffer_format = g_new0 (WPTextBufferFormat, 1);
        ModestMsgEditWindowPrivate *priv;
        GtkWidget *dialog = NULL;
-       gint response;
-       const GdkColor *new_color = NULL;
-       GdkColor col;
 
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        wp_text_buffer_get_attributes (WP_TEXT_BUFFER (priv->text_buffer), buffer_format, FALSE);
@@ -1782,24 +1805,15 @@ modest_msg_edit_window_select_color (ModestMsgEditWindow *window)
        hildon_color_chooser_set_color (HILDON_COLOR_CHOOSER (dialog), &(buffer_format->color));
        g_free (buffer_format);
 
-       response = gtk_dialog_run (GTK_DIALOG (dialog));
-       switch (response) {
-       case GTK_RESPONSE_OK: {
+       if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
+               GdkColor col;
                hildon_color_chooser_get_color (HILDON_COLOR_CHOOSER(dialog), &col);
-               new_color = &col;
-       }
-               
-               break;
-       default:
-               break;
+               wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR,
+                                             (gpointer) &col);
        }
        gtk_widget_destroy (dialog);
-       if (new_color != NULL)
-               wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR,
-                                             (gpointer) new_color);
 }
 
-#endif /*!MODEST_HILDON_VERSION_0*/
 
 void
 modest_msg_edit_window_select_background_color (ModestMsgEditWindow *window)
@@ -1807,42 +1821,25 @@ modest_msg_edit_window_select_background_color (ModestMsgEditWindow *window)
        
        ModestMsgEditWindowPrivate *priv;
        GtkWidget *dialog = NULL;
-       gint response;
        GdkColor *old_color = NULL;
-       const GdkColor *new_color = NULL;
        
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        old_color = (GdkColor*)wp_text_buffer_get_background_color (WP_TEXT_BUFFER (priv->text_buffer));
        
-#ifdef MODEST_HILDON_VERSION_0 
-       dialog = hildon_color_selector_new (GTK_WINDOW (window));
-       hildon_color_selector_set_color (HILDON_COLOR_SELECTOR (dialog),(GdkColor*)old_color);
-#else
        dialog = hildon_color_chooser_new ();
        hildon_color_chooser_set_color (HILDON_COLOR_CHOOSER (dialog),(GdkColor*)old_color);
-#endif /*MODEST_HILDON_VERSION_9*/             
 
-       response = gtk_dialog_run (GTK_DIALOG (dialog));
-       switch (response) {
-       case GTK_RESPONSE_OK: {
-#ifdef MODEST_HILDON_VERSION_0
-               new_color = hildon_color_selector_get_color (HILDON_COLOR_SELECTOR (dialog));
-#else
+       if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { 
                GdkColor col;
                hildon_color_chooser_get_color (HILDON_COLOR_CHOOSER(dialog), &col);
-               new_color = &col;
-#endif /*MODEST_HILDON_VERSION_0*/
-          }
-               break;
-       default:
-               break;
+               wp_text_buffer_set_background_color (WP_TEXT_BUFFER (priv->text_buffer), &col);
        }
        gtk_widget_destroy (dialog);
+}
+
+#endif /*!MODEST_HILDON_VERSION_0*/
 
-       if (new_color != NULL)
-               wp_text_buffer_set_background_color (WP_TEXT_BUFFER (priv->text_buffer), new_color);
 
-}
 
 static TnyStream* create_stream_for_uri (const gchar* uri)
 {
@@ -2489,7 +2486,6 @@ modest_msg_edit_window_set_priority_flags (ModestMsgEditWindow *window,
 
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
-       priority_flags = priority_flags & (TNY_HEADER_FLAG_PRIORITY);
 
        if (priv->priority_flags != priority_flags) {
                GtkAction *priority_action = NULL;
@@ -3217,23 +3213,19 @@ modest_msg_edit_window_set_draft (ModestMsgEditWindow *window,
        ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
 
        if (priv->draft_msg != NULL) {
-               header = tny_msg_get_header (priv->draft_msg);
-               if (TNY_IS_HEADER (header)) {
-                       modest_window_mgr_unregister_header (mgr, header);
-               }
                g_object_unref (priv->draft_msg);
        }
 
        if (draft != NULL) {
                g_object_ref (draft);
                header = tny_msg_get_header (draft);
-               if (TNY_IS_HEADER (header))
-                       modest_window_mgr_register_header (mgr, header);
                if (priv->msg_uid) {
                        g_free (priv->msg_uid);
                        priv->msg_uid = NULL;
                }
                priv->msg_uid = modest_tny_folder_get_header_unique_id (header);
+               if (GTK_WIDGET_REALIZED (window))
+                       modest_window_mgr_register_window (mgr, MODEST_WINDOW (window));
        }
 
        priv->draft_msg = draft;