From cb21428ef8f23891a4870886ed1f9dfec3969a61 Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Thu, 10 Jun 2004 22:08:41 +0000 Subject: Fixes bug #58825. Ugh. Really Gross Hack (tm). 2004-06-10 Jeffrey Stedfast Fixes bug #58825. Ugh. Really Gross Hack (tm). * em-folder-tree.c (emft_tree_row_expanded): If the store that we are expanding matches the uri that we've been requested to select (e.g. from before the store was added to the tree), then give the uri to the get_folder_info_op. (em_folder_tree_set_selected): If the store for the uri isn't in the tree yet, save the uri for later. * mail-component.c (folder_selected_cb): Set the selected state of the folder-tree and save it. (impl_createControls): Restore the selected state on the folder-tree. * em-folder-tree-model.c (em_folder_tree_model_set_selected): New function to set the selected-uri saved state. (em_folder_tree_model_get_selected): New function to get the selected uri saved state. (em_folder_tree_model_save_state): Renamed. * em-folder-tree.c (emft_update_model_expanded_state): Don't let path be NULL if the node is a store node (path == NULL for any other case is a bug). (emft_maybe_expand_row): Same. svn path=/trunk/; revision=26294 --- mail/mail-component.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'mail/mail-component.c') diff --git a/mail/mail-component.c b/mail/mail-component.c index 028d45257c..da437f38fb 100644 --- a/mail/mail-component.c +++ b/mail/mail-component.c @@ -172,7 +172,8 @@ static void mc_add_store(MailComponent *component, CamelStore *store, const char *name, void (*done)(CamelStore *store, CamelFolderInfo *info, void *data)) { struct _store_info *si; - + char *uri; + MAIL_COMPONENT_DEFAULT(component); si = store_info_new(store, name); @@ -329,10 +330,17 @@ mc_startup(MailComponent *mc) static void folder_selected_cb (EMFolderTree *emft, const char *path, const char *uri, guint32 flags, EMFolderView *view) { - if ((flags & CAMEL_FOLDER_NOSELECT) || !path || !strcmp (path, "")) + EMFolderTreeModel *model; + + if ((flags & CAMEL_FOLDER_NOSELECT) || !path) { em_folder_view_set_folder (view, NULL, NULL); - else + } else { + model = em_folder_tree_get_model (emft); + em_folder_tree_model_set_selected (model, uri); + em_folder_tree_model_save_state (model); + em_folder_view_set_folder_uri (view, uri); + } } static int @@ -526,19 +534,26 @@ impl_createControls (PortableServer_Servant servant, GtkWidget *tree_widget, *vbox, *info; GtkWidget *view_widget; GtkWidget *statusbar_widget; - + char *uri; + mail_session_set_interactive(TRUE); mc_startup(mail_component); view_widget = em_folder_browser_new (); /* so error boxes have a parent if none supplied */ e_error_default_parent((GtkWindow *)view_widget); - + tree_widget = (GtkWidget *) em_folder_tree_new_with_model (priv->model); em_folder_tree_set_excluded ((EMFolderTree *) tree_widget, 0); em_folder_tree_enable_drag_and_drop ((EMFolderTree *) tree_widget); + + if ((uri = em_folder_tree_model_get_selected (priv->model))) { + em_folder_tree_set_selected ((EMFolderTree *) tree_widget, uri); + g_free (uri); + } + em_format_set_session ((EMFormat *) ((EMFolderView *) view_widget)->preview, session); - + g_signal_connect (view_widget, "on-url", G_CALLBACK (view_on_url), mail_component); em_folder_view_set_statusbar ((EMFolderView*)view_widget, FALSE); -- cgit v1.2.3