aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorXan Lopez <xan@igalia.com>2012-08-24 21:58:15 +0800
committerXan Lopez <xan@igalia.com>2012-08-24 21:58:15 +0800
commit2d13b6f05db1f5982b790769001549254b2480f9 (patch)
tree8ed00da26ed1f61ea74841003b61fa1fc284d7e8 /src
parent0a97a46d1b273810c1fa46b4d573594d399f4ab4 (diff)
downloadgsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.tar
gsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.tar.gz
gsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.tar.bz2
gsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.tar.lz
gsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.tar.xz
gsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.tar.zst
gsoc2013-epiphany-2d13b6f05db1f5982b790769001549254b2480f9.zip
ephy-window: centralize the logic about invisible URIs in one place
Let's make EphyWindow the one in charge of deciding whether a URI is actually shown or not in the location entry. This allows to remove some code to that effect in EphyLocationController (and perhaps some more in EphyWebView in the future), and makes this feature more extensible for the future.
Diffstat (limited to 'src')
-rw-r--r--src/ephy-window.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 0177e51bd..a710258c7 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -1469,6 +1469,35 @@ setup_ui_manager (EphyWindow *window)
gtk_ui_manager_get_accel_group (manager));
}
+/* This is the list of addresses that should never be shown in the
+ * window's location entry. */
+static const char * do_not_show_address[] = {
+ "about:blank",
+ NULL
+};
+
+static char *
+calculate_location (const char *typed_address, const char *address)
+{
+ int i;
+ const char *location;
+
+ /* If there's a typed address, use that over address. Never
+ * show URIs in the 'do_not_show_address' array. */
+ location = typed_address ? typed_address : address;
+
+ for (i = 0; do_not_show_address[i]; i++)
+ {
+ if (g_str_equal (location, do_not_show_address[i]))
+ {
+ location = NULL;
+ break;
+ }
+ }
+
+ return g_strdup (location);
+}
+
static void
sync_tab_address (EphyWebView *view,
GParamSpec *pspec,
@@ -1477,13 +1506,16 @@ sync_tab_address (EphyWebView *view,
EphyWindowPrivate *priv = window->priv;
const char *address;
const char *typed_address;
+ char *location;
if (priv->closing) return;
address = ephy_web_view_get_address (view);
typed_address = ephy_web_view_get_typed_address (view);
- ephy_window_set_location (window, typed_address ? typed_address : address);
+ location = calculate_location (typed_address, address);
+ ephy_window_set_location (window, location);
+ g_free (location);
ephy_find_toolbar_request_close (priv->find_toolbar);
}