summaryrefslogtreecommitdiff
path: root/riscos/gui
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-11-22 11:52:34 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2013-11-22 11:52:34 +0000
commit1ef75e56ed9d57f128220db1cf5c6f5aa735ae10 (patch)
tree9a5455fface9de23bd6dc0c10c65d34833482d25 /riscos/gui
parent6ee760dea3b2743539f0c1bccec25d446f1b78b4 (diff)
downloadnetsurf-1ef75e56ed9d57f128220db1cf5c6f5aa735ae10.tar.gz
netsurf-1ef75e56ed9d57f128220db1cf5c6f5aa735ae10.tar.bz2
Update URL bar's hotlist indicator as you type.
Diffstat (limited to 'riscos/gui')
-rw-r--r--riscos/gui/url_bar.c38
1 files changed, 35 insertions, 3 deletions
diff --git a/riscos/gui/url_bar.c b/riscos/gui/url_bar.c
index f80b3416b..79b98871c 100644
--- a/riscos/gui/url_bar.c
+++ b/riscos/gui/url_bar.c
@@ -749,7 +749,7 @@ bool ro_gui_url_bar_click(struct url_bar *url_bar,
wimp_pointer *pointer, wimp_window_state *state,
url_bar_action *action)
{
- os_coord pos;
+ os_coord pos;
if (url_bar == NULL || url_bar->hidden ||
url_bar->display || url_bar->shaded)
@@ -1065,11 +1065,43 @@ bool ro_gui_url_bar_test_for_text_field_click(struct url_bar *url_bar,
bool ro_gui_url_bar_test_for_text_field_keypress(struct url_bar *url_bar,
wimp_key *key)
{
+ const char *url;
+ nsurl *n;
+ bool changed = false;
+
if (url_bar == NULL || url_bar->hidden || key == NULL)
return false;
- return (key->w == url_bar->window &&
- key->i == url_bar->text_icon) ? true : false;
+ if (key->w != url_bar->window || key->i != url_bar->text_icon)
+ return false;
+
+ if (url_bar->hidden)
+ return true;
+
+ /* Update hotlist indicator */
+ url = (const char *) url_bar->text_buffer;
+ if (url != NULL && nsurl_create(url, &n) == NSERROR_OK) {
+ bool prev = url_bar->hotlist.add;
+ url_bar->hotlist.add = !hotlist_has_url(n);
+ nsurl_unref(n);
+
+ if (prev != url_bar->hotlist.add) {
+ changed = true;
+ }
+ } else if (!url_bar->hotlist.add) {
+ url_bar->hotlist.add = true;
+ changed = true;
+ }
+
+ if (changed) {
+ xwimp_force_redraw(url_bar->window,
+ url_bar->hotlist.extent.x0,
+ url_bar->hotlist.extent.y0,
+ url_bar->hotlist.extent.x1,
+ url_bar->hotlist.extent.y1);
+ }
+
+ return true;
}