summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2015-01-25 00:27:53 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2015-01-25 00:27:53 +0000
commite89072b3d025f3920a00ac25c6bbe29d749a0afb (patch)
tree6a095f85213cd47ac7fcf73c343e62a7e93abe3a
parentf63742d7c2c550857697ee102222112af86e1f9f (diff)
downloadnetsurf-e89072b3d025f3920a00ac25c6bbe29d749a0afb.tar.gz
netsurf-e89072b3d025f3920a00ac25c6bbe29d749a0afb.tar.bz2
Open BOOPSI/ReAction classes using the new-style methods.
Create some alternative NewObject macros and make some code use them.
-rw-r--r--amiga/gui.c54
-rw-r--r--amiga/libs.c187
-rw-r--r--amiga/libs.h14
-rwxr-xr-xamiga/stringview/stringview.c5
4 files changed, 161 insertions, 99 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index ad70f2fbb..2fa1c5ef6 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -3643,19 +3643,19 @@ gui_window_create(struct browser_window *bw,
ami_get_theme_filename(fave, "theme_fave", false);
ami_get_theme_filename(unfave, "theme_unfave", false);
- g->shared->objects[GID_FAVE_ADD] = BitMapObject,
+ g->shared->objects[GID_FAVE_ADD] = BitMapObj,
BITMAP_SourceFile, fave,
BITMAP_Screen, scrn,
BITMAP_Masking, TRUE,
BitMapEnd;
- g->shared->objects[GID_FAVE_RMV] = BitMapObject,
+ g->shared->objects[GID_FAVE_RMV] = BitMapObj,
BITMAP_SourceFile, unfave,
BITMAP_Screen, scrn,
BITMAP_Masking, TRUE,
BitMapEnd;
- g->shared->objects[GID_ADDTAB_BM] = BitMapObject,
+ g->shared->objects[GID_ADDTAB_BM] = BitMapObj,
BITMAP_SourceFile, addtab,
BITMAP_SelectSourceFile, addtab_s,
BITMAP_DisabledSourceFile, addtab_g,
@@ -3663,7 +3663,7 @@ gui_window_create(struct browser_window *bw,
BITMAP_Masking, TRUE,
BitMapEnd;
- g->shared->objects[GID_CLOSETAB_BM] = BitMapObject,
+ g->shared->objects[GID_CLOSETAB_BM] = BitMapObj,
BITMAP_SourceFile, closetab,
BITMAP_SelectSourceFile, closetab_s,
BITMAP_DisabledSourceFile, closetab_g,
@@ -3697,7 +3697,7 @@ gui_window_create(struct browser_window *bw,
}
else
{
- g->shared->objects[GID_TABS_FLAG] = BitMapObject,
+ g->shared->objects[GID_TABS_FLAG] = BitMapObj,
BITMAP_SourceFile, tabthrobber,
BITMAP_Screen,scrn,
BITMAP_Masking,TRUE,
@@ -3706,7 +3706,7 @@ gui_window_create(struct browser_window *bw,
LOG(("Creating window object"));
- g->shared->objects[OID_MAIN] = WindowObject,
+ g->shared->objects[OID_MAIN] = WindowObj,
#ifndef __amigaos4__
WA_Width, 100,
WA_Height, 100,
@@ -3742,16 +3742,16 @@ gui_window_create(struct browser_window *bw,
WINDOW_BuiltInScroll, TRUE,
WINDOW_GadgetHelp, TRUE,
WINDOW_UserData, g->shared,
- WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = VGroupObject,
+ WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
- LAYOUT_AddChild, g->shared->objects[GID_TOOLBARLAYOUT] = HGroupObject,
+ LAYOUT_AddChild, g->shared->objects[GID_TOOLBARLAYOUT] = LayoutHObj,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_AddChild, g->shared->objects[GID_BACK] = ButtonObject,
GA_ID,GID_BACK,
GA_RelVerify,TRUE,
GA_Disabled,TRUE,
GA_HintInfo, g->shared->helphints[GID_BACK],
- BUTTON_RenderImage,BitMapObject,
+ BUTTON_RenderImage,BitMapObj,
BITMAP_SourceFile,nav_west,
BITMAP_SelectSourceFile,nav_west_s,
BITMAP_DisabledSourceFile,nav_west_g,
@@ -3766,7 +3766,7 @@ gui_window_create(struct browser_window *bw,
GA_RelVerify,TRUE,
GA_Disabled,TRUE,
GA_HintInfo, g->shared->helphints[GID_FORWARD],
- BUTTON_RenderImage,BitMapObject,
+ BUTTON_RenderImage,BitMapObj,
BITMAP_SourceFile,nav_east,
BITMAP_SelectSourceFile,nav_east_s,
BITMAP_DisabledSourceFile,nav_east_g,
@@ -3780,7 +3780,7 @@ gui_window_create(struct browser_window *bw,
GA_ID,GID_STOP,
GA_RelVerify,TRUE,
GA_HintInfo, g->shared->helphints[GID_STOP],
- BUTTON_RenderImage,BitMapObject,
+ BUTTON_RenderImage,BitMapObj,
BITMAP_SourceFile,stop,
BITMAP_SelectSourceFile,stop_s,
BITMAP_DisabledSourceFile,stop_g,
@@ -3794,7 +3794,7 @@ gui_window_create(struct browser_window *bw,
GA_ID,GID_RELOAD,
GA_RelVerify,TRUE,
GA_HintInfo, g->shared->helphints[GID_RELOAD],
- BUTTON_RenderImage,BitMapObject,
+ BUTTON_RenderImage,BitMapObj,
BITMAP_SourceFile,reload,
BITMAP_SelectSourceFile,reload_s,
BITMAP_DisabledSourceFile,reload_g,
@@ -3808,7 +3808,7 @@ gui_window_create(struct browser_window *bw,
GA_ID,GID_HOME,
GA_RelVerify,TRUE,
GA_HintInfo, g->shared->helphints[GID_HOME],
- BUTTON_RenderImage,BitMapObject,
+ BUTTON_RenderImage,BitMapObj,
BITMAP_SourceFile,home,
BITMAP_SelectSourceFile,home_s,
BITMAP_DisabledSourceFile,home_g,
@@ -3818,7 +3818,7 @@ gui_window_create(struct browser_window *bw,
ButtonEnd,
CHILD_WeightedWidth,0,
CHILD_WeightedHeight,0,
- LAYOUT_AddChild, HGroupObject, // FavIcon, URL bar and hotlist star
+ LAYOUT_AddChild, LayoutHObj, // FavIcon, URL bar and hotlist star
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_AddChild, g->shared->objects[GID_ICON] = SpaceObject,
GA_ID, GID_ICON,
@@ -3853,7 +3853,7 @@ gui_window_create(struct browser_window *bw,
// GA_RelVerify, TRUE,
// LAYOUT_RelVerify, TRUE,
LAYOUT_WeightBar, TRUE,
- LAYOUT_AddChild, HGroupObject,
+ LAYOUT_AddChild, LayoutHObj,
LAYOUT_VertAlignment, LALIGN_CENTER,
LAYOUT_AddChild, g->shared->objects[GID_SEARCH_ICON] = ChooserObject,
GA_ID, GID_SEARCH_ICON,
@@ -3887,11 +3887,11 @@ gui_window_create(struct browser_window *bw,
BEVEL_Style, BVS_SBAR_VERT,
BevelEnd,
CHILD_WeightedHeight, 0,
- LAYOUT_AddChild, g->shared->objects[GID_HOTLISTLAYOUT] = VGroupObject,
+ LAYOUT_AddChild, g->shared->objects[GID_HOTLISTLAYOUT] = LayoutVObj,
LAYOUT_SpaceInner, FALSE,
LayoutEnd,
CHILD_WeightedHeight,0,
- LAYOUT_AddChild, g->shared->objects[GID_TABLAYOUT] = HGroupObject,
+ LAYOUT_AddChild, g->shared->objects[GID_TABLAYOUT] = LayoutHObj,
LAYOUT_SpaceInner,FALSE,
addtabclosegadget, g->shared->objects[GID_CLOSETAB],
CHILD_WeightedWidth,0,
@@ -3905,8 +3905,8 @@ gui_window_create(struct browser_window *bw,
CHILD_WeightedHeight,0,
LayoutEnd,
CHILD_WeightedHeight,0,
- LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = HGroupObject,
- LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = VGroupObject,
+ LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = LayoutHObj,
+ LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = LayoutVObj,
LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObject,
GA_ID,GID_BROWSER,
SPACE_Transparent,TRUE,
@@ -3923,7 +3923,7 @@ gui_window_create(struct browser_window *bw,
g->shared->tabs = 0;
g->tab_node = NULL;
- g->shared->objects[OID_MAIN] = WindowObject,
+ g->shared->objects[OID_MAIN] = WindowObj,
WA_ScreenTitle, ami_gui_get_screen_title(),
WA_Activate, TRUE,
WA_DepthGadget, FALSE,
@@ -3950,10 +3950,10 @@ gui_window_create(struct browser_window *bw,
WINDOW_SharedPort,sport,
WINDOW_UserData,g->shared,
WINDOW_BuiltInScroll,TRUE,
- WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = HGroupObject,
+ WINDOW_ParentGroup, g->shared->objects[GID_MAIN] = LayoutHObj,
LAYOUT_SpaceOuter, TRUE,
- LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = HGroupObject,
- LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = VGroupObject,
+ LAYOUT_AddChild, g->shared->objects[GID_VSCROLLLAYOUT] = LayoutHObj,
+ LAYOUT_AddChild, g->shared->objects[GID_HSCROLLLAYOUT] = LayoutVObj,
LAYOUT_AddChild, g->shared->objects[GID_BROWSER] = SpaceObject,
GA_ID,GID_BROWSER,
SPACE_Transparent,TRUE,
@@ -4907,7 +4907,7 @@ static nserror gui_search_web_provider_update(const char *provider_name,
if(gwin->search_bm != NULL)
DisposeObject(gwin->search_bm);
- gwin->search_bm = BitMapObject,
+ gwin->search_bm = BitMapObj,
BITMAP_Screen, scrn,
BITMAP_Width, 16,
BITMAP_Height, 16,
@@ -5161,7 +5161,7 @@ Object *ami_gui_splash_open(void)
struct TextAttr tattr;
struct TextFont *tfont;
- win_obj = WindowObject,
+ win_obj = WindowObj,
#ifdef __amigaos4__
WA_ToolBox, TRUE,
#else
@@ -5173,8 +5173,8 @@ Object *ami_gui_splash_open(void)
WINDOW_Position, WPOS_CENTERSCREEN,
WINDOW_LockWidth, TRUE,
WINDOW_LockHeight, TRUE,
- WINDOW_ParentGroup, VGroupObject,
- LAYOUT_AddImage, bm_obj = BitMapObject,
+ WINDOW_ParentGroup, LayoutVObj,
+ LAYOUT_AddImage, bm_obj = BitMapObj,
BITMAP_SourceFile, "PROGDIR:Resources/splash.png",
BITMAP_Screen, wbscreen,
BITMAP_Precision, PRECISION_IMAGE,
diff --git a/amiga/libs.c b/amiga/libs.c
index b964d8f2f..6e9bcf9e0 100644
--- a/amiga/libs.c
+++ b/amiga/libs.c
@@ -24,13 +24,14 @@
#include "utils/log.h"
#include <proto/exec.h>
+#include <proto/intuition.h>
#include <proto/utility.h>
#ifdef __amigaos4__
#define AMINS_LIB_OPEN(LIB, LIBVER, PREFIX, INTERFACE, INTVER, FAIL) \
LOG(("Opening %s v%d", LIB, LIBVER)); \
- if((PREFIX##Base = OpenLibrary(LIB, LIBVER))) { \
- I##PREFIX = (struct PREFIX##IFace *)GetInterface(PREFIX##Base, INTERFACE, INTVER, NULL); \
+ if((PREFIX##Base = (struct PREFIX##Base *)OpenLibrary(LIB, LIBVER))) { \
+ I##PREFIX = (struct PREFIX##IFace *)GetInterface((struct Library *)PREFIX##Base, INTERFACE, INTVER, NULL); \
if(I##PREFIX == NULL) { \
LOG(("Failed to get %s interface v%d of %s", INTERFACE, INTVER, LIB)); \
} \
@@ -46,15 +47,41 @@
#define AMINS_LIB_CLOSE(PREFIX) \
if(I##PREFIX) DropInterface((struct Interface *)I##PREFIX); \
- if(PREFIX##Base) CloseLibrary(PREFIX##Base);
+ if(PREFIX##Base) CloseLibrary((struct Library *)PREFIX##Base);
#define AMINS_LIB_STRUCT(PREFIX) \
- struct Library *PREFIX##Base; \
+ struct PREFIX##Base *PREFIX##Base; \
struct PREFIX##IFace *I##PREFIX;
+
+#define AMINS_CLASS_OPEN(CLASS, CLASSVER, PREFIX, CLASSGET, NEEDINTERFACE) \
+ LOG(("Opening %s v%d", CLASS, CLASSVER)); \
+ if((PREFIX##Base = OpenClass(CLASS, CLASSVER, &PREFIX##Class))) { \
+ if(NEEDINTERFACE == true) { \
+ I##PREFIX = (struct PREFIX##IFace *)GetInterface((struct Library *)PREFIX##Base, "main", 1, NULL); \
+ if(I##PREFIX == NULL) { \
+ LOG(("Failed to get main interface v1 of %s", CLASS)); \
+ } \
+ } \
+ } else { \
+ STRPTR error = ASPrintf("Unable to open %s v%d (fatal error)", CLASS, CLASSVER); \
+ ami_misc_fatal_error(error); \
+ FreeVec(error); \
+ return false; \
+ }
+
+#define AMINS_CLASS_CLOSE(PREFIX) \
+ if(I##PREFIX) DropInterface((struct Interface *)I##PREFIX); \
+ if(PREFIX##Base) CloseClass(PREFIX##Base);
+
+#define AMINS_CLASS_STRUCT(PREFIX) \
+ struct ClassLibrary *PREFIX##Base; \
+ struct PREFIX##IFace *I##PREFIX; \
+ Class *PREFIX##Class;
+
#else
#define AMINS_LIB_OPEN(LIB, LIBVER, PREFIX, INTERFACE, INTVER, FAIL) \
LOG(("Opening %s v%d", LIB, LIBVER)); \
- if((PREFIX##Base = OpenLibrary(LIB, LIBVER))) { \
+ if((PREFIX##Base = (struct PREFIX##Base *)OpenLibrary(LIB, LIBVER))) { \
} else { \
LOG(("Failed to open %s v%d", LIB, LIBVER)); \
if(FAIL == true) { \
@@ -69,7 +96,26 @@
if(PREFIX##Base) CloseLibrary(PREFIX##Base);
#define AMINS_LIB_STRUCT(PREFIX) \
- struct Library *PREFIX##Base;
+ struct PREFIX##Base *PREFIX##Base;
+
+#define AMINS_CLASS_OPEN(CLASS, CLASSVER, PREFIX, CLASSGET, NEEDINTERFACE) \
+ LOG(("Opening %s v%d", CLASS, CLASSVER)); \
+ if((PREFIX##Base = (struct PREFIX##Base *)OpenLibrary(CLASS, CLASSVER))) { \
+ PREFIX##Class = CLASSGET##_GetClass(); \
+ } else { \
+ STRPTR error = ASPrintf("Unable to open %s v%d (fatal error)", CLASS, CLASSVER); \
+ ami_misc_fatal_error(error); \
+ FreeVec(error); \
+ return false; \
+ }
+
+#define AMINS_CLASS_CLOSE(PREFIX) \
+ if(PREFIX##Base) CloseLibrary((struct Library *)PREFIX##Base);
+
+#define AMINS_CLASS_STRUCT(PREFIX) \
+ struct PREFIX##Base *PREFIX##Base; \
+ Class *PREFIX##Class;
+
#endif
#define GraphicsBase GfxBase /* graphics.library is a bit weird */
@@ -77,7 +123,7 @@
#ifdef __amigaos4__
AMINS_LIB_STRUCT(Application);
#else
-struct UtilityBase *UtilityBase; /* AMINS_LIB_STRUCT(Utility) */
+AMINS_LIB_STRUCT(Utility)
#endif
AMINS_LIB_STRUCT(Asl);
AMINS_LIB_STRUCT(DataTypes);
@@ -93,26 +139,26 @@ AMINS_LIB_STRUCT(Locale);
AMINS_LIB_STRUCT(P96);
AMINS_LIB_STRUCT(Workbench);
-AMINS_LIB_STRUCT(ARexx);
-AMINS_LIB_STRUCT(Bevel);
-AMINS_LIB_STRUCT(BitMap);
-AMINS_LIB_STRUCT(Chooser);
-AMINS_LIB_STRUCT(CheckBox);
-AMINS_LIB_STRUCT(ClickTab);
-AMINS_LIB_STRUCT(FuelGauge);
-AMINS_LIB_STRUCT(GetFile);
-AMINS_LIB_STRUCT(GetFont);
-AMINS_LIB_STRUCT(GetScreenMode);
-AMINS_LIB_STRUCT(Integer);
-AMINS_LIB_STRUCT(Label);
-AMINS_LIB_STRUCT(Layout);
-AMINS_LIB_STRUCT(ListBrowser);
-AMINS_LIB_STRUCT(RadioButton);
-AMINS_LIB_STRUCT(Scroller);
-AMINS_LIB_STRUCT(Space);
-AMINS_LIB_STRUCT(SpeedBar);
-AMINS_LIB_STRUCT(String);
-AMINS_LIB_STRUCT(Window);
+AMINS_CLASS_STRUCT(ARexx);
+AMINS_CLASS_STRUCT(Bevel);
+AMINS_CLASS_STRUCT(BitMap);
+AMINS_CLASS_STRUCT(Chooser);
+AMINS_CLASS_STRUCT(CheckBox);
+AMINS_CLASS_STRUCT(ClickTab);
+AMINS_CLASS_STRUCT(FuelGauge);
+AMINS_CLASS_STRUCT(GetFile);
+AMINS_CLASS_STRUCT(GetFont);
+AMINS_CLASS_STRUCT(GetScreenMode);
+AMINS_CLASS_STRUCT(Integer);
+AMINS_CLASS_STRUCT(Label);
+AMINS_CLASS_STRUCT(Layout);
+AMINS_CLASS_STRUCT(ListBrowser);
+AMINS_CLASS_STRUCT(RadioButton);
+AMINS_CLASS_STRUCT(Scroller);
+AMINS_CLASS_STRUCT(Space);
+AMINS_CLASS_STRUCT(SpeedBar);
+AMINS_CLASS_STRUCT(String);
+AMINS_CLASS_STRUCT(Window);
bool ami_libs_open(void)
@@ -154,57 +200,58 @@ bool ami_libs_open(void)
*/
/* BOOPSI classes.
- * \todo These should be opened using OpenClass(), however as
- * the macros all use the deprecated _GetClass() functions,
- * we may as well just open them normally for now.
+ * Opened using class functions rather than the old-fashioned method.
+ * We get the class pointer once and used our stored copy.
+ * NB: the last argument needs to be "true" whilst we still have old macros
+ * lying around, and then "false" unless the class also has library functions.
*/
- AMINS_LIB_OPEN("arexx.class", 44, ARexx, "main", 1, true)
- AMINS_LIB_OPEN("images/bevel.image", 44, Bevel, "main", 1, true)
- AMINS_LIB_OPEN("images/bitmap.image", 44, BitMap, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/checkbox.gadget", 44, CheckBox, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/chooser.gadget", 44, Chooser, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/clicktab.gadget", 44, ClickTab, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/fuelgauge.gadget", 44, FuelGauge, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/getfile.gadget", 44, GetFile, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/getfont.gadget", 44, GetFont, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/getscreenmode.gadget", 44, GetScreenMode, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/integer.gadget", 44, Integer, "main", 1, true)
- AMINS_LIB_OPEN("images/label.image", 44, Label, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/layout.gadget", 44, Layout, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/listbrowser.gadget", 44, ListBrowser, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/radiobutton.gadget", 44, RadioButton, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/scroller.gadget", 44, Scroller, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/space.gadget", 44, Space, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/speedbar.gadget", 44, SpeedBar, "main", 1, true)
- AMINS_LIB_OPEN("gadgets/string.gadget", 44, String, "main", 1, true)
- AMINS_LIB_OPEN("window.class", 44, Window, "main", 1, true)
+ AMINS_CLASS_OPEN("arexx.class", 44, ARexx, AREXX, true)
+ AMINS_CLASS_OPEN("images/bevel.image", 44, Bevel, BEVEL, true)
+ AMINS_CLASS_OPEN("images/bitmap.image", 44, BitMap, BITMAP, true)
+ AMINS_CLASS_OPEN("gadgets/checkbox.gadget", 44, CheckBox, CHECKBOX, true)
+ AMINS_CLASS_OPEN("gadgets/chooser.gadget", 44, Chooser, CHOOSER, true)
+ AMINS_CLASS_OPEN("gadgets/clicktab.gadget", 44, ClickTab, CLICKTAB, true)
+ AMINS_CLASS_OPEN("gadgets/fuelgauge.gadget", 44, FuelGauge, FUELGAUGE, true)
+ AMINS_CLASS_OPEN("gadgets/getfile.gadget", 44, GetFile, GETFILE, true)
+ AMINS_CLASS_OPEN("gadgets/getfont.gadget", 44, GetFont, GETFONT, true)
+ AMINS_CLASS_OPEN("gadgets/getscreenmode.gadget", 44, GetScreenMode, GETSCREENMODE, true)
+ AMINS_CLASS_OPEN("gadgets/integer.gadget", 44, Integer, INTEGER, true)
+ AMINS_CLASS_OPEN("images/label.image", 44, Label, LABEL, true)
+ AMINS_CLASS_OPEN("gadgets/layout.gadget", 44, Layout, LAYOUT, true)
+ AMINS_CLASS_OPEN("gadgets/listbrowser.gadget", 44, ListBrowser, LISTBROWSER, false)
+ AMINS_CLASS_OPEN("gadgets/radiobutton.gadget", 44, RadioButton, RADIOBUTTON, true)
+ AMINS_CLASS_OPEN("gadgets/scroller.gadget", 44, Scroller, SCROLLER, true)
+ AMINS_CLASS_OPEN("gadgets/space.gadget", 44, Space, SPACE, true)
+ AMINS_CLASS_OPEN("gadgets/speedbar.gadget", 44, SpeedBar, SPEEDBAR, true)
+ AMINS_CLASS_OPEN("gadgets/string.gadget", 44, String, STRING, true)
+ AMINS_CLASS_OPEN("window.class", 44, Window, WINDOW, true)
return true;
}
void ami_libs_close(void)
{
- AMINS_LIB_CLOSE(ARexx)
- AMINS_LIB_CLOSE(Bevel)
- AMINS_LIB_CLOSE(BitMap)
- AMINS_LIB_CLOSE(CheckBox)
- AMINS_LIB_CLOSE(Chooser)
- AMINS_LIB_CLOSE(ClickTab)
- AMINS_LIB_CLOSE(FuelGauge)
- AMINS_LIB_CLOSE(GetFile)
- AMINS_LIB_CLOSE(GetFont)
- AMINS_LIB_CLOSE(GetScreenMode)
- AMINS_LIB_CLOSE(Integer)
- AMINS_LIB_CLOSE(Label)
- AMINS_LIB_CLOSE(Layout)
- AMINS_LIB_CLOSE(ListBrowser)
- AMINS_LIB_CLOSE(RadioButton)
- AMINS_LIB_CLOSE(Scroller)
- AMINS_LIB_CLOSE(Space)
- AMINS_LIB_CLOSE(SpeedBar)
- AMINS_LIB_CLOSE(String)
- AMINS_LIB_CLOSE(Window)
+ AMINS_CLASS_CLOSE(ARexx)
+ AMINS_CLASS_CLOSE(Bevel)
+ AMINS_CLASS_CLOSE(BitMap)
+ AMINS_CLASS_CLOSE(CheckBox)
+ AMINS_CLASS_CLOSE(Chooser)
+ AMINS_CLASS_CLOSE(ClickTab)
+ AMINS_CLASS_CLOSE(FuelGauge)
+ AMINS_CLASS_CLOSE(GetFile)
+ AMINS_CLASS_CLOSE(GetFont)
+ AMINS_CLASS_CLOSE(GetScreenMode)
+ AMINS_CLASS_CLOSE(Integer)
+ AMINS_CLASS_CLOSE(Label)
+ AMINS_CLASS_CLOSE(Layout)
+ AMINS_CLASS_CLOSE(ListBrowser)
+ AMINS_CLASS_CLOSE(RadioButton)
+ AMINS_CLASS_CLOSE(Scroller)
+ AMINS_CLASS_CLOSE(Space)
+ AMINS_CLASS_CLOSE(SpeedBar)
+ AMINS_CLASS_CLOSE(String)
+ AMINS_CLASS_CLOSE(Window)
AMINS_LIB_CLOSE(Asl)
AMINS_LIB_CLOSE(DataTypes)
diff --git a/amiga/libs.h b/amiga/libs.h
index 55e4799a4..1eb31f7db 100644
--- a/amiga/libs.h
+++ b/amiga/libs.h
@@ -18,7 +18,21 @@
#ifndef AMIGA_LIBS_H
#include <stdbool.h>
+#include <intuition/classes.h>
+/* BOOPSI classes */
+extern Class *BitMapClass;
+extern Class *LayoutClass;
+extern Class *ListBrowserClass;
+extern Class *WindowClass;
+
+/* New improved ReAction macros! */
+#define BitMapObj NewObject(BitMapClass, NULL
+#define LayoutHObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ
+#define LayoutVObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT
+#define WindowObj NewObject(WindowClass, NULL
+
+/* Functions */
bool ami_libs_open(void);
void ami_libs_close(void);
#endif
diff --git a/amiga/stringview/stringview.c b/amiga/stringview/stringview.c
index a009f228a..a91047702 100755
--- a/amiga/stringview/stringview.c
+++ b/amiga/stringview/stringview.c
@@ -33,6 +33,7 @@
#include <gadgets/listbrowser.h>
#include "amiga/os3support.h"
+#include "amiga/libs.h"
#include "stringview.h"
#include "urlhistory.h"
@@ -411,13 +412,13 @@ static uint32 myStringClass_OM_New( Class *cl, Object *obj, struct opSet *msg )
InitSemaphore( &data->Semaphore );
- data->WindowObject = NewObject( WINDOW_GetClass(), NULL,
+ data->WindowObject = NewObject( WindowClass, NULL,
WA_Activate, FALSE,
WA_Borderless, TRUE,
WINDOW_ParentGroup, NewObject( LAYOUT_GetClass(), NULL,
LAYOUT_SpaceInner, FALSE,
LAYOUT_SpaceOuter, FALSE,
- LAYOUT_AddChild, data->ListviewObject = NewObject( LISTBROWSER_GetClass(), NULL,
+ LAYOUT_AddChild, data->ListviewObject = NewObject( ListBrowserClass, NULL,
LISTBROWSER_Labels, &data->ListviewHeader,
LISTBROWSER_MakeVisible, TRUE,
LISTBROWSER_ShowSelected, TRUE,