#endif // Unix/!Unix
#endif
+#if !wxUSE_GUI && !defined(__WXBASE__)
+ #define __WXBASE__
+#endif
+
// include the feature test macros
#include "wx/features.h"
#include "wx/version.h"
-// possibility to build non GUI apps is new, so don't burden ourselves with
-// compatibility code
-#if !wxUSE_GUI
-#undef WXWIN_COMPATIBILITY_2
-#undef WXWIN_COMPATIBILITY_2_2
-
-#define WXWIN_COMPATIBILITY_2 0
-#define WXWIN_COMPATIBILITY_2_2 0
-#endif // !GUI
-
// ============================================================================
// non portable C++ features
// ============================================================================
#elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400)
// Metrowerks CW6 or higher has explicit
#define HAVE_EXPLICIT
+ #elif defined(__DIGITALMARS__)
+ #define HAVE_EXPLICIT
#endif
#endif // !HAVE_EXPLICIT
// parent is destroyed before the child
#define wxWS_EX_TRANSIENT 0x00000004
+// don't paint the window background, we'll assume it will
+// be done by a theming engine. This is not yet used but could
+// possibly be made to work in the future, at least on Windows
+#define wxWS_EX_THEMED_BACKGROUND 0x00000008
+
// Use this style to add a context-sensitive help to the window (currently for
// Win32 only and it doesn't work if wxMINIMIZE_BOX or wxMAXIMIZE_BOX are used)
#define wxFRAME_EX_CONTEXTHELP 0x00000004
#define wxFRAME_NO_TASKBAR 0x0002 // No taskbar button (MSW only)
#define wxFRAME_TOOL_WINDOW 0x0004 // No taskbar button, no system menu
#define wxFRAME_FLOAT_ON_PARENT 0x0008 // Always above its parent
+#define wxFRAME_SHAPED 0x0010 // Create a window that is able to be shaped
// deprecated versions defined for compatibility reasons
#define wxRESIZE_BOX wxMAXIMIZE_BOX
#ifdef __WXCOCOA__
+// NOTE: This ought to work with other compilers too, but I'm being cautious
+#if defined(__GNUC__) && defined(__APPLE__)
+/* It's desirable to have type safety for Objective-C(++) code as it does
+at least catch typos of method names among other things. However, it
+is not possible to declare an Objective-C class from plain old C or C++
+code. Furthermore, because of C++ name mangling, the type name must
+be the same for both C++ and Objective-C++ code. Therefore, we define
+what should be a pointer to an Objective-C class as a pointer to a plain
+old C struct with the same name. Unfortunately, because the compiler
+does not see a struct as an Objective-C class we cannot declare it
+as a struct in Objective-C(++) mode.
+*/
+#if defined(__OBJC__)
+#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \
+@class klass; \
+typedef klass *WX_##klass
+#else // not defined(__OBJC__)
+#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \
+typedef struct klass *WX_##klass
+#endif // defined(__OBJC__)
+
+#else // not GNU
+#warning "Objective-C types will not be checked by the compiler."
// NOTE: typedef struct objc_object *id;
// IOW, we're declaring these using the id type without using that name,
// since "id" is used extensively not only within wxWindows itself, but
// also in wxWindows application code. The following works fine when
-// compiling C++ code, and works without typesafety for Obj-C++ code
+// compiling C(++) code, and works without typesafety for Obj-C(++) code
#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \
typedef struct objc_object *WX_##klass
+#endif // defined(__GNUC__) && defined(__APPLE__)
+
DECLARE_WXCOCOA_OBJC_CLASS(NSApplication);
DECLARE_WXCOCOA_OBJC_CLASS(NSBox);
DECLARE_WXCOCOA_OBJC_CLASS(NSButton);
+DECLARE_WXCOCOA_OBJC_CLASS(NSColor);
DECLARE_WXCOCOA_OBJC_CLASS(NSControl);
DECLARE_WXCOCOA_OBJC_CLASS(NSEvent);
DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager);