diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2003-11-10 03:16:35 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2003-11-10 03:16:35 +0800 |
commit | d68d147c784bde6f5d13c200eb2d92a40141a5a3 (patch) | |
tree | 8d9d57cc6cf037c32acc56aecac0fa99be7169bd /src/ephy-shell.c | |
parent | c135299f16ff6d9669ccc12a7f670d9e574bbaa0 (diff) | |
download | gsoc2013-epiphany-d68d147c784bde6f5d13c200eb2d92a40141a5a3.tar.gz gsoc2013-epiphany-d68d147c784bde6f5d13c200eb2d92a40141a5a3.tar.zst gsoc2013-epiphany-d68d147c784bde6f5d13c200eb2d92a40141a5a3.zip |
Cleanup session. Persist also history and bookmarks.
2003-11-09 Marco Pesenti Gritti <marco@gnome.org>
* embed/ephy-embed.h:
* idl/EphyAutomation.idl:
* src/ephy-automation.c: (impl_ephy_automation_loadurl),
(impl_ephy_automation_open_bookmarks_editor),
(ephy_automation_init), (ephy_automation_object_finalize),
(ephy_automation_class_init):
* src/ephy-completion-model.c: (root_child_removed_cb):
* src/ephy-main.c: (ephy_main_start):
* src/ephy-shell.c: (ephy_shell_get_active_window),
(toolwindow_show_cb), (toolwindow_hide_cb),
(ephy_shell_get_bookmarks_editor), (ephy_shell_get_history_window):
* src/ephy-shell.h:
* src/ephy-tab.c: (ephy_tab_net_state_cb), (ephy_tab_size_to_cb):
* src/ephy-window.c: (remove_from_session), (ephy_window_init):
* src/session.c: (session_autoresume), (session_close),
(session_dispose), (save_window_geometry), (save_tool_window),
(save_ephy_window), (session_save), (session_load),
(session_get_windows), (net_stop_cb), (tab_added_cb),
(tab_removed_cb), (tabs_reordered_cb), (session_add_window),
(session_remove_window), (save_yourself_cb), (session_die_cb),
(gnome_session_init), (session_init):
* src/session.h:
* src/window-commands.c: (window_cmd_go_bookmarks),
(window_cmd_go_history):
Cleanup session. Persist also history and bookmarks.
Diffstat (limited to 'src/ephy-shell.c')
-rw-r--r-- | src/ephy-shell.c | 85 |
1 files changed, 39 insertions, 46 deletions
diff --git a/src/ephy-shell.c b/src/ephy-shell.c index a2e825372..806b8ca47 100644 --- a/src/ephy-shell.c +++ b/src/ephy-shell.c @@ -412,14 +412,25 @@ EphyWindow * ephy_shell_get_active_window (EphyShell *gs) { Session *session; - const GList *windows; + GList *windows, *l; + EphyWindow *window = NULL; session = EPHY_SESSION (ephy_shell_get_session (gs)); + windows = session_get_windows (session); - if (windows == NULL) return NULL; + for (l = windows; l != NULL; l = l->next) + { + if (EPHY_IS_WINDOW (l->data)) + { + window = EPHY_WINDOW (l->data); + break; + } + } + + g_list_free (windows); - return EPHY_WINDOW(windows->data); + return window; } /** @@ -628,15 +639,23 @@ ephy_shell_get_toolbars_model (EphyShell *gs, gboolean fullscreen) } static void -bookmarks_hide_cb (GtkWidget *widget, gpointer data) +toolwindow_show_cb (GtkWidget *widget) +{ + LOG ("Ref shell for %s", G_OBJECT_TYPE_NAME (widget)) + session_add_window (ephy_shell->priv->session, GTK_WINDOW (widget)); + g_object_ref (ephy_shell); +} + +static void +toolwindow_hide_cb (GtkWidget *widget) { - LOG ("Unref shell for bookmarks editor") + LOG ("Unref shell for %s", G_OBJECT_TYPE_NAME (widget)) + session_remove_window (ephy_shell->priv->session, GTK_WINDOW (widget)); g_object_unref (ephy_shell); } -void -ephy_shell_show_bookmarks_editor (EphyShell *gs, - GtkWidget *parent) +GtkWidget * +ephy_shell_get_bookmarks_editor (EphyShell *gs) { EphyBookmarks *bookmarks; @@ -645,35 +664,18 @@ ephy_shell_show_bookmarks_editor (EphyShell *gs, bookmarks = ephy_shell_get_bookmarks (ephy_shell); g_assert (bookmarks != NULL); gs->priv->bme = ephy_bookmarks_editor_new (bookmarks); - g_signal_connect (gs->priv->bme, "hide", - G_CALLBACK (bookmarks_hide_cb), NULL); - } - - if (!GTK_WIDGET_VISIBLE (gs->priv->bme)) - { - LOG ("Ref shell for bookmarks editor") - g_object_ref (ephy_shell); - } - if (parent) - { - ephy_bookmarks_editor_set_parent - (EPHY_BOOKMARKS_EDITOR (gs->priv->bme), parent); + g_signal_connect (gs->priv->bme, "show", + G_CALLBACK (toolwindow_show_cb), NULL); + g_signal_connect (gs->priv->bme, "hide", + G_CALLBACK (toolwindow_hide_cb), NULL); } - gtk_window_present (GTK_WINDOW (gs->priv->bme)); -} - -static void -history_window_hide_cb (GtkWidget *widget, gpointer data) -{ - LOG ("Unref shell for history window") - g_object_unref (ephy_shell); + return gs->priv->bme; } -void -ephy_shell_show_history_window (EphyShell *gs, - GtkWidget *parent) +GtkWidget * +ephy_shell_get_history_window (EphyShell *gs) { EphyHistory *history; @@ -683,23 +685,14 @@ ephy_shell_show_history_window (EphyShell *gs, (EPHY_EMBED_SHELL (ephy_shell)); g_assert (history != NULL); gs->priv->history_window = ephy_history_window_new (history); - g_signal_connect (gs->priv->history_window, "hide", - G_CALLBACK (history_window_hide_cb), NULL); - } - if (!GTK_WIDGET_VISIBLE (gs->priv->history_window)) - { - LOG ("Ref shell for history window") - g_object_ref (ephy_shell); - } - - if (parent) - { - ephy_history_window_set_parent - (EPHY_HISTORY_WINDOW (gs->priv->history_window), parent); + g_signal_connect (gs->priv->history_window, "show", + G_CALLBACK (toolwindow_show_cb), NULL); + g_signal_connect (gs->priv->history_window, "hide", + G_CALLBACK (toolwindow_hide_cb), NULL); } - gtk_window_present (GTK_WINDOW (gs->priv->history_window)); + return gs->priv->history_window; } void |