aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog24
-rw-r--r--mail/folder-browser-factory.c2
-rw-r--r--mail/folder-browser-ui.c2
-rw-r--r--mail/folder-browser.c9
-rw-r--r--mail/folder-browser.h3
-rw-r--r--mail/mail-display.c9
-rw-r--r--mail/mail-display.h3
-rw-r--r--mail/mail-format.c2
8 files changed, 44 insertions, 10 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index a816a8843a..e9132ae068 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,29 @@
2001-07-16 Peter Williams <peterw@ximian.com>
+ * mail-display.c (mail_display_redisplay): Use our own display_style
+ member instead of the global setting.
+ (mail_display_init): Initialize display_style.
+
+ * mail-display.h: Include "mail-config.h" and add a display_style member.
+
+ * mail-format.c (write_headers): Look at the MailDisplay's display_style
+ instead of using the full_headers data.
+
+ * folder-browser.c (folder_browser_set_message_display_style): Set
+ the MailDisplay's display style as well as the global display
+ style.
+ (my_folder_browser_init): Don't save preference changes by default. (This
+ is only observered wrt. the message display style but should apply to other
+ items.)
+
+ * folder-browser-factory.c (folder_browser_factory_new_control): Set this
+ FB to save the preferences set in it.
+
+ * folder-browser-ui.c (folder_browser_ui_add_message): Read our display's
+ state instead of the global setting.
+
+2001-07-16 Peter Williams <peterw@ximian.com>
+
* mail-folder-cache.c (mail_folder_cache_set_folder_browser): DUH.
No need to update every folder if we set the folder browser to
NULL.
diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c
index a52f3cd28e..ff7e8d649a 100644
--- a/mail/folder-browser-factory.c
+++ b/mail/folder-browser-factory.c
@@ -170,6 +170,8 @@ folder_browser_factory_new_control (const char *uri,
if (folder_browser == NULL)
return NULL;
+ FOLDER_BROWSER (folder_browser)->pref_master = TRUE; /* save UI settings changed in this FB */
+
if (!folder_browser_set_uri (FOLDER_BROWSER (folder_browser), uri)) {
gtk_object_sink (GTK_OBJECT (folder_browser));
return NULL;
diff --git a/mail/folder-browser-ui.c b/mail/folder-browser-ui.c
index 37fc12cf07..29a9af5cfc 100644
--- a/mail/folder-browser-ui.c
+++ b/mail/folder-browser-ui.c
@@ -280,7 +280,7 @@ folder_browser_ui_add_message (FolderBrowser *fb)
/* Display Style */
- state = mail_config_get_message_display_style ();
+ state = fb->mail_display->display_style;
bonobo_ui_component_set_prop (uic, message_display_styles[state],
"state", "1", NULL);
bonobo_ui_component_add_listener (uic, "ViewNormal", folder_browser_set_message_display_style, fb);
diff --git a/mail/folder-browser.c b/mail/folder-browser.c
index c682b850d6..05d363cdb6 100644
--- a/mail/folder-browser.c
+++ b/mail/folder-browser.c
@@ -1029,8 +1029,11 @@ folder_browser_set_message_display_style (BonoboUIComponent *component
for (i = 0; i < MAIL_CONFIG_DISPLAY_MAX; i++) {
if (strstr (message_display_styles[i], path)) {
- mail_config_set_message_display_style (i);
+ fb->mail_display->display_style = i;
mail_display_redisplay (fb->mail_display, TRUE);
+
+ if (fb->pref_master)
+ mail_config_set_message_display_style (i);
return;
}
}
@@ -1763,7 +1766,9 @@ my_folder_browser_init (GtkObject *object)
fb->view_collection = NULL;
fb->view_menus = NULL;
-
+
+ fb->pref_master = FALSE;
+
/*
* Setup parent class fields.
*/
diff --git a/mail/folder-browser.h b/mail/folder-browser.h
index a6e2f42ec9..332da56000 100644
--- a/mail/folder-browser.h
+++ b/mail/folder-browser.h
@@ -61,7 +61,8 @@ struct _FolderBrowser {
gboolean preview_shown;
gboolean threaded;
-
+ gboolean pref_master;
+
/* View collection and the menu handler object */
GalViewCollection *view_collection;
GalViewMenus *view_menus;
diff --git a/mail/mail-display.c b/mail/mail-display.c
index a7fd33dc64..2a0748eb39 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -1199,13 +1199,10 @@ mail_display_redisplay (MailDisplay *md, gboolean unscroll)
mail_html_write (md->html, md->stream, "<body marginwidth=0 marginheight=0>\n");
if (md->current_message) {
- MailConfigDisplayStyle style = mail_config_get_message_display_style ();
- if (style == MAIL_CONFIG_DISPLAY_SOURCE)
+ if (md->display_style == MAIL_CONFIG_DISPLAY_SOURCE)
mail_format_raw_message (md->current_message, md);
- else {
- g_datalist_set_data (md->data, "full_headers", GINT_TO_POINTER (style == MAIL_CONFIG_DISPLAY_FULL_HEADERS));
+ else
mail_format_mime_message (md->current_message, md);
- }
}
mail_html_write (md->html, md->stream, "</body></html>\n");
@@ -1278,6 +1275,8 @@ mail_display_init (GtkObject *object)
mail_display->data = NULL;
mail_display->invisible = gtk_invisible_new ();
+
+ mail_display->display_style = mail_config_get_message_display_style ();
}
static void
diff --git a/mail/mail-display.h b/mail/mail-display.h
index 92797438c9..b08fa12927 100644
--- a/mail/mail-display.h
+++ b/mail/mail-display.h
@@ -13,6 +13,7 @@
#include <camel/camel-medium.h>
#include "mail-types.h"
+#include "mail-config.h" /*display_style*/
#define MAIL_DISPLAY_TYPE (mail_display_get_type ())
#define MAIL_DISPLAY(o) (GTK_CHECK_CAST ((o), MAIL_DISPLAY_TYPE, MailDisplay))
@@ -37,6 +38,8 @@ struct _MailDisplay {
/* Sigh. This shouldn't be needed. I haven't figured out why it is
though. */
GtkWidget *invisible;
+
+ MailConfigDisplayStyle display_style;
};
typedef struct {
diff --git a/mail/mail-format.c b/mail/mail-format.c
index 7bd1a84a8a..cfe68fb559 100644
--- a/mail/mail-format.c
+++ b/mail/mail-format.c
@@ -875,7 +875,7 @@ write_headers (CamelMimeMessage *message, MailDisplay *md)
{ "Date", NULL }
};
int i, len, flags;
- gboolean full = GPOINTER_TO_INT (g_datalist_get_data (md->data, "full_headers"));
+ gboolean full = (md->display_style == MAIL_CONFIG_DISPLAY_FULL_HEADERS);
mail_html_write (md->html, md->stream,
"<table width=\"100%%\" cellpadding=0 cellspacing=0>"