diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-08-13 23:38:34 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-08-13 23:38:34 +0100 |
commit | d09dc4431045df534fd909ade462b9d7c6b8b135 (patch) | |
tree | c95b6f6a13b7a1e4c8120f6d0048ac6d3628aedd /render | |
parent | 5810d131d5b28e448b8f9c707942f336f6113f5e (diff) | |
download | netsurf-d09dc4431045df534fd909ade462b9d7c6b8b135.tar.gz netsurf-d09dc4431045df534fd909ade462b9d7c6b8b135.tar.bz2 |
Use content message broadcast to request scrolls, instead of depending on html and text contents to keep a bw pointer.
Diffstat (limited to 'render')
-rw-r--r-- | render/search.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/render/search.c b/render/search.c index b6f64daef..246c4e39f 100644 --- a/render/search.c +++ b/render/search.c @@ -202,7 +202,7 @@ void search_step(struct search_context *context, search_flags_t flags, for(i = 0; i < string_len; i++) if (string[i] != '#' && string[i] != '*') break; if (i >= string_len) { - struct browser_window *bw; + union content_msg_data msg_data; free_matches(context); if (context->callbacks->status != NULL) context->callbacks->status(true, context->p); @@ -211,9 +211,10 @@ void search_step(struct search_context *context, search_flags_t flags, if (context->callbacks->forward_state != NULL) context->callbacks->forward_state(false, context->p); - bw = search_get_browser_window(context); - if (bw != NULL) - browser_window_set_scroll(bw, 0, 0); + msg_data.scroll.area = false; + msg_data.scroll.x0 = 0; + msg_data.scroll.y0 = 0; + content_broadcast(context->c, CONTENT_MSG_SCROLL, msg_data); return; } search_text(string, string_len, context, flags); @@ -259,7 +260,7 @@ void search_text(const char *string, int string_len, { struct rect bounds; struct box *box = NULL; - struct browser_window *bw; + union content_msg_data msg_data; bool case_sensitive, forwards, showall; case_sensitive = ((flags & SEARCH_FLAG_CASE_SENSITIVE) != 0) ? @@ -374,9 +375,12 @@ void search_text(const char *string, int string_len, context->current->end_idx, &bounds); } - bw = search_get_browser_window(context); - if (bw != NULL) - browser_window_scroll_visible(bw, &bounds); + msg_data.scroll.area = true; + msg_data.scroll.x0 = bounds.x0; + msg_data.scroll.y0 = bounds.y0; + msg_data.scroll.x1 = bounds.x1; + msg_data.scroll.y1 = bounds.y1; + content_broadcast(context->c, CONTENT_MSG_SCROLL, msg_data); } /** |