summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-31 00:02:21 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-12-31 00:02:21 +0000
commit6ba5edaede1a04db5e374d94e8fd8d4d1fbc3f0a (patch)
treec22cd469bec1e7fe06d93978ed754a90450f514f
parent47379c04442c805af95ba16b9932fbdb549a7594 (diff)
downloadnetsurf-6ba5edaede1a04db5e374d94e8fd8d4d1fbc3f0a.tar.gz
netsurf-6ba5edaede1a04db5e374d94e8fd8d4d1fbc3f0a.tar.bz2
Update GUI options window to use event callback
-rw-r--r--frontends/amiga/gui.c8
-rwxr-xr-xfrontends/amiga/gui_options.c25
-rwxr-xr-xfrontends/amiga/gui_options.h2
3 files changed, 21 insertions, 14 deletions
diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c
index e55e1da2a..f5ae32054 100644
--- a/frontends/amiga/gui.c
+++ b/frontends/amiga/gui.c
@@ -1957,7 +1957,7 @@ static void ami_handle_msg(void)
continue;
}
} else if(node->Type == AMINS_GUIOPTSWINDOW) {
- if(ami_gui_opts_event()) {
+ if(w->tbl->event(w)) {
/* last window possibly closed, so exit with conditions ;) */
if(scrn) ami_try_quit();
break;
@@ -2958,6 +2958,7 @@ void ami_quit_netsurf(void)
struct nsObject *node;
struct nsObject *nnode;
struct ami_generic_window *w;
+ struct gui_window_2 *gwin;
/* Disable the multiple tabs open warning */
nsoption_set_bool(tab_close_warn, false);
@@ -2977,12 +2978,13 @@ void ami_quit_netsurf(void)
case AMINS_WINDOW:
/* This also closes windows that are attached to the
* gui_window, such as local history and find. */
- //ShowWindow(gwin->win, WINDOW_BACKMOST); // do we need this??
+ gwin = (struct gui_window_2 *)w;
+ ShowWindow(gwin->win, WINDOW_BACKMOST); // do we need this??
w->tbl->close(w);
break;
case AMINS_GUIOPTSWINDOW:
- ami_gui_opts_close();
+ w->tbl->close(w);
break;
case AMINS_DLWINDOW:
diff --git a/frontends/amiga/gui_options.c b/frontends/amiga/gui_options.c
index fb5d1b195..698735bdc 100755
--- a/frontends/amiga/gui_options.c
+++ b/frontends/amiga/gui_options.c
@@ -220,7 +220,7 @@ enum {
};
struct ami_gui_opts_window {
- struct nsObject *node;
+ struct ami_generic_window w;
struct Window *win;
Object *objects[GID_OPTS_LAST];
#ifndef __amigaos4__
@@ -233,6 +233,14 @@ struct ami_gui_opts_window {
#endif
};
+static BOOL ami_gui_opts_event(void *w);
+static void ami_gui_opts_close(void *w);
+
+static const struct ami_win_event_table ami_guiopts_table = {
+ ami_gui_opts_event,
+ ami_gui_opts_close,
+};
+
static struct ami_gui_opts_window *gow = NULL;
static CONST_STRPTR tabs[OPTS_MAX_TABS];
@@ -1667,8 +1675,7 @@ void ami_gui_opts_open(void)
EndWindow;
gow->win = (struct Window *)RA_OpenWindow(gow->objects[OID_MAIN]);
- gow->node = AddObject(window_list,AMINS_GUIOPTSWINDOW);
- gow->node->objstruct = gow;
+ ami_gui_win_list_add(gow, AMINS_GUIOPTSWINDOW, &ami_guiopts_table);
}
ami_utf8_free(homepage_url_lc);
}
@@ -2063,15 +2070,15 @@ static void ami_gui_opts_use(bool save)
ami_update_pointer(gow->win, GUI_POINTER_DEFAULT);
}
-void ami_gui_opts_close(void)
+static void ami_gui_opts_close(void *w)
{
DisposeObject(gow->objects[OID_MAIN]);
ami_gui_opts_free(gow);
- DelObject(gow->node);
+ ami_gui_win_list_remove(gow);
gow = NULL;
}
-BOOL ami_gui_opts_event(void)
+static BOOL ami_gui_opts_event(void *w)
{
/* return TRUE if window destroyed */
ULONG result,data = 0;
@@ -2083,7 +2090,7 @@ BOOL ami_gui_opts_event(void)
switch(result & WMHI_CLASSMASK) // class
{
case WMHI_CLOSEWINDOW:
- ami_gui_opts_close();
+ ami_gui_opts_close(gow);
return TRUE;
break;
@@ -2102,7 +2109,7 @@ BOOL ami_gui_opts_event(void)
{
case GID_OPTS_SAVE:
ami_gui_opts_use(true);
- ami_gui_opts_close();
+ ami_gui_opts_close(gow);
return TRUE;
break;
@@ -2111,7 +2118,7 @@ BOOL ami_gui_opts_event(void)
// fall through
case GID_OPTS_CANCEL:
- ami_gui_opts_close();
+ ami_gui_opts_close(gow);
return TRUE;
break;
diff --git a/frontends/amiga/gui_options.h b/frontends/amiga/gui_options.h
index abb0b111c..7de35cc0d 100755
--- a/frontends/amiga/gui_options.h
+++ b/frontends/amiga/gui_options.h
@@ -20,8 +20,6 @@
#define AMIGA_GUI_OPTIONS_H
/* Prefs GUI control */
void ami_gui_opts_open(void);
-BOOL ami_gui_opts_event(void);
-void ami_gui_opts_close(void);
/* Web search list */
struct List *ami_gui_opts_websearch(void);