diff options
Diffstat (limited to 'src/window-commands.c')
-rw-r--r-- | src/window-commands.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/window-commands.c b/src/window-commands.c index c64761092..3da431353 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -19,6 +19,7 @@ #include <config.h> #include "ephy-shell.h" +#include "ephy-debug.h" #include "window-commands.h" #include "find-dialog.h" #include "print-dialog.h" @@ -232,6 +233,20 @@ window_cmd_file_new_tab (EggAction *action, EPHY_NEW_TAB_JUMP); } +static void +bookmarks_hide_cb (GtkWidget *widget, gpointer data) +{ + LOG ("Unref shell for bookmarks editor") + g_object_unref (ephy_shell); +} + +static void +shell_weak_notify_cb (gpointer data, GObject *object) +{ + LOG ("Bookmarks editor destroyed") + gtk_widget_destroy (GTK_WIDGET (data)); +} + void window_cmd_go_bookmarks (EggAction *action, EphyWindow *window) @@ -244,6 +259,16 @@ window_cmd_go_bookmarks (EggAction *action, bookmarks = ephy_shell_get_bookmarks (ephy_shell); g_assert (bookmarks != NULL); dialog = ephy_bookmarks_editor_new (bookmarks); + g_object_weak_ref (G_OBJECT (ephy_shell), + shell_weak_notify_cb, dialog); + g_signal_connect (dialog, "hide", + G_CALLBACK (bookmarks_hide_cb), NULL); + } + + if (!GTK_WIDGET_VISIBLE (dialog)) + { + LOG ("Ref shell for bookmarks editor") + g_object_ref (ephy_shell); } ephy_bookmarks_editor_set_parent (EPHY_BOOKMARKS_EDITOR (dialog), |