diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2016-12-30 00:59:12 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2016-12-30 00:59:12 +0000 |
commit | 9379a64c6dfab6046ba56b8cdb299c4da3d6c3f2 (patch) | |
tree | 01cd86f80d086bb4e45c5f062a8a6e1e66777565 /frontends/amiga/search.c | |
parent | 7ca75a4cee083ded7f3607bba5e841c430556d93 (diff) | |
download | netsurf-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-x | frontends/amiga/search.c | 17 |
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; |