summaryrefslogtreecommitdiff
path: root/frontends/amiga/search.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-30 00:59:12 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-30 00:59:12 +0000
commit9379a64c6dfab6046ba56b8cdb299c4da3d6c3f2 (patch)
tree01cd86f80d086bb4e45c5f062a8a6e1e66777565 /frontends/amiga/search.c
parent7ca75a4cee083ded7f3607bba5e841c430556d93 (diff)
downloadnetsurf-9379a64c6dfab6046ba56b8cdb299c4da3d6c3f2.tar.gz
netsurf-9379a64c6dfab6046ba56b8cdb299c4da3d6c3f2.tar.bz2
Start tidying up Amiga event-handling code
As we used a shared message port, we call different event-handling functions for different window types. This changes that so we register the event-handler as a callback so we can handle event processing for all windows generically. Currently the main browser window and find window use the new approach, so the handling still has a long list of window types. This should also make window_list private to gui.c
Diffstat (limited to 'frontends/amiga/search.c')
-rwxr-xr-xfrontends/amiga/search.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/frontends/amiga/search.c b/frontends/amiga/search.c
index cd5ab5e5c..7e2b9a45a 100755
--- a/frontends/amiga/search.c
+++ b/frontends/amiga/search.c
@@ -69,7 +69,7 @@
static bool search_insert;
struct find_window {
- struct nsObject *node;
+ struct ami_generic_window w;
struct Window *win;
Object *objects[GID_LAST];
struct gui_window *gwin;
@@ -84,6 +84,7 @@ static void ami_search_set_hourglass(bool active, void *p);
static void ami_search_add_recent(const char *string, void *p);
static void ami_search_set_forward_state(bool active, void *p);
static void ami_search_set_back_state(bool active, void *p);
+static BOOL ami_search_event(void *w);
static struct gui_search_table search_table = {
ami_search_set_status,
@@ -93,6 +94,11 @@ static struct gui_search_table search_table = {
ami_search_set_back_state,
};
+static struct ami_win_event_table ami_search_table = {
+ ami_search_event,
+ NULL, /* we don't explicitly close the search window n the frontend */
+};
+
struct gui_search_table *amiga_search_table = &search_table;
struct gui_window *ami_search_get_gwin(struct find_window *fw)
@@ -184,8 +190,7 @@ void ami_search_open(struct gui_window *gwin)
fwin->win = (struct Window *)RA_OpenWindow(fwin->objects[OID_MAIN]);
fwin->gwin = gwin;
- fwin->node = AddObject(window_list,AMINS_FINDWINDOW);
- fwin->node->objstruct = fwin;
+ ami_gui_win_list_add(fwin, AMINS_FINDWINDOW, &ami_search_table);
gwin->shared->searchwin = fwin;
ActivateLayoutGadget((struct Gadget *)fwin->objects[GID_MAIN], fwin->win,
@@ -197,11 +202,11 @@ void ami_search_close(void)
browser_window_search_clear(fwin->gwin->bw);
fwin->gwin->shared->searchwin = NULL;
DisposeObject(fwin->objects[OID_MAIN]);
- DelObject(fwin->node);
- fwin=NULL;
+ ami_gui_win_list_remove(fwin);
+ fwin = NULL;
}
-BOOL ami_search_event(void)
+static BOOL ami_search_event(void *w)
{
/* return TRUE if window destroyed */
ULONG result;