From 0b67bd0b7c0d391441b60da38a1720f4d840d920 Mon Sep 17 00:00:00 2001 From: Claudio Saavedra Date: Tue, 19 Feb 2013 20:28:05 +0200 Subject: incognito: show about:incognito instead of the overview The overview shouldn't be shown in an incognito window as it reveals information about the browsing activity of the user. Also, a welcome page indicating the scope of the incognito window is better. https://bugzilla.gnome.org/show_bug.cgi?id=694200 --- embed/ephy-embed.c | 21 ++++++++++++--------- embed/ephy-web-view.c | 6 +++++- src/ephy-window.c | 24 ++++++++++++++++-------- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 608a9a047..0fdf921fb 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -961,15 +961,18 @@ ephy_embed_constructed (GObject *object) gtk_container_add (GTK_CONTAINER (overlay), scrolled_window); #endif - /* The overview */ - priv->overview = ephy_overview_new (); - gtk_widget_set_halign (priv->overview, GTK_ALIGN_FILL); - gtk_widget_set_valign (priv->overview, GTK_ALIGN_FILL); - gtk_overlay_add_overlay (GTK_OVERLAY (overlay), priv->overview); - - g_object_bind_property (embed, "overview-mode", - priv->overview, "visible", - G_BINDING_SYNC_CREATE); + /* The overview. In incognito mode we don't use it. */ + if (ephy_embed_shell_get_mode (ephy_embed_shell_get_default ()) != + EPHY_EMBED_SHELL_MODE_INCOGNITO) { + priv->overview = ephy_overview_new (); + gtk_widget_set_halign (priv->overview, GTK_ALIGN_FILL); + gtk_widget_set_valign (priv->overview, GTK_ALIGN_FILL); + gtk_overlay_add_overlay (GTK_OVERLAY (overlay), priv->overview); + + g_object_bind_property (embed, "overview-mode", + priv->overview, "visible", + G_BINDING_SYNC_CREATE); + } /* Floating message popup for fullscreen mode. */ priv->fullscreen_message_label = gtk_label_new (NULL); diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c index a69b3f9ee..b886da9d4 100644 --- a/embed/ephy-web-view.c +++ b/embed/ephy-web-view.c @@ -3962,7 +3962,11 @@ ephy_web_view_load_homepage (EphyWebView *view) ephy_web_view_set_visit_type (view, EPHY_PAGE_VISIT_HOMEPAGE); - ephy_web_view_load_url (view, "about:overview"); + if (ephy_embed_shell_get_mode (ephy_embed_shell_get_default ()) + == EPHY_EMBED_SHELL_MODE_INCOGNITO) + ephy_web_view_load_url (view, "about:incognito"); + else + ephy_web_view_load_url (view, "about:overview"); } /** diff --git a/src/ephy-window.c b/src/ephy-window.c index a59c310d0..6b760f19f 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -2686,6 +2686,7 @@ ephy_window_connect_active_embed (EphyWindow *window) WebKitWebView *web_view; EphyWebView *view; EphyOverview *overview; + EphyEmbedShellMode shell_mode; g_return_if_fail (window->priv->active_embed != NULL); @@ -2787,10 +2788,13 @@ ephy_window_connect_active_embed (EphyWindow *window) G_CALLBACK (sync_embed_is_overview), window, 0); - overview = ephy_embed_get_overview (embed); - g_signal_connect_object (overview, "open-link", - G_CALLBACK (overview_open_link_cb), - window, 0); + shell_mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (ephy_embed_shell_get_default ())); + if (shell_mode != EPHY_EMBED_SHELL_MODE_INCOGNITO) { + overview = ephy_embed_get_overview (embed); + g_signal_connect_object (overview, "open-link", + G_CALLBACK (overview_open_link_cb), + window, 0); + } g_object_notify (G_OBJECT (window), "active-child"); } @@ -2803,6 +2807,7 @@ ephy_window_disconnect_active_embed (EphyWindow *window) EphyWebView *view; EphyOverview *overview; guint sid; + EphyEmbedShellMode shell_mode; g_return_if_fail (window->priv->active_embed != NULL); @@ -2876,10 +2881,13 @@ ephy_window_disconnect_active_embed (EphyWindow *window) G_CALLBACK (sync_embed_is_overview), window); - overview = ephy_embed_get_overview (embed); - g_signal_handlers_disconnect_by_func (overview, - G_CALLBACK (overview_open_link_cb), - window); + shell_mode = ephy_embed_shell_get_mode (EPHY_EMBED_SHELL (ephy_embed_shell_get_default ())); + if (shell_mode != EPHY_EMBED_SHELL_MODE_INCOGNITO) { + overview = ephy_embed_get_overview (embed); + g_signal_handlers_disconnect_by_func (overview, + G_CALLBACK (overview_open_link_cb), + window); + } g_signal_handlers_disconnect_by_func (view, G_CALLBACK (ephy_window_dom_mouse_click_cb), window); -- cgit v1.2.3