summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-31 00:30:42 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-31 00:30:42 +0000
commitd9c8d1c70cac756d47586e2abf2dfbb9a1d96b59 (patch)
tree0482e6008675feb12a08169e5641d5639c4512da
parentd90e82d3f1c0ed0cdd665899c754b655f661976d (diff)
downloadnetsurf-d9c8d1c70cac756d47586e2abf2dfbb9a1d96b59.tar.gz
netsurf-d9c8d1c70cac756d47586e2abf2dfbb9a1d96b59.tar.bz2
Update 401 login window to use event callbacks
-rw-r--r--frontends/amiga/gui.c2
-rwxr-xr-xfrontends/amiga/login.c19
-rwxr-xr-xfrontends/amiga/login.h4
3 files changed, 15 insertions, 10 deletions
diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c
index b7e5faa85..aea1f7408 100644
--- a/frontends/amiga/gui.c
+++ b/frontends/amiga/gui.c
@@ -1974,7 +1974,7 @@ static void ami_handle_msg(void)
continue;
}
} else if(node->Type == AMINS_LOGINWINDOW) {
- if(ami_401login_event((struct gui_login_window *)w)) {
+ if(w->tbl->event(w)) {
ami_try_quit();
break;
} else {
diff --git a/frontends/amiga/login.c b/frontends/amiga/login.c
index 805e25ca9..85324b0f1 100755
--- a/frontends/amiga/login.c
+++ b/frontends/amiga/login.c
@@ -50,7 +50,7 @@
#include "amiga/login.h"
struct gui_login_window {
- struct nsObject *node;
+ struct ami_generic_window w;
struct Window *win;
Object *objects[GID_LAST];
nserror (*cb)(bool proceed, void *pw);
@@ -62,6 +62,14 @@ struct gui_login_window {
char pwd[256];
};
+static BOOL ami_401login_event(void *w);
+
+static const struct ami_win_event_table ami_login_table = {
+ ami_401login_event,
+ NULL, /* we don't explicitly close the login window at all.
+ @todo check if this prevents us from quitting NetSurf */
+};
+
void gui_401login_open(nsurl *url, const char *realm,
nserror (*cb)(bool proceed, void *pw), void *cbpw)
{
@@ -168,9 +176,7 @@ void gui_401login_open(nsurl *url, const char *realm,
EndWindow;
lw->win = (struct Window *)RA_OpenWindow(lw->objects[OID_MAIN]);
-
- lw->node = AddObject(window_list,AMINS_LOGINWINDOW);
- lw->node->objstruct = lw;
+ ami_gui_win_list_add(lw, AMINS_LOGINWINDOW, &ami_login_table);
}
static void ami_401login_close(struct gui_login_window *lw)
@@ -182,7 +188,7 @@ static void ami_401login_close(struct gui_login_window *lw)
DisposeObject(lw->objects[OID_MAIN]);
lwc_string_unref(lw->host);
nsurl_unref(lw->url);
- DelObject(lw->node);
+ ami_gui_win_list_remove(lw);
}
static void ami_401login_login(struct gui_login_window *lw)
@@ -206,9 +212,10 @@ static void ami_401login_login(struct gui_login_window *lw)
ami_401login_close(lw);
}
-BOOL ami_401login_event(struct gui_login_window *lw)
+static BOOL ami_401login_event(void *w)
{
/* return TRUE if window destroyed */
+ struct gui_login_window *lw = (struct gui_login_window *)w;
ULONG result;
uint16 code;
diff --git a/frontends/amiga/login.h b/frontends/amiga/login.h
index e3f77901f..058fa5948 100755
--- a/frontends/amiga/login.h
+++ b/frontends/amiga/login.h
@@ -23,9 +23,7 @@
struct gui_login_window;
-BOOL ami_401login_event(struct gui_login_window *lw);
-
void gui_401login_open(nsurl *url, const char *realm,
nserror (*cb)(bool proceed, void *pw), void *cbpw);
-
#endif
+