]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
added selecting-while-dragging
[wxWidgets.git] / include / wx / defs.h
index 4d6f2106b538d77891680dfda4a8a82ea9b257fc..142a46ede1a4f764dba59f6ff618329ba6bd07b4 100644 (file)
@@ -26,8 +26,9 @@
 #if defined(__WXMSW__) && defined(__X__)
 #error "Target can't be both X and Windows"
 #elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \
-      !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \
-      !defined(__WXMGL__) && !defined(__WXX11__) && wxUSE_GUI
+      !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__WXCOCOA__) && \
+      !defined(__X__) && !defined(__WXMGL__) && !defined(__WXX11__) && \
+      wxUSE_GUI
 #ifdef __UNIX__
 #error "No Target! You should use wx-config program for compilation flags!"
 #else // !Unix
     #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
         // Watcom 11+ supports bool
         #define HAVE_BOOL
-    #elif defined(__GNUWIN32__)
+    #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
@@ -222,8 +228,12 @@ typedef int wxWindowID;
 
 // check for explicit keyword support
 #ifndef HAVE_EXPLICIT
-    #if defined(__VISUALC__) && (__VISUALC__ >= 1200)
-        // VC++ 6.0 has explicit (what about the earlier versions?)
+    #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
+        // VC++ 6.0 and 5.0 have explicit (what about the earlier versions?)
+        #define HAVE_EXPLICIT
+    #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
+          && wxCHECK_GCC_VERSION(2, 95)
+        // GCC 2.95 has explicit, what about earlier versions?
         #define HAVE_EXPLICIT
     #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)
         // BC++ 4.52 doesn't support explicit, CBuilder 1 does
@@ -231,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
 
@@ -240,6 +252,24 @@ typedef int wxWindowID;
     #define wxEXPLICIT
 #endif // HAVE_EXPLICIT/!HAVE_EXPLICIT
 
+// check for static/const/reinterpret_cast<>()
+#ifndef HAVE_STATIC_CAST
+    #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
+        // VC++ 6.0 and 5.0 have C++ casts (what about the earlier versions?)
+        #define HAVE_CXX_CASTS
+    #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \
+          && wxCHECK_GCC_VERSION(2, 95)
+        // GCC 2.95 has C++ casts, what about earlier versions?
+        #define HAVE_CXX_CASTS
+    #endif
+#endif // HAVE_STATIC_CAST
+
+#ifdef HAVE_CXX_CASTS
+    #ifndef HAVE_CONST_CAST
+        #define HAVE_CONST_CAST
+    #endif
+#endif // HAVE_CXX_CASTS
+
 // ----------------------------------------------------------------------------
 // portable calling conventions macros
 // ----------------------------------------------------------------------------
@@ -312,7 +342,7 @@ typedef int wxWindowID;
         #define WXEXPORT _Export
         #define WXIMPORT _Export
     #endif
-#elif defined(__WXMAC__)    
+#elif defined(__WXMAC__) || defined(__WXCOCOA__)
     #ifdef __MWERKS__
         #define WXEXPORT __declspec(export)
         #define WXIMPORT __declspec(import)
@@ -591,7 +621,7 @@ enum
 //            precision, so use the IEEE types for storage , and this for calculations
 
 typedef float wxFloat32 ;
-#if defined( __WXMAC__ )  && defined (__MWERKS__)
+#if (defined( __WXMAC__ ) || defined(__WXCOCOA__))  && defined (__MWERKS__)
     typedef short double wxFloat64;
 #else
     typedef double wxFloat64;
@@ -771,6 +801,12 @@ typedef float wxFloat32 ;
   #define wxUINT64_SWAP_ON_BE(val)  (val)
 #endif
 
+// Macros to convert from unsigned long to void pointer.
+// High order truncation occurs if the respective type is not large enough.
+#define WXPTRULONGSLICE (((wxBYTE_ORDER==wxBIG_ENDIAN)&&(sizeof(void*)==8)&&(sizeof(unsigned long)<8))?1:0)
+#define wxPtrToULong(p) (((unsigned long*)(&(p)))[WXPTRULONGSLICE])
+#define wxULongToPtr(p,n) (p=NULL,wxPtrToULong(p)=(unsigned long)(n),p)
+
 // ----------------------------------------------------------------------------
 // Geometric flags
 // ----------------------------------------------------------------------------
@@ -964,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
@@ -976,7 +1017,8 @@ enum wxBorder
 #define wxICONIZE               0x4000
 #define wxMINIMIZE              wxICONIZE
 #define wxMAXIMIZE              0x2000
-                                        // free flag value: 0x1000
+#define wxCLOSE_BOX                 0x1000
+
 #define wxSYSTEM_MENU           0x0800
 #define wxMINIMIZE_BOX          0x0400
 #define wxMAXIMIZE_BOX          0x0200
@@ -988,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
@@ -1010,16 +1053,10 @@ enum wxBorder
 
 #define wxDEFAULT_FRAME_STYLE \
   (wxSYSTEM_MENU | wxRESIZE_BORDER | \
-   wxMINIMIZE_BOX | wxMAXIMIZE_BOX | \
+   wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX | \
    wxCAPTION | wxCLIP_CHILDREN)
 
-#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMGL__)
-#   define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU | wxCAPTION)
-#else
-//  Under Unix, the dialogs don't have a system menu. Specifying wxSYSTEM_MENU
-//  here will make a close button appear.
-#   define wxDEFAULT_DIALOG_STYLE  wxCAPTION
-#endif
+#define wxDEFAULT_DIALOG_STYLE  (wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX)
 
 /*
  * wxExtDialog style flags
@@ -1656,7 +1693,11 @@ enum wxKeyCode
     WXK_NUMPAD_SEPARATOR,
     WXK_NUMPAD_SUBTRACT,
     WXK_NUMPAD_DECIMAL,
-    WXK_NUMPAD_DIVIDE
+    WXK_NUMPAD_DIVIDE,
+
+    WXK_WINDOWS_LEFT,
+    WXK_WINDOWS_RIGHT,
+    WXK_WINDOWS_MENU
 };
 
 // Mapping modes (same values as used by Windows, don't change)
@@ -1824,6 +1865,8 @@ typedef void*       WXRECTPTR ;
 typedef void*       WXPOINTPTR ;
 typedef void*       WXHWND ;
 typedef void*       WXEVENTREF ;
+typedef void*          WXEVENTHANDLERREF ;
+typedef void*       WXEVENTHANDLERCALLREF ;
 typedef void*       WXAPPLEEVENTREF ;
 typedef void*       WXHDC ;
 typedef void*       WXHMENU ;
@@ -1866,6 +1909,34 @@ typedef ControlHandle   WXWidget;
 */
 #endif
 
+#ifdef __WXCOCOA__
+
+// 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
+
+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);
+DECLARE_WXCOCOA_OBJC_CLASS(NSPanel);
+DECLARE_WXCOCOA_OBJC_CLASS(NSTableView);
+DECLARE_WXCOCOA_OBJC_CLASS(NSTextContainer);
+DECLARE_WXCOCOA_OBJC_CLASS(NSTextField);
+DECLARE_WXCOCOA_OBJC_CLASS(NSTextStorage);
+DECLARE_WXCOCOA_OBJC_CLASS(NSWindow);
+DECLARE_WXCOCOA_OBJC_CLASS(NSView);
+typedef WX_NSView WXWidget; // wxWindows BASE definition
+#endif // __WXCOCOA__
+
 #if defined(__WXMSW__) || defined(__WXPM__)
 
 // the keywords needed for WinMain() declaration
@@ -2023,6 +2094,10 @@ typedef void*           WXRegion;
 typedef void*           WXFont;
 typedef void*           WXImage;
 typedef void*           WXFontList;
+typedef void*           WXRendition;
+typedef void*           WXRenderTable;
+typedef void*           WXFontType; /* either a XmFontList or XmRenderTable */
+typedef void*           WXString;
 
 typedef unsigned long   Atom;  /* this might fail on a few architectures */