Do not update window title if the window is destroyed before the message is retrieved
[modest] / src / hildon2 / modest-msg-view-window.c
index 70ec230..fca8093 100644 (file)
@@ -533,7 +533,10 @@ init_window (ModestMsgViewWindow *obj)
        priv->find_toolbar = hildon_find_toolbar_new (NULL);
        hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (priv->find_toolbar));
        gtk_widget_set_no_show_all (priv->find_toolbar, TRUE);
        priv->find_toolbar = hildon_find_toolbar_new (NULL);
        hildon_window_add_toolbar (HILDON_WINDOW (obj), GTK_TOOLBAR (priv->find_toolbar));
        gtk_widget_set_no_show_all (priv->find_toolbar, TRUE);
-       
+
+       /* NULL-ize fields if the window is destroyed */
+       g_signal_connect (priv->msg_view, "destroy", G_CALLBACK (gtk_widget_destroyed), &(priv->msg_view));
+
        gtk_widget_show_all (GTK_WIDGET(main_vbox));
 }
 
        gtk_widget_show_all (GTK_WIDGET(main_vbox));
 }
 
@@ -1467,7 +1470,6 @@ modest_msg_view_window_find_toolbar_search (GtkWidget *widget,
                        g_free (priv->last_search);
                        priv->last_search = NULL;
                } else {
                        g_free (priv->last_search);
                        priv->last_search = NULL;
                } else {
-                       modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view));
                        hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
                }
        } else {
                        hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
                }
        } else {
@@ -1477,7 +1479,6 @@ modest_msg_view_window_find_toolbar_search (GtkWidget *widget,
                        g_free (priv->last_search);
                        priv->last_search = NULL;
                } else {
                        g_free (priv->last_search);
                        priv->last_search = NULL;
                } else {
-                       modest_msg_view_grab_focus (MODEST_MSG_VIEW (priv->msg_view));
                        hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
                }
        }
                        hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
                }
        }
@@ -2571,7 +2572,6 @@ typedef struct
 typedef struct
 {
        GList *pairs;
 typedef struct
 {
        GList *pairs;
-       GtkWidget *banner;
        GnomeVFSResult result;
 } SaveMimePartInfo;
 
        GnomeVFSResult result;
 } SaveMimePartInfo;
 
@@ -2594,7 +2594,6 @@ save_mime_part_info_free (SaveMimePartInfo *info, gboolean with_struct)
        g_list_free (info->pairs);
        info->pairs = NULL;
        if (with_struct) {
        g_list_free (info->pairs);
        info->pairs = NULL;
        if (with_struct) {
-               gtk_widget_destroy (info->banner);
                g_slice_free (SaveMimePartInfo, info);
        }
 }
                g_slice_free (SaveMimePartInfo, info);
        }
 }
@@ -2687,9 +2686,6 @@ save_mime_parts_to_file_with_checks (SaveMimePartInfo *info)
        if (!is_ok) {
                save_mime_part_info_free (info, TRUE);
        } else {
        if (!is_ok) {
                save_mime_part_info_free (info, TRUE);
        } else {
-               GtkWidget *banner = hildon_banner_show_animation (NULL, NULL, 
-                                                                 _CS("sfil_ib_saving"));
-               info->banner = banner;
                g_thread_create ((GThreadFunc)save_mime_part_to_file, info, FALSE, NULL);
        }
 
                g_thread_create ((GThreadFunc)save_mime_part_to_file, info, FALSE, NULL);
        }
 
@@ -2806,7 +2802,7 @@ modest_msg_view_window_save_attachments (ModestMsgViewWindow *window, TnyList *m
                save_multiple_str = g_strdup_printf (_FM("sfil_va_number_of_objects_attachments"), 
                                                     tny_list_get_length (mime_parts));
        }
                save_multiple_str = g_strdup_printf (_FM("sfil_va_number_of_objects_attachments"), 
                                                     tny_list_get_length (mime_parts));
        }
-       
+
        save_dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), 
                                                      GTK_FILE_CHOOSER_ACTION_SAVE);
 
        save_dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (window), 
                                                      GTK_FILE_CHOOSER_ACTION_SAVE);
 
@@ -2975,10 +2971,13 @@ update_window_title (ModestMsgViewWindow *window)
        TnyHeader *header = NULL;
        gchar *subject = NULL;
 
        TnyHeader *header = NULL;
        gchar *subject = NULL;
 
-       if (!GTK_WIDGET_VISIBLE (window))
+       priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
+
+       /* Note that if the window is closed while we're retrieving
+          the message, this widget could de deleted */
+       if (!priv->msg_view)
                return;
 
                return;
 
-       priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (window);
        msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
 
        if (msg != NULL) {
        msg = tny_msg_view_get_msg (TNY_MSG_VIEW (priv->msg_view));
 
        if (msg != NULL) {
@@ -3116,7 +3115,7 @@ on_fetch_image (ModestMsgView *msgview,
                return FALSE;
        }
 
                return FALSE;
        }
 
-       return TRUE;;
+       return TRUE;
 }
 
 static void 
 }
 
 static void