aboutsummaryrefslogtreecommitdiffstats
path: root/modules/mail/e-mail-shell-view-private.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mail/e-mail-shell-view-private.c')
-rw-r--r--modules/mail/e-mail-shell-view-private.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c
index 6373e571a2..54f4d581e4 100644
--- a/modules/mail/e-mail-shell-view-private.c
+++ b/modules/mail/e-mail-shell-view-private.c
@@ -1215,10 +1215,13 @@ send_receive_add_to_menu (SendReceiveData *data,
gint position)
{
GtkWidget *menu_item;
+ CamelProvider *provider;
if (send_receive_find_menu_item (data, service) != NULL)
return;
+ provider = camel_service_get_provider (service);
+
menu_item = gtk_menu_item_new ();
gtk_widget_show (menu_item);
@@ -1227,6 +1230,23 @@ send_receive_add_to_menu (SendReceiveData *data,
menu_item, "label",
G_BINDING_SYNC_CREATE);
+ if (provider && (provider->flags & CAMEL_PROVIDER_IS_REMOTE) != 0) {
+ gpointer object;
+
+ if (CAMEL_IS_OFFLINE_STORE (service) ||
+ CAMEL_IS_DISCO_STORE (service))
+ object = g_object_ref (service);
+ else
+ object = camel_service_ref_session (service);
+
+ g_object_bind_property (
+ object, "online",
+ menu_item, "sensitive",
+ G_BINDING_SYNC_CREATE);
+
+ g_object_unref (object);
+ }
+
g_hash_table_insert (
data->menu_items, menu_item,
g_object_ref (service));