aboutsummaryrefslogtreecommitdiffstats
path: root/composer/e-composer-header.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-05-21 00:02:30 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-05-21 00:56:55 +0800
commita1f287ca6bf35d27e5dcb9b89a10f76e9abbd057 (patch)
treecfc2fe1694a379a53e533d19edcf1205e55d54e5 /composer/e-composer-header.c
parentacabcb0be8e3c983e3400d7f7436f618e0000cfe (diff)
downloadgsoc2013-evolution-a1f287ca6bf35d27e5dcb9b89a10f76e9abbd057.tar.gz
gsoc2013-evolution-a1f287ca6bf35d27e5dcb9b89a10f76e9abbd057.tar.zst
gsoc2013-evolution-a1f287ca6bf35d27e5dcb9b89a10f76e9abbd057.zip
Bug 274117 – Difficult to post a new message to newsgroups
Completely rewrite how composer headers are managed. There's now two sets of headers (with some overlap): one set is for sending an email message, the other is for posting to a newsgroup. The correct set of headers is chosen on-the-fly based on the currently selected account type. The user's "view" preferences for these two sets are stored separately, so that switching between an email account and a news account will no longer stomp on your preferences. This also eliminates the need for the "Post New Message to Folder" and "Post a Reply" actions, so they've been removed. Usenet users can now just highlight a newsgroup in the folder tree and click New or Reply, and the composer window will show the correct set of headers with the Post-To field filled in automatically. Comment #6 in the bug discusses other standard news reader behaviors we still don't get right, particularly the missing "Followup To" header. These will be dealt with separately.
Diffstat (limited to 'composer/e-composer-header.c')
-rw-r--r--composer/e-composer-header.c30
1 files changed, 7 insertions, 23 deletions
diff --git a/composer/e-composer-header.c b/composer/e-composer-header.c
index 8cbcf64f1f..272556969d 100644
--- a/composer/e-composer-header.c
+++ b/composer/e-composer-header.c
@@ -41,6 +41,9 @@ enum {
struct _EComposerHeaderPrivate {
gchar *label;
gboolean button;
+
+ guint sensitive : 1;
+ guint visible : 1;
};
static gpointer parent_class;
@@ -302,15 +305,9 @@ e_composer_header_get_label (EComposerHeader *header)
gboolean
e_composer_header_get_sensitive (EComposerHeader *header)
{
- gboolean sensitive;
-
g_return_val_if_fail (E_IS_COMPOSER_HEADER (header), FALSE);
- sensitive = GTK_WIDGET_SENSITIVE (header->title_widget);
- if (GTK_WIDGET_SENSITIVE (header->input_widget) != sensitive)
- g_warning ("%s: Sensitivity is out of sync", G_STRFUNC);
-
- return sensitive;
+ return header->priv->sensitive;
}
void
@@ -319,8 +316,7 @@ e_composer_header_set_sensitive (EComposerHeader *header,
{
g_return_if_fail (E_IS_COMPOSER_HEADER (header));
- gtk_widget_set_sensitive (header->title_widget, sensitive);
- gtk_widget_set_sensitive (header->input_widget, sensitive);
+ header->priv->sensitive = sensitive;
g_object_notify (G_OBJECT (header), "sensitive");
}
@@ -328,15 +324,9 @@ e_composer_header_set_sensitive (EComposerHeader *header,
gboolean
e_composer_header_get_visible (EComposerHeader *header)
{
- gboolean visible;
-
g_return_val_if_fail (E_IS_COMPOSER_HEADER (header), FALSE);
- visible = GTK_WIDGET_VISIBLE (header->title_widget);
- if (GTK_WIDGET_VISIBLE (header->input_widget) != visible)
- g_warning ("%s: Visibility is out of sync", G_STRFUNC);
-
- return visible;
+ return header->priv->visible;
}
void
@@ -345,13 +335,7 @@ e_composer_header_set_visible (EComposerHeader *header,
{
g_return_if_fail (E_IS_COMPOSER_HEADER (header));
- if (visible) {
- gtk_widget_show (header->title_widget);
- gtk_widget_show (header->input_widget);
- } else {
- gtk_widget_hide (header->title_widget);
- gtk_widget_hide (header->input_widget);
- }
+ header->priv->visible = visible;
g_object_notify (G_OBJECT (header), "visible");
}