From aa71323c61923d24a7cf9aed4e63984eaf199b73 Mon Sep 17 00:00:00 2001 From: Jason Leach Date: Wed, 6 Jun 2001 21:22:04 +0000 Subject: (Fix bug #3205: Component crash causes folder switch even when not needed) 2001-06-06 Jason Leach (Fix bug #3205: Component crash causes folder switch even when not needed) * e-shell-view.c (socket_destroy_cb): Only flip around the ShellView to different folders when we're currently viewing the URI that's being closed/crashed. svn path=/trunk/; revision=10137 --- shell/ChangeLog | 9 +++++++++ shell/e-shell-view.c | 15 +++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/shell/ChangeLog b/shell/ChangeLog index 47a245668e..3994abdce3 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,12 @@ +2001-06-06 Jason Leach + + (Fix bug #3205: Component crash causes folder switch even when not + needed) + + * e-shell-view.c (socket_destroy_cb): Only flip around the + ShellView to different folders when we're currently viewing the + URI that's being closed/crashed. + 2001-06-06 Jason Leach (Fix bug #418: Save state of folder tree view) diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 3b7f270caa..2a146009bc 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -1549,6 +1549,7 @@ socket_destroy_cb (GtkWidget *socket_widget, gpointer data) EFolder *folder; GtkWidget *control; const char *uri; + gboolean viewing_closed_uri; char *copy_of_uri; shell_view = E_SHELL_VIEW (data); @@ -1557,7 +1558,7 @@ socket_destroy_cb (GtkWidget *socket_widget, gpointer data) uri = (const char *) gtk_object_get_data (GTK_OBJECT (socket_widget), "e_shell_view_folder_uri"); /* Strdup here as the string will be freed when the socket is destroyed. */ - copy_of_uri = g_strdup (uri); + copy_of_uri = g_strdup (uri); control = g_hash_table_lookup (priv->uri_to_control, uri); if (control == NULL) { @@ -1573,16 +1574,22 @@ socket_destroy_cb (GtkWidget *socket_widget, gpointer data) folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), get_storage_set_path_from_uri (uri)); - e_shell_view_display_uri (shell_view, NULL); + /* See if we were actively viewing the uri for the socket that's being closed */ + viewing_closed_uri = !strcmp (uri, e_shell_view_get_current_uri (shell_view)); + + if (viewing_closed_uri) + e_shell_view_display_uri (shell_view, NULL); e_shell_component_maybe_crashed (priv->shell, uri, e_folder_get_type_string (folder), shell_view); - g_free (copy_of_uri); + /* We were actively viewing the component that just crashed, so flip to the Inbox */ + if (viewing_closed_uri) + e_shell_view_display_uri (shell_view, DEFAULT_URI); - e_shell_view_display_uri (shell_view, DEFAULT_URI); + g_free (copy_of_uri); } -- cgit v1.2.3