aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog12
-rw-r--r--shell/e-shell-view.c8
-rw-r--r--shell/e-shell.c14
3 files changed, 32 insertions, 2 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 2e65cd6b7c..60e68f2961 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,15 @@
+2001-10-23 Ettore Perazzoli <ettore@ximian.com>
+
+ * e-shell-view.c (storage_set_removed_folder_callback): Explicitly
+ deactivate the control frame, and display the default URI before
+ destroying the dead one.
+
+ * e-shell.c (e_shell_component_maybe_crashed): If the URI is of a
+ folder that doesn't exist anymore, don't assume that the
+ corresponding component has crashed. Also, try pinging the
+ component first; if the component responds, don't pop up the
+ dialog.
+
2001-10-22 Ettore Perazzoli <ettore@ximian.com>
* e-shell-view-menu.c (command_open_folder_in_new_window): No need
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index 5e501d55a5..c8be8588c8 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -364,14 +364,18 @@ storage_set_removed_folder_callback (EStorageSet *storage_set,
page_num = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), view->control);
+ if (strncmp (priv->uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0
+ && strcmp (priv->uri + E_SHELL_URI_PREFIX_LEN, path) == 0) {
+ e_shell_view_display_uri (shell_view, "evolution:/local/Inbox");
+ }
+
+ bonobo_control_frame_control_deactivate (BONOBO_CONTROL_FRAME (bonobo_widget_get_control_frame (BONOBO_WIDGET (view->control))));
gtk_widget_destroy (view->control);
g_hash_table_remove (priv->uri_to_view, view->uri);
view_destroy (view);
gtk_notebook_remove_page (GTK_NOTEBOOK (priv->notebook), page_num);
-
- e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI);
}
diff --git a/shell/e-shell.c b/shell/e-shell.c
index 0b746c8589..bfce4e473a 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -1607,6 +1607,7 @@ e_shell_component_maybe_crashed (EShell *shell,
{
EShellPrivate *priv;
GtkWindow *parent_window;
+ EvolutionShellComponentClient *component;
GList *p;
g_return_if_fail (shell != NULL);
@@ -1617,6 +1618,19 @@ e_shell_component_maybe_crashed (EShell *shell,
priv = shell->priv;
+ if (strncmp (uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0) {
+ const char *path;
+
+ path = uri + E_SHELL_URI_PREFIX_LEN;
+ if (e_storage_set_get_folder (priv->storage_set, path) == NULL)
+ return;
+ }
+
+ component = e_folder_type_registry_get_handler_for_type (priv->folder_type_registry, type_name);
+ if (component != NULL
+ && bonobo_unknown_ping (bonobo_object_corba_objref (BONOBO_OBJECT (component))))
+ return;
+
/* See if that type has caused a crash already. */
for (p = priv->crash_type_names; p != NULL; p = p->next) {