summaryrefslogtreecommitdiff
path: root/frontends/amiga/download.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-31 00:11:06 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-31 00:11:06 +0000
commit4893a9f9af8013fb81cdb81a4d49043719d0b851 (patch)
tree3f2fa10a5b15490f064fe4aadddb7071b275ef87 /frontends/amiga/download.c
parent6ba5edaede1a04db5e374d94e8fd8d4d1fbc3f0a (diff)
downloadnetsurf-4893a9f9af8013fb81cdb81a4d49043719d0b851.tar.gz
netsurf-4893a9f9af8013fb81cdb81a4d49043719d0b851.tar.bz2
Update download window to use event callbacks
Diffstat (limited to 'frontends/amiga/download.c')
-rw-r--r--frontends/amiga/download.c21
1 files changed, 15 insertions, 6 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;