summaryrefslogtreecommitdiff
path: root/content
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 /content
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 'content')
-rw-r--r--content/content.c22
-rw-r--r--content/content.h5
-rw-r--r--content/content_protected.h5
3 files changed, 32 insertions, 0 deletions
diff --git a/content/content.c b/content/content.c
index 3533d943c..74abdbfab 100644
--- a/content/content.c
+++ b/content/content.c
@@ -831,6 +831,28 @@ bool content_drop_file_at_point(struct hlcache_handle *h,
}
+void content_search(struct hlcache_handle *h,
+ struct gui_search_callbacks *gui_callbacks, void *gui_data,
+ search_flags_t flags, const char *string)
+{
+ struct content *c = hlcache_handle_get_content(h);
+ assert(c != 0);
+
+ if (c->handler->search != NULL)
+ c->handler->search(c, gui_callbacks, gui_data, flags, string);
+}
+
+
+void content_search_clear(struct hlcache_handle *h)
+{
+ struct content *c = hlcache_handle_get_content(h);
+ assert(c != 0);
+
+ if (c->handler->search_clear != NULL)
+ c->handler->search_clear(c);
+}
+
+
void content_debug_dump(struct hlcache_handle *h, FILE *f)
{
struct content *c = hlcache_handle_get_content(h);
diff --git a/content/content.h b/content/content.h
index 3f93d603b..3e5588815 100644
--- a/content/content.h
+++ b/content/content.h
@@ -38,6 +38,7 @@
#include "utils/types.h"
#include "content/content_factory.h"
#include "content/content_type.h"
+#include "desktop/search.h"
#include "desktop/mouse.h"
#include "desktop/plot_style.h"
@@ -254,6 +255,10 @@ bool content_scroll_at_point(struct hlcache_handle *h,
int x, int y, int scrx, int scry);
bool content_drop_file_at_point(struct hlcache_handle *h,
int x, int y, char *file);
+void content_search(struct hlcache_handle *h,
+ struct gui_search_callbacks *gui_callbacks, void *gui_data,
+ search_flags_t flags, const char *string);
+void content_search_clear(struct hlcache_handle *h);
void content_debug_dump(struct hlcache_handle *h, FILE *f);
struct content_rfc5988_link *content_find_rfc5988_link(struct hlcache_handle *c,
lwc_string *rel);
diff --git a/content/content_protected.h b/content/content_protected.h
index 8efe763aa..57ce35775 100644
--- a/content/content_protected.h
+++ b/content/content_protected.h
@@ -73,6 +73,11 @@ struct content_handler {
int scrx, int scry);
bool (*drop_file_at_point)(struct content *c, int x, int y,
char *file);
+ void (*search)(struct content *c,
+ struct gui_search_callbacks *gui_callbacks,
+ void *gui_data, search_flags_t flags,
+ const char *string);
+ void (*search_clear)(struct content *c);
void (*debug_dump)(struct content *c, FILE *f);
nserror (*clone)(const struct content *old, struct content **newc);
bool (*matches_quirks)(const struct content *c, bool quirks);