[evolution] Add em_folder_tree_ref_selected_store().
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Add em_folder_tree_ref_selected_store().
- Date: Sun, 17 Nov 2013 00:23:06 +0000 (UTC)
commit 19708882803f5dbd763b202da297c8cbf8f6b7f7
Author: Matthew Barnes <mbarnes redhat com>
Date: Sat Nov 16 13:10:04 2013 -0500
Add em_folder_tree_ref_selected_store().
Replaces em_folder_tree_get_selected_store().
Same as before, but adds a reference to the returned CamelStore.
mail/em-folder-tree.c | 16 ++++++++++++++--
mail/em-folder-tree.h | 2 +-
modules/mail/e-mail-shell-view-actions.c | 19 +++++++++++++++----
3 files changed, 30 insertions(+), 7 deletions(-)
---
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index aaf3488..9add844 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -3432,8 +3432,20 @@ em_folder_tree_get_selected_uri (EMFolderTree *folder_tree)
return folder_uri;
}
+/**
+ * em_folder_tree_ref_selected_store:
+ * @folder_tree: an #EMFolderTree
+ *
+ * Returns the #CamelStore for the selected row in @folder_tree, or %NULL
+ * if no row is selected.
+ *
+ * The returned #CamelStore is referenced for thread-safety and must be
+ * unreferenced with g_object_unref() when finished with it.
+ *
+ * Returns: a #CamelStore, or %NULL
+ **/
CamelStore *
-em_folder_tree_get_selected_store (EMFolderTree *folder_tree)
+em_folder_tree_ref_selected_store (EMFolderTree *folder_tree)
{
GtkTreeView *tree_view;
GtkTreeSelection *selection;
@@ -3454,7 +3466,7 @@ em_folder_tree_get_selected_store (EMFolderTree *folder_tree)
model, &iter,
COL_POINTER_CAMEL_STORE, &store, -1);
- return CAMEL_IS_STORE (store) ? store : NULL;
+ return (store != NULL) ? g_object_ref (store) : NULL;
}
void
diff --git a/mail/em-folder-tree.h b/mail/em-folder-tree.h
index adf4528..ae54133 100644
--- a/mail/em-folder-tree.h
+++ b/mail/em-folder-tree.h
@@ -133,7 +133,7 @@ gboolean em_folder_tree_store_root_selected
(EMFolderTree *folder_tree,
CamelStore **out_store);
gchar * em_folder_tree_get_selected_uri (EMFolderTree *folder_tree);
-CamelStore * em_folder_tree_get_selected_store
+CamelStore * em_folder_tree_ref_selected_store
(EMFolderTree *folder_tree);
gboolean em_folder_tree_create_folder (EMFolderTree *folder_tree,
const gchar *full_name,
diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c
index b7dc6c7..26f04b3 100644
--- a/modules/mail/e-mail-shell-view-actions.c
+++ b/modules/mail/e-mail-shell-view-actions.c
@@ -51,7 +51,7 @@ action_mail_account_disable_cb (GtkAction *action,
E_MAIL_UI_SESSION (session));
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- store = em_folder_tree_get_selected_store (folder_tree);
+ store = em_folder_tree_ref_selected_store (folder_tree);
g_return_if_fail (store != NULL);
e_mail_account_store_disable_service (
@@ -60,6 +60,8 @@ action_mail_account_disable_cb (GtkAction *action,
CAMEL_SERVICE (store));
e_shell_view_update_actions (shell_view);
+
+ g_object_unref (store);
}
static void
@@ -86,7 +88,7 @@ action_mail_account_properties_cb (GtkAction *action,
shell = e_shell_backend_get_shell (shell_backend);
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- store = em_folder_tree_get_selected_store (folder_tree);
+ store = em_folder_tree_ref_selected_store (folder_tree);
g_return_if_fail (store != NULL);
service = CAMEL_SERVICE (store);
@@ -100,6 +102,7 @@ action_mail_account_properties_cb (GtkAction *action,
GTK_WINDOW (shell_window), source);
g_object_unref (source);
+ g_object_unref (store);
}
static void
@@ -148,7 +151,7 @@ action_mail_account_refresh_cb (GtkAction *action,
mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- store = em_folder_tree_get_selected_store (folder_tree);
+ store = em_folder_tree_ref_selected_store (folder_tree);
g_return_if_fail (store != NULL);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
@@ -160,6 +163,8 @@ action_mail_account_refresh_cb (GtkAction *action,
CAMEL_STORE_FOLDER_INFO_RECURSIVE,
G_PRIORITY_DEFAULT, cancellable,
account_refresh_folder_info_received_cb, activity);
+
+ g_object_unref (store);
}
static void
@@ -1468,11 +1473,17 @@ action_mail_tools_subscriptions_cb (GtkAction *action,
mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- store = em_folder_tree_get_selected_store (folder_tree);
session = em_folder_tree_get_session (folder_tree);
+ /* The subscription editor's initial store can be NULL. */
+ store = em_folder_tree_ref_selected_store (folder_tree);
+
dialog = em_subscription_editor_new (
GTK_WINDOW (shell_window), session, store);
+
+ if (store != NULL)
+ g_object_unref (store);
+
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]