Merged into folder_browser_new: nothing ever changes the URI of an
* folder-browser.c (folder_browser_set_uri): Merged into folder_browser_new: nothing ever changes the URI of an existing folder browser any more. (folder_browser_new): Make this take a uri argument and do the work folder_browser_set_uri used to do, except that we set fb->uri right away, so that if the folder browser's control is activated before got_folder() gets called, then folder_browser_ui_add_list() will have access to the correct uri for purposes of setting ViewThreaded, etc. Fixes #4913. (got_folder): Don't set fb->uri here since it will already have been set. Don't call message_list_set_threaded, since it should be a noop now (and if it's not, it would make the message list not match the menu item). * folder-browser-ui.c (folder_browser_ui_add_list): Remove some code that was failing to work around the problems above. * message-browser.c (message_browser_new): Pass uri to folder_browser_new, remove call to set_uri. * folder-browser-factory.c (folder_browser_factory_new_control): Likewise. Also fix a s/destroy/unref/ in an error cleanup. svn path=/trunk/; revision=12954
This commit is contained in:
@ -1,3 +1,28 @@
|
||||
2001-09-18 Dan Winship <danw@ximian.com>
|
||||
|
||||
* folder-browser.c (folder_browser_set_uri): Merged into
|
||||
folder_browser_new: nothing ever changes the URI of an existing
|
||||
folder browser any more.
|
||||
(folder_browser_new): Make this take a uri argument and do the
|
||||
work folder_browser_set_uri used to do, except that we set fb->uri
|
||||
right away, so that if the folder browser's control is activated
|
||||
before got_folder() gets called, then folder_browser_ui_add_list()
|
||||
will have access to the correct uri for purposes of setting
|
||||
ViewThreaded, etc. Fixes #4913.
|
||||
(got_folder): Don't set fb->uri here since it will already have
|
||||
been set. Don't call message_list_set_threaded, since it should be
|
||||
a noop now (and if it's not, it would make the message list not
|
||||
match the menu item).
|
||||
|
||||
* folder-browser-ui.c (folder_browser_ui_add_list): Remove some
|
||||
code that was failing to work around the problems above.
|
||||
|
||||
* message-browser.c (message_browser_new): Pass uri to
|
||||
folder_browser_new, remove call to set_uri.
|
||||
|
||||
* folder-browser-factory.c (folder_browser_factory_new_control):
|
||||
Likewise. Also fix a s/destroy/unref/ in an error cleanup.
|
||||
|
||||
2001-09-18 Jeffrey Stedfast <fejj@ximian.com>
|
||||
|
||||
* mail-session.c (get_password): Pass a 'cache-me' argument to
|
||||
|
||||
@ -166,23 +166,18 @@ folder_browser_factory_new_control (const char *uri,
|
||||
BonoboControl *control;
|
||||
GtkWidget *folder_browser;
|
||||
|
||||
folder_browser = folder_browser_new (shell);
|
||||
folder_browser = folder_browser_new (shell, 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;
|
||||
}
|
||||
|
||||
gtk_widget_show (folder_browser);
|
||||
|
||||
control = bonobo_control_new (folder_browser);
|
||||
|
||||
if (control == NULL) {
|
||||
gtk_object_destroy (GTK_OBJECT (folder_browser));
|
||||
gtk_object_unref (GTK_OBJECT (folder_browser));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -343,10 +343,8 @@ folder_browser_ui_add_list (FolderBrowser *fb)
|
||||
|
||||
/* Threaded toggle */
|
||||
state = mail_config_get_thread_list (FOLDER_BROWSER (fb)->uri);
|
||||
bonobo_ui_component_set_prop (uic, "/commands/ViewThreaded", "state", state ? "1" : "0", NULL);
|
||||
bonobo_ui_component_add_listener (uic, "ViewThreaded", folder_browser_toggle_threads, fb);
|
||||
/* FIXME: this kind of bypasses bonobo but seems the only way when we change components */
|
||||
folder_browser_toggle_threads (uic, "", Bonobo_UIComponent_STATE_CHANGED, state ? "1" : "0", fb);
|
||||
bonobo_ui_component_set_prop (uic, "/commands/ViewThreaded", "state", state ? "1" : "0", NULL);
|
||||
|
||||
/* Property menu */
|
||||
folder_browser_setup_property_menu (fb, fb->uicomp);
|
||||
|
||||
@ -687,22 +687,13 @@ got_folder(char *uri, CamelFolder *folder, void *data)
|
||||
|
||||
d(printf ("got folder '%s' = %p\n", uri, folder));
|
||||
|
||||
if (fb->folder == folder)
|
||||
goto done;
|
||||
|
||||
if (fb->folder)
|
||||
camel_object_unref (CAMEL_OBJECT (fb->folder));
|
||||
g_free (fb->uri);
|
||||
fb->uri = g_strdup (uri);
|
||||
fb->folder = folder;
|
||||
|
||||
if (folder == NULL)
|
||||
goto done;
|
||||
|
||||
camel_object_ref (CAMEL_OBJECT (folder));
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (fb->search), camel_folder_has_search_capability (folder));
|
||||
message_list_set_threaded (fb->message_list, mail_config_get_thread_list (fb->uri));
|
||||
message_list_set_folder (fb->message_list, folder,
|
||||
folder_browser_is_drafts (fb) ||
|
||||
folder_browser_is_sent (fb) ||
|
||||
@ -723,17 +714,6 @@ got_folder(char *uri, CamelFolder *folder, void *data)
|
||||
gtk_signal_emit (GTK_OBJECT (fb), folder_browser_signals [FOLDER_LOADED], fb->uri);
|
||||
}
|
||||
|
||||
gboolean
|
||||
folder_browser_set_uri (FolderBrowser *folder_browser, const char *uri)
|
||||
{
|
||||
if (uri && *uri) {
|
||||
gtk_object_ref((GtkObject *)folder_browser);
|
||||
mail_get_folder(uri, got_folder, folder_browser);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
folder_browser_set_ui_component (FolderBrowser *fb, BonoboUIComponent *uicomp)
|
||||
{
|
||||
@ -1471,8 +1451,6 @@ on_right_click (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event
|
||||
g_free (uids->pdata[i]);
|
||||
g_ptr_array_free (uids, TRUE);
|
||||
|
||||
display_menu:
|
||||
|
||||
/* generate the "Filter on Mailing List menu item name */
|
||||
if (mailing_list_name == NULL) {
|
||||
enable_mask |= IS_MAILING_LIST;
|
||||
@ -1867,7 +1845,7 @@ my_folder_browser_init (GtkObject *object)
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
folder_browser_new (const GNOME_Evolution_Shell shell)
|
||||
folder_browser_new (const GNOME_Evolution_Shell shell, const char *uri)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
FolderBrowser *folder_browser;
|
||||
@ -1877,7 +1855,6 @@ folder_browser_new (const GNOME_Evolution_Shell shell)
|
||||
folder_browser = gtk_type_new (folder_browser_get_type ());
|
||||
|
||||
my_folder_browser_init (GTK_OBJECT (folder_browser));
|
||||
folder_browser->uri = NULL;
|
||||
|
||||
folder_browser->shell = CORBA_Object_duplicate (shell, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION) {
|
||||
@ -1889,6 +1866,10 @@ folder_browser_new (const GNOME_Evolution_Shell shell)
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
folder_browser->uri = g_strdup (uri);
|
||||
gtk_object_ref (GTK_OBJECT (folder_browser));
|
||||
mail_get_folder (folder_browser->uri, got_folder, folder_browser);
|
||||
|
||||
return GTK_WIDGET (folder_browser);
|
||||
}
|
||||
|
||||
|
||||
@ -95,14 +95,12 @@ struct fb_ondemand_closure {
|
||||
};
|
||||
|
||||
GtkType folder_browser_get_type (void);
|
||||
GtkWidget *folder_browser_new (const GNOME_Evolution_Shell shell);
|
||||
GtkWidget *folder_browser_new (const GNOME_Evolution_Shell shell,
|
||||
const char *uri);
|
||||
|
||||
void folder_browser_set_ui_component (FolderBrowser *fb,
|
||||
BonoboUIComponent *uicomp);
|
||||
|
||||
gboolean folder_browser_set_uri (FolderBrowser *folder_browser,
|
||||
const char *uri);
|
||||
|
||||
void folder_browser_set_message_preview (FolderBrowser *folder_browser,
|
||||
gboolean show_message_preview);
|
||||
void folder_browser_clear_search (FolderBrowser *fb);
|
||||
|
||||
@ -222,7 +222,7 @@ message_browser_new (const GNOME_Evolution_Shell shell, const char *uri, const c
|
||||
|
||||
gtk_object_set_data_full (GTK_OBJECT (new), "uid", g_strdup (uid), g_free);
|
||||
|
||||
fb = FOLDER_BROWSER (folder_browser_new (shell));
|
||||
fb = FOLDER_BROWSER (folder_browser_new (shell, uri));
|
||||
new->fb = fb;
|
||||
|
||||
set_bonobo_ui (GTK_WIDGET (new), fb);
|
||||
@ -253,8 +253,6 @@ message_browser_new (const GNOME_Evolution_Shell shell, const char *uri, const c
|
||||
gtk_signal_connect (GTK_OBJECT (fb), "message_loaded",
|
||||
message_browser_message_loaded, new);
|
||||
|
||||
folder_browser_set_uri (fb, uri);
|
||||
|
||||
return GTK_WIDGET (new);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user