summaryrefslogtreecommitdiff
path: root/riscos/search.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-05-07 14:41:40 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-05-07 14:41:40 +0100
commit3afd9c97310d58c0c6588d18887244328590731e (patch)
tree133917633f801613e8742d8b313faee3c4f47e71 /riscos/search.c
parent0647d69a8b8663fcc09af118dde6b256624fe232 (diff)
downloadnetsurf-3afd9c97310d58c0c6588d18887244328590731e.tar.gz
netsurf-3afd9c97310d58c0c6588d18887244328590731e.tar.bz2
Remove search context from browser window, simplify search interface for front ends.
Added content interface for search. Removed bw->cur_search search context. Desktop layer now does nothing except pass search requests from front end onto the bw's current_content via the content interface. Search API reduced to a pair of functions at each level: {desktop|content|html|textplain}_search and {desktop|content|html|textplain}_search_clear Updated front ends to use simplified search API. Only tested GTK and RO builds. These confine the search stuff to render/. However search still uses struct selection. The handling for which is still spread over desktop/ and render/. Also the render/search code itself still fiddles inside html and textplain privates.
Diffstat (limited to 'riscos/search.c')
-rw-r--r--riscos/search.c131
1 files changed, 51 insertions, 80 deletions
diff --git a/riscos/search.c b/riscos/search.c
index db87cad8d..be6db2714 100644
--- a/riscos/search.c
+++ b/riscos/search.c
@@ -123,12 +123,10 @@ bool ro_gui_search_next(wimp_w w)
search_data.search_insert = true;
search_flags_t flags = SEARCH_FLAG_FORWARDS |
ro_gui_search_update_flags();
- if (browser_window_search_verify_new(search_data.search_window,
- &ro_gui_search_callbacks, NULL))
- browser_window_search_step(
- search_data.search_window, flags,
- ro_gui_get_icon_string(dialog_search,
- ICON_SEARCH_TEXT));
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL, flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return false;
}
@@ -166,35 +164,30 @@ bool ro_gui_search_click(wimp_pointer *pointer)
search_data.search_insert = true;
flags = ~SEARCH_FLAG_FORWARDS &
ro_gui_search_update_flags();
- if (browser_window_search_verify_new(
- search_data.search_window,
- &ro_gui_search_callbacks, NULL))
- browser_window_search_step(
- search_data.search_window,
- flags,
- ro_gui_get_icon_string(
- dialog_search,
- ICON_SEARCH_TEXT));
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return true;
case ICON_SEARCH_CASE_SENSITIVE:
flags = SEARCH_FLAG_FORWARDS |
ro_gui_search_update_flags();
- if (browser_window_search_verify_new(
- search_data.search_window,
- &ro_gui_search_callbacks, NULL))
- browser_window_search_step(
- search_data.search_window,
- flags,
- ro_gui_get_icon_string(
- dialog_search,
- ICON_SEARCH_TEXT));
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return true;
case ICON_SEARCH_SHOW_ALL:
- /* TODO: call browser_window_search_verify_new() ? */
- browser_window_search_show_all(
- ro_gui_get_icon_selected_state(
- pointer->w, pointer->i),
- search_data.search_window);
+ flags = ro_gui_get_icon_selected_state(
+ pointer->w, pointer->i) ?
+ SEARCH_FLAG_SHOWALL : SEARCH_FLAG_NONE;
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return true;
}
return false;
@@ -292,9 +285,6 @@ void ro_gui_search_prepare(struct browser_window *bw)
ro_gui_search_set_forward_state(true, bw);
ro_gui_search_set_back_state(true, bw);
- browser_window_search_create_context(bw,
- &ro_gui_search_callbacks, NULL);
-
search_data.search_window = bw;
ro_gui_set_icon_string(dialog_search, ICON_SEARCH_TEXT, "", true);
@@ -321,14 +311,14 @@ bool ro_gui_search_keypress(wimp_key *key)
search_flags_t flags;
switch (key->c) {
- case 1: { /* ctrl a */
- bool sel = !ro_gui_get_icon_selected_state(key->w,
- ICON_SEARCH_SHOW_ALL);
- ro_gui_set_icon_selected_state(key->w,
- ICON_SEARCH_SHOW_ALL, sel);
- /* TODO: call browser_window_search_verify_new() ? */
- browser_window_search_show_all(sel,
- search_data.search_window);
+ case 1: {
+ flags = ro_gui_search_update_flags()
+ ^ SEARCH_FLAG_SHOWALL;
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
}
break;
case 9: /* ctrl i */
@@ -338,50 +328,38 @@ bool ro_gui_search_keypress(wimp_key *key)
ICON_SEARCH_CASE_SENSITIVE, !state);
flags = SEARCH_FLAG_FORWARDS |
ro_gui_search_update_flags();
- if (browser_window_search_verify_new(
- search_data.search_window,
- &ro_gui_search_callbacks, NULL))
- browser_window_search_step(
- search_data.search_window,
- flags,
- ro_gui_get_icon_string(
- dialog_search,
- ICON_SEARCH_TEXT));
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return true;
case IS_WIMP_KEY | wimp_KEY_UP:
search_data.search_insert = true;
flags = ~SEARCH_FLAG_FORWARDS &
ro_gui_search_update_flags();
- if (browser_window_search_verify_new(
- search_data.search_window,
- &ro_gui_search_callbacks, NULL))
- browser_window_search_step(
- search_data.search_window,
- flags,
- ro_gui_get_icon_string(
- dialog_search,
- ICON_SEARCH_TEXT));
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return true;
case IS_WIMP_KEY | wimp_KEY_DOWN:
search_data.search_insert = true;
flags = SEARCH_FLAG_FORWARDS |
ro_gui_search_update_flags();
- if (browser_window_search_verify_new(
- search_data.search_window,
- &ro_gui_search_callbacks, NULL))
- browser_window_search_step(
- search_data.search_window,
- flags,
- ro_gui_get_icon_string(
- dialog_search,
- ICON_SEARCH_TEXT));
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(dialog_search,
+ ICON_SEARCH_TEXT));
return true;
default:
if (key->c == 21) {
/* ctrl+u means the user's starting
* a new search */
- browser_window_search_destroy_context(
+ browser_window_search_clear(
search_data.search_window);
ro_gui_search_set_forward_state(true,
search_data.search_window);
@@ -394,21 +372,14 @@ bool ro_gui_search_keypress(wimp_key *key)
(key->c >= 0x20 && key->c <= 0x7f)) {
flags = SEARCH_FLAG_FORWARDS |
ro_gui_search_update_flags();
- browser_window_search_destroy_context(
- search_data.search_window);
ro_gui_search_set_forward_state(true,
search_data.search_window);
ro_gui_search_set_back_state(true,
search_data.search_window);
- if (browser_window_search_verify_new(
- search_data.search_window,
- &ro_gui_search_callbacks,
- NULL))
- browser_window_search_step(
- search_data.
- search_window,
- flags,
- ro_gui_get_icon_string(
+ browser_window_search(search_data.search_window,
+ &ro_gui_search_callbacks, NULL,
+ flags,
+ ro_gui_get_icon_string(
dialog_search,
ICON_SEARCH_TEXT));
return true;
@@ -425,7 +396,7 @@ bool ro_gui_search_keypress(wimp_key *key)
*/
void ro_gui_search_end(wimp_w w)
{
- browser_window_search_destroy_context(search_data.search_window);
+ browser_window_search_clear(search_data.search_window);
ro_gui_search_set_forward_state(true, search_data.search_window);
ro_gui_search_set_back_state(true, search_data.search_window);
}