diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2015-08-15 14:11:30 +0100 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2015-08-15 14:11:30 +0100 |
commit | ff1de8997694e3278e8d72ced1adb866983443fc (patch) | |
tree | e165dd55ef26eb2ebc83805cb43d226e352bea06 /amiga/gui_options.c | |
parent | d90ab621f8021c5680a4702dbc20cbf94ce3ee3b (diff) | |
download | netsurf-ff1de8997694e3278e8d72ced1adb866983443fc.tar.gz netsurf-ff1de8997694e3278e8d72ced1adb866983443fc.tar.bz2 |
Fix options clicktab creation on OS3
None of the rest of this GUI creates properly yet.
Diffstat (limited to 'amiga/gui_options.c')
-rwxr-xr-x | amiga/gui_options.c | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/amiga/gui_options.c b/amiga/gui_options.c index d42aa1601..ffda7d5b6 100755 --- a/amiga/gui_options.c +++ b/amiga/gui_options.c @@ -210,6 +210,9 @@ struct ami_gui_opts_window { struct nsObject *node; struct Window *win; Object *objects[GID_OPTS_LAST]; +#ifndef __amigaos4__ + struct List clicktablist; +#endif }; static struct ami_gui_opts_window *gow = NULL; @@ -223,7 +226,7 @@ CONST_STRPTR fontopts[6]; CONST_STRPTR gadlab[OPTS_LAST]; struct List *websearch_list; -static void ami_gui_opts_setup(void) +static void ami_gui_opts_setup(struct ami_gui_opts_window *gow) { tabs[0] = (char *)ami_utf8_easy((char *)messages_get("con_general")); tabs[1] = (char *)ami_utf8_easy((char *)messages_get("Display")); @@ -240,6 +243,19 @@ static void ami_gui_opts_setup(void) tabs[8] = NULL; #endif +#ifndef __amigaos4__ + int i = 0; + struct Node *node; + + NewList(&gow->clicktablist); + + do { + node = AllocClickTabNode(TNA_Text, tabs[i], TNA_Number, i, TAG_DONE); + AddTail(&gow->clicktablist, node); + i++; + } while (tabs[i] != 0); +#endif + screenopts[0] = (char *)ami_utf8_easy((char *)messages_get("ScreenOwn")); screenopts[1] = (char *)ami_utf8_easy((char *)messages_get("ScreenWB")); screenopts[2] = (char *)ami_utf8_easy((char *)messages_get("ScreenPublic")); @@ -377,7 +393,7 @@ static void ami_gui_opts_setup(void) fontopts[5] = NULL; } -static void ami_gui_opts_free(void) +static void ami_gui_opts_free(struct ami_gui_opts_window *gow) { int i; @@ -397,6 +413,19 @@ static void ami_gui_opts_free(void) if(nativebmopts[i]) free((APTR)nativebmopts[i]); ami_gui_opts_websearch_free(websearch_list); + +#ifndef __amigaos4__ + struct Node *node; + struct Node *nnode; + + if(IsListEmpty((struct List *)&gow->clicktablist)) return; + node = GetHead((struct List *)&gow->clicktablist); + + do { + nnode = GetSucc(node); + if(node) FreeClickTabNode(node); + } while((node = nnode)); +#endif } void ami_gui_opts_open(void) @@ -527,9 +556,10 @@ void ami_gui_opts_open(void) if(!gow) { - ami_gui_opts_setup(); - gow = ami_misc_allocvec_clear(sizeof(struct ami_gui_opts_window), 0); + if(gow == NULL) return; + + ami_gui_opts_setup(gow); gow->objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), @@ -548,7 +578,11 @@ void ami_gui_opts_open(void) WINDOW_ParentGroup, gow->objects[GID_OPTS_MAIN] = LayoutVObj, LAYOUT_AddChild, ClickTabObj, GA_RelVerify, TRUE, +#ifdef __amigaos4__ GA_Text, tabs, +#else + CLICKTAB_Labels, &gow->clicktablist, +#endif CLICKTAB_PageGroup, PageObj, /* ** General @@ -1915,8 +1949,9 @@ void ami_gui_opts_close(void) { DisposeObject(gow->objects[OID_MAIN]); DelObject(gow->node); + ami_gui_opts_free(gow); + FreeVec(gow); gow = NULL; - ami_gui_opts_free(); } BOOL ami_gui_opts_event(void) |