call this function before */
modest_main_window_disconnect_signals (MODEST_WINDOW (obj));
modest_main_window_cleanup_queue_error_signals ((ModestMainWindow *) obj);
+
+ if (priv->empty_view) {
+ g_object_unref (priv->empty_view);
+ priv->empty_view = NULL;
+ }
+
+ if (priv->header_view) {
+ g_object_unref (priv->header_view);
+ priv->header_view = NULL;
+ }
g_slist_free (priv->progress_widgets);
/* header view */
priv->header_view =
MODEST_HEADER_VIEW (modest_header_view_new (NULL, MODEST_HEADER_VIEW_STYLE_DETAILS));
+ g_object_ref (priv->header_view);
if (!priv->header_view)
g_printerr ("modest: cannot instantiate header view\n");
modest_header_view_set_style (priv->header_view, MODEST_HEADER_VIEW_STYLE_TWOLINES);
/* Empty view */
priv->empty_view = create_empty_view ();
gtk_widget_show (priv->empty_view);
+ g_object_ref (priv->empty_view);
/* Create scrolled windows */
folder_win = gtk_scrolled_window_new (NULL, NULL);
details widget */
GtkWidget *content = gtk_bin_get_child (GTK_BIN (priv->contents_widget));
if (content) {
- if (priv->contents_style == MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS)
- g_object_ref (content);
- else if (priv->contents_style == MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY) {
- g_object_ref (priv->empty_view);
+ if (priv->contents_style == MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY) {
gtk_container_remove (GTK_CONTAINER (content), priv->empty_view);
}
mail_op);
modest_mail_operation_sync_folder (mail_op, TNY_FOLDER (folder_store), FALSE);
g_object_unref (mail_op);
+ g_object_unref (folder_store);
}
}
}
return TRUE; /* uninit maybe called if runtime_init failed */
g_return_val_if_fail (MODEST_IS_SINGLETONS(_singletons), FALSE);
-
+
g_debug ("%s: cleaning up", __FUNCTION__);
if (_sig_handlers) {
g_object_unref (G_OBJECT(account));
if (folder)
g_object_unref (G_OBJECT(folder));
- if (msg_win)
- g_object_unref (G_OBJECT(msg_win));
if (msg)
g_object_unref (G_OBJECT(msg));
}
if (win != NULL) {
mgr = modest_runtime_get_window_mgr ();
modest_window_mgr_register_window (mgr, win);
- g_object_unref (win);
gtk_widget_show_all (GTK_WIDGET(win));
}
gtk_widget_show_all (GTK_WIDGET (msg_win));
cleanup:
- if (msg_win)
- g_object_unref (msg_win);
if (new_msg)
g_object_unref (G_OBJECT (new_msg));
if (account)
GList *iter = priv->window_list;
/* unregister pending windows */
while (iter) {
- modest_window_mgr_unregister_window (MODEST_WINDOW_MGR (obj),
- MODEST_WINDOW (iter->data));
+ ModestWindow *window = (ModestWindow *) iter->data;
iter = g_list_next (iter);
+ modest_window_mgr_unregister_window (MODEST_WINDOW_MGR (obj), window);
}
g_list_free (priv->window_list);
priv->window_list = NULL;
}
/* Unregister window */
modest_window_mgr_unregister_window (self, window);
- no_propagate = FALSE;
+ no_propagate = TRUE;
}
return no_propagate;
priv->window_list = g_list_remove_link (priv->window_list, win);
tmp = g_hash_table_lookup (priv->destroy_handlers, window);
handler_id = *tmp;
+
g_hash_table_remove (priv->destroy_handlers, window);
/* cancel open and receive operations */
modest_window_disconnect_signals (window);
/* Destroy the window */
+ g_object_unref (win->data);
gtk_widget_destroy (win->data);
+ g_list_free (win);
/* If there are no more windows registered emit the signal */
if (modest_window_mgr_num_windows (self) == 0)