diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-05-07 15:06:33 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-05-07 15:06:33 +0100 |
commit | a0fde060e8b11b55ea70c2d71565a4f4e326b768 (patch) | |
tree | ffa2ae68c2f87f19cbbd13b7e79a632a682202ee /desktop/search.c | |
parent | f4af0d86e240948bb37a1d318d4e2559f04c6a79 (diff) | |
parent | 8b6665fe0383fd565ac7d7cd6a2bf6243ebc9937 (diff) | |
download | netsurf-a0fde060e8b11b55ea70c2d71565a4f4e326b768.tar.gz netsurf-a0fde060e8b11b55ea70c2d71565a4f4e326b768.tar.bz2 |
Merge branch 'tlsa/selection-search-refactor'
Diffstat (limited to 'desktop/search.c')
-rw-r--r-- | desktop/search.c | 103 |
1 files changed, 27 insertions, 76 deletions
diff --git a/desktop/search.c b/desktop/search.c index 29d28bdaa..014488e2d 100644 --- a/desktop/search.c +++ b/desktop/search.c @@ -44,93 +44,44 @@ #include "utils/utils.h" -/* callback informing us that a search context is nolonger valid */ -static void browser_window_search_invalidate(struct search_context *context, - void *p) -{ - struct browser_window *bw = p; - assert(bw != NULL); - - if (bw->cur_search != NULL && bw->cur_search == context) { - /* The browser's current search is the one being invalidated */ - bw->cur_search = NULL; - } -} -bool browser_window_search_create_context(struct browser_window *bw, - struct gui_search_callbacks *gui_callbacks, void *gui_p) +/** + * Starts or continues an existing search. + * + * \param bw the browser_window to search + * \param callbacks callbacks vtable to update frontend according to results + * \param gui_data a pointer returned to the callbacks + * \param flags search flags + * \param string string to search for + */ +void browser_window_search(struct browser_window *bw, + struct gui_search_callbacks *gui_callbacks, void *gui_data, + search_flags_t flags, const char *string) { - struct search_callbacks callbacks; - assert(bw != NULL); assert(gui_callbacks != NULL); - if (bw->cur_search != NULL) - search_destroy_context(bw->cur_search); - bw->cur_search = NULL; - - if (!bw->current_content) - return false; - - callbacks.gui = gui_callbacks; - callbacks.gui_p = gui_p; - callbacks.invalidate = browser_window_search_invalidate; - callbacks.p = bw; - bw->cur_search = search_create_context(bw->current_content, callbacks); - - if (bw->cur_search == NULL) - return false; - - return true; -} - - -void browser_window_search_destroy_context(struct browser_window *bw) -{ - assert(bw != NULL); + if (bw == NULL || bw->current_content == NULL) + return; - if (bw->cur_search != NULL) - search_destroy_context(bw->cur_search); - bw->cur_search = NULL; + content_search(bw->current_content, gui_callbacks, gui_data, + flags, string); } /** - * to simplify calls to search_step(); checks that the browser_window is - * non-NULL, creates a new search_context in case of a new search - * \param bw the browser_window the search refers to - * \param callbacks the callbacks to modify appearance according to results - * \param gui_p a pointer returned to the callbacks - * \return true for success + * Clear up a search. Frees any memory used by the search + * + * \param bw the browser_window to search + * \param callbacks callbacks vtable to update frontend according to results + * \param gui_data a pointer returned to the callbacks + * \param flags search flags + * \param string string to search for */ -bool browser_window_search_verify_new(struct browser_window *bw, - struct gui_search_callbacks *gui_callbacks, void *gui_p) -{ - if (bw == NULL) - return false; - if (bw->cur_search == NULL) - return browser_window_search_create_context(bw, - gui_callbacks, gui_p); - - return true; -} - - -void browser_window_search_step(struct browser_window *bw, - search_flags_t flags, const char *string) +void browser_window_search_clear(struct browser_window *bw) { - assert(bw != NULL); + if (bw == NULL || bw->current_content == NULL) + return; - if (bw->cur_search != NULL) - search_step(bw->cur_search, flags, string); + content_search_clear(bw->current_content); } - - -void browser_window_search_show_all(bool all, struct browser_window *bw) -{ - assert(bw != NULL); - - if (bw->cur_search != NULL) - search_show_all(all, bw->cur_search); -} - |