aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog6
-rw-r--r--mail/mail-component.c64
2 files changed, 12 insertions, 58 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index d69009a108..17a38d9be6 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,11 @@
2003-11-14 Jeffrey Stedfast <fejj@ximian.com>
+ * mail-component.c (folder_selected_cb): Don't create a new view
+ anymore, simply set the new folder uri on the folder browser. This
+ makes the mailer use a lot less memory than in 1.x
+
+2003-11-14 Jeffrey Stedfast <fejj@ximian.com>
+
* em-folder-selection.c (folder_selected_cb): Only set OK to
sensitive if the selected node is not a store node.
diff --git a/mail/mail-component.c b/mail/mail-component.c
index 5f4a1d5995..54f4dcede9 100644
--- a/mail/mail-component.c
+++ b/mail/mail-component.c
@@ -223,65 +223,13 @@ setup_local_store(MailComponent *component)
g_free(store_uri);
}
-
-static BonoboControl *
-create_noselect_control (void)
-{
- GtkWidget *label;
-
- label = gtk_label_new (_("This folder cannot contain messages."));
- gtk_widget_show (label);
-
- return bonobo_control_new (label);
-}
-
-static GtkWidget *
-create_view_widget (EMFolderTree *emft, const char *path, const char *uri)
-{
- BonoboControl *control;
- const char *noselect;
- CamelURL *url;
-
- if (!strcmp (path, "/")) {
- /* user selected a CamelStore node... */
- /* NOTE: we *could* display some sort of statistics control for the store here, maybe? something like Outlook does? */
- control = create_noselect_control ();
- } else {
- url = camel_url_new (uri, NULL);
- noselect = url ? camel_url_get_param (url, "noselect") : NULL;
- if (noselect && !strcasecmp (noselect, "yes"))
- control = create_noselect_control ();
- else
- control = folder_browser_factory_new_control (uri);
- camel_url_free (url);
- }
-
- if (!control)
- return NULL;
-
- /* EPFIXME: This leaks the control. */
- return bonobo_widget_new_control_from_objref (BONOBO_OBJREF (control), CORBA_OBJECT_NIL);
-}
-
static void
-folder_selected_cb (EMFolderTree *emft, const char *path, const char *uri, GtkBox *vbox)
-{
- GtkWidget *view;
- GList *l, *n;
-
- /* there should only ever be 1 child */
- l = gtk_container_get_children (GTK_CONTAINER (vbox));
- while (l != NULL) {
- n = l->next;
- gtk_widget_destroy (l->data);
- g_list_free_1 (l);
- l = n;
- }
-
- view = create_view_widget (emft, path, uri);
- gtk_widget_show (view);
+folder_selected_cb (EMFolderTree *emft, const char *path, const char *uri, EMFolderView *view)
+{
+ if (!path || !strcmp (path, "/"))
+ return;
- gtk_box_pack_start_defaults (vbox, view);
+ em_folder_view_set_folder_uri (view, uri);
}
@@ -355,7 +303,7 @@ impl_createControls (PortableServer_Servant servant,
GtkWidget *view_widget;
tree_widget = (GtkWidget *) priv->emft;
- view_widget = gtk_vbox_new (0, TRUE);
+ view_widget = em_folder_browser_new ();
gtk_widget_show (tree_widget);
gtk_widget_show (view_widget);