diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2001-10-29 12:08:03 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2001-10-29 12:08:03 +0800 |
commit | fa6339027dff8a7c5040c4b03bcf523a6fd9aa02 (patch) | |
tree | c4dd3d586676e083df9e1fa9cd09606e42cfceb4 | |
parent | 815ed53e5ace2948695f99a43a555f66e1ff408e (diff) | |
download | gsoc2013-evolution-fa6339027dff8a7c5040c4b03bcf523a6fd9aa02.tar.gz gsoc2013-evolution-fa6339027dff8a7c5040c4b03bcf523a6fd9aa02.tar.zst gsoc2013-evolution-fa6339027dff8a7c5040c4b03bcf523a6fd9aa02.zip |
Call `cleanup_delayed_selection()' as there is a slight chance that the
* 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()'.
svn path=/trunk/; revision=14320
-rw-r--r-- | shell/ChangeLog | 10 | ||||
-rw-r--r-- | shell/e-shell-view.c | 11 |
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; } |