diff options
author | Xan Lopez <xan@igalia.com> | 2012-06-28 17:55:14 +0800 |
---|---|---|
committer | Xan Lopez <xan@igalia.com> | 2012-06-28 17:55:14 +0800 |
commit | 8797404133cf7c578c29de82ccf37040348170df (patch) | |
tree | 01b623cd136389e8baec0d42647a2fd5c2f1b012 | |
parent | de2aeeb64480a4dab6ef907dc581f7770672bf2e (diff) | |
download | gsoc2013-epiphany-8797404133cf7c578c29de82ccf37040348170df.tar.gz gsoc2013-epiphany-8797404133cf7c578c29de82ccf37040348170df.tar.zst gsoc2013-epiphany-8797404133cf7c578c29de82ccf37040348170df.zip |
ephy-web-view: try to simplify a bit the typed-address logic
I think we can do without the "expire_address_now" boolean, and just
rely on whether typed-address itself is NULL or not. If it is not, we
want to always show it in the location entry and never overwrite it,
since it reflects what the user has typed. The only case when we want
to go ahead and set it to NULL is when the load actually starts (ie,
when the user wants to transform what he has typed into a new
load). Try to document things better reflecting this logic.
-rw-r--r-- | embed/ephy-web-view.c | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c index 5bf4e3564..c2e8572ae 100644 --- a/embed/ephy-web-view.c +++ b/embed/ephy-web-view.c @@ -88,7 +88,6 @@ struct _EphyWebViewPrivate { char *status_message; char *link_message; GdkPixbuf *icon; - gboolean expire_address_now; /* Local file watch. */ EphyFileMonitor *file_monitor; @@ -2019,8 +2018,7 @@ load_changed_cb (WebKitWebView *web_view, loading_uri = webkit_web_view_get_uri (web_view); g_signal_emit_by_name (view, "new-document-now", loading_uri); - if ((priv->address == NULL || priv->address[0] == '\0') && - priv->expire_address_now == TRUE) { + if (priv->address == NULL || priv->address[0] == '\0') { ephy_web_view_set_address (view, loading_uri); ephy_web_view_set_title (view, NULL); } @@ -2031,7 +2029,6 @@ load_changed_cb (WebKitWebView *web_view, priv->status_message = g_strdup (priv->loading_title); g_object_notify (object, "status-message"); - priv->expire_address_now = TRUE; break; } case WEBKIT_LOAD_REDIRECTED: @@ -2187,8 +2184,7 @@ load_status_cb (WebKitWebView *web_view, g_signal_emit_by_name (view, "new-document-now", loading_uri); - if ((priv->address == NULL || priv->address[0] == '\0') && - priv->expire_address_now == TRUE) { + if (priv->address == NULL || priv->address[0] == '\0') { ephy_web_view_set_address (view, loading_uri); ephy_web_view_set_title (view, NULL); } @@ -2199,7 +2195,6 @@ load_status_cb (WebKitWebView *web_view, priv->status_message = g_strdup (priv->loading_title); g_object_notify (object, "status-message"); - priv->expire_address_now = TRUE; break; } case WEBKIT_LOAD_COMMITTED: { @@ -2519,12 +2514,10 @@ load_error_cb (WebKitWebView *web_view, { EphyWebViewPrivate *priv = view->priv; - if (priv->expire_address_now) { + if (!priv->typed_address) { const char* prev_uri; prev_uri = webkit_web_view_get_uri (web_view); - - ephy_web_view_set_typed_address (view, NULL); ephy_web_view_set_address (view, prev_uri); } } @@ -2639,7 +2632,6 @@ ephy_web_view_init (EphyWebView *web_view) priv = web_view->priv = EPHY_WEB_VIEW_GET_PRIVATE (web_view); - priv->expire_address_now = TRUE; priv->is_blank = TRUE; #ifndef HAVE_WEBKIT2 priv->load_status = WEBKIT_LOAD_PROVISIONAL; @@ -3066,7 +3058,6 @@ ephy_web_view_set_address (EphyWebView *view, _ephy_web_view_set_is_blank (view, is_blank); if (ephy_web_view_is_loading (view) && - priv->expire_address_now == TRUE && priv->typed_address != NULL) { g_free (priv->typed_address); priv->typed_address = NULL; @@ -3480,15 +3471,23 @@ ephy_web_view_set_visibility (EphyWebView *view, * ephy_web_view_get_typed_address: * @view: an #EphyWebView * - * Returns the text that @view's #EphyWindow will display in its location toolbar - * entry when @view is selected. + * Returns the text that the user introduced in the @view's + * #EphyWindow location entry, if any. * * This is not guaranteed to be the same as @view's location, - * available through ephy_web_view_get_location(). As the user types a new address - * into the location entry, ephy_web_view_get_location()'s returned string will - * change. + * available through ephy_web_view_get_location(). As the user types a + * new address into the location entry, + * ephy_web_view_get_typed_address()'s returned string will + * change. When the load starts, ephy_web_view_get_typed_address() + * will return %NULL, and ephy_web_view_get_location() will return the + * new page being loaded. Note that the typed_address can be changed + * again while a load is in progress (in case the user starts to type + * again in the location entry); in that case + * ephy_web_view_get_typed_address() will be again non-%NULL, and the + * contents of the entry will not be overwritten. * - * Return value: @view's #EphyWindow's location entry text when @view is selected + * Return value: @view's #EphyWindow's location entry text when @view + * is selected. **/ const char * ephy_web_view_get_typed_address (EphyWebView *view) @@ -3512,11 +3511,6 @@ ephy_web_view_set_typed_address (EphyWebView *view, g_free (priv->typed_address); priv->typed_address = g_strdup (address); - /* If the page is loading prevent the typed address from going away, - since Epiphany will try to overwrite the typed address with the - confirmed full URL when passing through, for example, the - COMMITTED state. */ - priv->expire_address_now = !ephy_web_view_is_loading (view); g_object_notify (G_OBJECT (view), "typed-address"); } |