aboutsummaryrefslogtreecommitdiffstats
path: root/embed/ephy-web-view.c
diff options
context:
space:
mode:
authorXan Lopez <xlopez@igalia.com>2011-06-10 22:48:30 +0800
committerXan Lopez <xlopez@igalia.com>2011-06-10 22:48:30 +0800
commitb130e1f89c752e0aa09dfbb62616ad0ec6792c36 (patch)
tree1b1078db27ae5c0fd2b094b47bc6b6bae169ae17 /embed/ephy-web-view.c
parent2ee1825bac5ec3db74798fd4ba9367dd55e0b363 (diff)
downloadgsoc2013-epiphany-b130e1f89c752e0aa09dfbb62616ad0ec6792c36.tar.gz
gsoc2013-epiphany-b130e1f89c752e0aa09dfbb62616ad0ec6792c36.tar.zst
gsoc2013-epiphany-b130e1f89c752e0aa09dfbb62616ad0ec6792c36.zip
ephy-web-view: do not warn of modified forms for short text in input elements
It's not likely the user is interested in saving this, and it's pretty common (eg, google.com).
Diffstat (limited to 'embed/ephy-web-view.c')
-rw-r--r--embed/ephy-web-view.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c
index 8830bc331..31947954b 100644
--- a/embed/ephy-web-view.c
+++ b/embed/ephy-web-view.c
@@ -3062,6 +3062,8 @@ ephy_web_view_set_typed_address (EphyWebView *view,
g_object_notify (G_OBJECT (view), "typed-address");
}
+#define MIN_INPUT_LENGTH 50
+
/**
* ephy_web_view_has_modified_forms:
* @view: an #EphyWebView
@@ -3088,6 +3090,7 @@ ephy_web_view_has_modified_forms (EphyWebView *view)
WebKitDOMNode *form_element = webkit_dom_html_collection_item (forms, i);
gulong elements_n;
int j;
+ gboolean modified_input_element = FALSE;
elements = webkit_dom_html_form_element_get_elements (WEBKIT_DOM_HTML_FORM_ELEMENT (form_element));
elements_n = webkit_dom_html_collection_get_length (elements);
@@ -3102,8 +3105,26 @@ ephy_web_view_has_modified_forms (EphyWebView *view)
return TRUE;
if (WEBKIT_DOM_IS_HTML_INPUT_ELEMENT (element))
- if (webkit_dom_html_input_element_is_edited (WEBKIT_DOM_HTML_INPUT_ELEMENT (element)))
- return TRUE;
+ if (webkit_dom_html_input_element_is_edited (WEBKIT_DOM_HTML_INPUT_ELEMENT (element))) {
+ glong length;
+ char *text;
+
+ /* A small heuristic here. If there's only one input element
+ * modified and it does not have a lot of text the user is
+ * likely not very interested in saving this work, so do
+ * nothing (eg, google search input). */
+ if (modified_input_element)
+ return TRUE;
+
+ modified_input_element = TRUE;
+
+ text = webkit_dom_html_input_element_get_value (WEBKIT_DOM_HTML_INPUT_ELEMENT (element));
+ length = g_utf8_strlen (text, -1);
+ g_free (text);
+
+ if (length > MIN_INPUT_LENGTH)
+ return TRUE;
+ }
}
}