X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/82de126c114ea0ee9689d390c6e4a805d969e5fc..4a6e4a46a356e9abf0760e2d481bbec321cc3adf:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 6aabd7f2b2..22a407360f 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -157,12 +157,17 @@ #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100) // Watcom 11+ supports bool #define HAVE_BOOL + #elif defined(__DIGITALMARS__) + // DigitalMars supports bool + #define HAVE_BOOL #elif defined(__GNUWIN32__) || defined(__MINGW32__) || defined(__CYGWIN__) // Cygwin supports bool #define HAVE_BOOL #elif defined(__VISAGECPP__) #if __IBMCPP__ < 400 typedef unsigned long bool; + #define true ((bool)1) + #define false ((bool)0) #endif #define HAVE_BOOL #endif // compilers @@ -236,6 +241,8 @@ typedef int wxWindowID; #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400) // Metrowerks CW6 or higher has explicit #define HAVE_EXPLICIT + #elif defined(__DIGITALMARS__) + #define HAVE_EXPLICIT #endif #endif // !HAVE_EXPLICIT @@ -993,6 +1000,11 @@ enum wxBorder // 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 @@ -1018,6 +1030,7 @@ enum wxBorder #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 @@ -1853,7 +1866,7 @@ typedef void* WXPOINTPTR ; typedef void* WXHWND ; typedef void* WXEVENTREF ; typedef void* WXEVENTHANDLERREF ; -typedef void* WXEVENTHANDLERCALLREF ; +typedef void* WXEVENTHANDLERCALLREF ; typedef void* WXAPPLEEVENTREF ; typedef void* WXHDC ; typedef void* WXHMENU ; @@ -1898,22 +1911,44 @@ typedef ControlHandle WXWidget; #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__) - #include - #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ - @class klass; typedef klass *WX_##klass -#elif defined(wxI_LIKE_OBJC_ID) - #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ - typedef id WX_##klass -#else // the goal is to get rid of this secion at some time! - #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ - typedef void *WX_##klass -#endif +#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 +#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(NSControl); +DECLARE_WXCOCOA_OBJC_CLASS(NSEvent); DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager); DECLARE_WXCOCOA_OBJC_CLASS(NSMenu); DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem);