summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontends/amiga/download.c21
-rwxr-xr-xfrontends/amiga/download.h2
-rw-r--r--frontends/amiga/gui.c4
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));