From 4893a9f9af8013fb81cdb81a4d49043719d0b851 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 31 Dec 2016 00:11:06 +0000 Subject: Update download window to use event callbacks --- frontends/amiga/download.c | 21 +++++++++++++++------ frontends/amiga/download.h | 2 -- frontends/amiga/gui.c | 4 ++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/frontends/amiga/download.c b/frontends/amiga/download.c index 3eba8935c..47485e0da 100644 --- a/frontends/amiga/download.c +++ b/frontends/amiga/download.c @@ -69,7 +69,7 @@ #include "amiga/utf8.h" struct gui_download_window { - struct nsObject *node; + struct ami_generic_window w; struct Window *win; Object *objects[GID_LAST]; BPTR fh; @@ -89,6 +89,14 @@ enum { AMINS_DLOAD_ABORT, }; +static void ami_download_window_abort(void *w); +static BOOL ami_download_window_event(void *w); + +static const struct ami_win_event_table ami_download_table = { + ami_download_window_event, + ami_download_window_abort, +}; + static int downloads_in_progress = 0; static struct gui_download_window *gui_download_window_create(download_context *ctx, @@ -190,8 +198,7 @@ static struct gui_download_window *gui_download_window_create(download_context * dw->win = (struct Window *)RA_OpenWindow(dw->objects[OID_MAIN]); dw->ctx = ctx; - dw->node = AddObject(window_list,AMINS_DLWINDOW); - dw->node->objstruct = dw; + ami_gui_win_list_add(dw, AMINS_DLWINDOW, &ami_download_table); downloads_in_progress++; @@ -269,7 +276,7 @@ static void gui_download_window_done(struct gui_download_window *dw) downloads_in_progress--; DisposeObject(dw->objects[OID_MAIN]); - DelObject(dw->node); + ami_gui_win_list_remove(dw); if(queuedl) { nsurl *url; if (nsurl_create(dln2->node.ln_Name, &url) != NSERROR_OK) { @@ -296,16 +303,18 @@ static void gui_download_window_error(struct gui_download_window *dw, gui_download_window_done(dw); } -void ami_download_window_abort(struct gui_download_window *dw) +static void ami_download_window_abort(void *w) { + struct gui_download_window *dw = (struct gui_download_window *)dw; download_context_abort(dw->ctx); dw->result = AMINS_DLOAD_ABORT; gui_download_window_done(dw); } -BOOL ami_download_window_event(struct gui_download_window *dw) +static BOOL ami_download_window_event(void *w) { /* return TRUE if window destroyed */ + struct gui_download_window *dw = (struct gui_download_window *)w; ULONG result; uint16 code; diff --git a/frontends/amiga/download.h b/frontends/amiga/download.h index 51981ede8..b60b4f002 100755 --- a/frontends/amiga/download.h +++ b/frontends/amiga/download.h @@ -34,8 +34,6 @@ struct dlnode char *filename; }; -void ami_download_window_abort(struct gui_download_window *dw); -BOOL ami_download_window_event(struct gui_download_window *dw); void ami_free_download_list(struct List *dllist); BOOL ami_download_check_overwrite(const char *file, struct Window *win, ULONG size); diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c index f5ae32054..97b0271e0 100644 --- a/frontends/amiga/gui.c +++ b/frontends/amiga/gui.c @@ -1966,7 +1966,7 @@ static void ami_handle_msg(void) continue; } } else if(node->Type == AMINS_DLWINDOW) { - if(ami_download_window_event((struct gui_download_window *)w)) { + if(w->tbl->event(w)) { ami_try_quit(); break; } else { @@ -2988,7 +2988,7 @@ void ami_quit_netsurf(void) break; case AMINS_DLWINDOW: - ami_download_window_abort((struct gui_download_window *)w); + w->tbl->close(w); break; } } while((node = nnode)); -- cgit v1.2.3