aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ChangeLog10
-rw-r--r--shell/e-shell-view.c11
2 files changed, 17 insertions, 4 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 0076f7cc0d..6731001353 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,5 +1,15 @@
2001-10-28 Ettore Perazzoli <ettore@ximian.com>
+ * e-shell-view.c (destroy): Call `cleanup_delayed_selection()' as
+ there is a slight chance that the callback gets invoked during the
+ cleanup phase.
+ (e_shell_view_display_uri): For extra safety, make sure we don't
+ get invoked on a dead object by connecting the "new_folder" signal
+ with `e_gtk_signal_connect_full_while_alive()' instead of using
+ plain `gtk_signal_connect_after()'.
+
+2001-10-28 Ettore Perazzoli <ettore@ximian.com>
+
* e-shell-view.c (new_folder_cb): Don't do the
`gtk_signal_disconnect_by_func()' as it's already done in
`cleanup_delayed_selection()'.
diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c
index 4e1789e1eb..feeded1cdc 100644
--- a/shell/e-shell-view.c
+++ b/shell/e-shell-view.c
@@ -1102,6 +1102,8 @@ destroy (GtkObject *object)
shell_view = E_SHELL_VIEW (object);
priv = shell_view->priv;
+ cleanup_delayed_selection (shell_view);
+
gtk_object_unref (GTK_OBJECT (priv->tooltips));
if (priv->corba_interface != NULL)
@@ -1127,8 +1129,6 @@ destroy (GtkObject *object)
g_free (priv->uri);
- cleanup_delayed_selection (shell_view);
-
if (priv->set_folder_timeout != 0)
gtk_timeout_remove (priv->set_folder_timeout);
@@ -2026,8 +2026,11 @@ e_shell_view_display_uri (EShellView *shell_view,
} else if (! create_new_view_for_uri (shell_view, uri)) {
cleanup_delayed_selection (shell_view);
priv->delayed_selection = g_strdup (uri);
- gtk_signal_connect_after (GTK_OBJECT (e_shell_get_storage_set (priv->shell)), "new_folder",
- GTK_SIGNAL_FUNC (new_folder_cb), shell_view);
+ e_gtk_signal_connect_full_while_alive (GTK_OBJECT (e_shell_get_storage_set (priv->shell)), "new_folder",
+ GTK_SIGNAL_FUNC (new_folder_cb), NULL,
+ shell_view, NULL,
+ NULL, TRUE,
+ GTK_OBJECT (shell_view));
retval = FALSE;
goto end;
}