diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2016-12-31 00:11:06 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2016-12-31 00:11:06 +0000 |
commit | 4893a9f9af8013fb81cdb81a4d49043719d0b851 (patch) | |
tree | 3f2fa10a5b15490f064fe4aadddb7071b275ef87 /frontends/amiga | |
parent | 6ba5edaede1a04db5e374d94e8fd8d4d1fbc3f0a (diff) | |
download | netsurf-4893a9f9af8013fb81cdb81a4d49043719d0b851.tar.gz netsurf-4893a9f9af8013fb81cdb81a4d49043719d0b851.tar.bz2 |
Update download window to use event callbacks
Diffstat (limited to 'frontends/amiga')
-rw-r--r-- | frontends/amiga/download.c | 21 | ||||
-rwxr-xr-x | frontends/amiga/download.h | 2 | ||||
-rw-r--r-- | 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)); |