aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/e-shell-backend.c6
-rw-r--r--shell/e-shell-window-private.c6
-rw-r--r--shell/e-shell.c6
3 files changed, 18 insertions, 0 deletions
diff --git a/shell/e-shell-backend.c b/shell/e-shell-backend.c
index 06e1469f58..9ee2edb4dc 100644
--- a/shell/e-shell-backend.c
+++ b/shell/e-shell-backend.c
@@ -116,6 +116,12 @@ shell_backend_dispose (GObject *object)
priv = E_SHELL_BACKEND_GET_PRIVATE (object);
+ if (priv->shell != NULL) {
+ g_object_remove_weak_pointer (
+ G_OBJECT (priv->shell), &priv->shell);
+ priv->shell = NULL;
+ }
+
if (priv->shell_view_class != NULL) {
g_type_class_unref (priv->shell_view_class);
priv->shell_view_class = NULL;
diff --git a/shell/e-shell-window-private.c b/shell/e-shell-window-private.c
index bb74e35ced..71617433d1 100644
--- a/shell/e-shell-window-private.c
+++ b/shell/e-shell-window-private.c
@@ -449,6 +449,12 @@ e_shell_window_private_dispose (EShellWindow *shell_window)
priv->signal_handler_ids = NULL;
}
+ if (priv->shell != NULL) {
+ g_object_remove_weak_pointer (
+ G_OBJECT (priv->shell), &priv->shell);
+ priv->shell = NULL;
+ }
+
DISPOSE (priv->ui_manager);
g_hash_table_remove_all (priv->loaded_views);
diff --git a/shell/e-shell.c b/shell/e-shell.c
index 785485320f..547432bc2d 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -484,6 +484,12 @@ shell_dispose (GObject *object)
g_list_free (priv->loaded_backends);
priv->loaded_backends = NULL;
+ if (priv->preparing_for_line_change != NULL) {
+ g_object_remove_weak_pointer (
+ G_OBJECT (priv->preparing_for_line_change),
+ &priv->preparing_for_line_change);
+ }
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (parent_class)->dispose (object);
}