summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-08-13 23:38:34 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2012-08-13 23:38:34 +0100
commitd09dc4431045df534fd909ade462b9d7c6b8b135 (patch)
treec95b6f6a13b7a1e4c8120f6d0048ac6d3628aedd
parent5810d131d5b28e448b8f9c707942f336f6113f5e (diff)
downloadnetsurf-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.
-rw-r--r--render/search.c20
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);
}
/**