]> git.saurik.com Git - wxWidgets.git/commitdiff
Make wxCocoa compile in 64-bit mode.
authorDavid Elliott <dfe@tgwbd.org>
Fri, 6 Jul 2007 00:18:28 +0000 (00:18 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Fri, 6 Jul 2007 00:18:28 +0000 (00:18 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/cocoa/NSView.h
include/wx/cocoa/pen.h
include/wx/cocoa/region.h
include/wx/cocoa/toolbar.h
include/wx/defs.h
src/cocoa/dc.mm
src/cocoa/mdi.mm
src/cocoa/pen.mm
src/cocoa/window.mm

index e59dfdbbd2b9596b02bf1e9d4fe428ee474b77ca..39e64fe5290791e956d2b1d9abafed1b769f8284 100644 (file)
 #include "wx/hashmap.h"
 #include "wx/cocoa/ObjcAssociate.h"
 
+#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
+typedef struct CGRect NSRect;
+#else
 typedef struct _NSRect NSRect;
+#endif
+
 class wxWindow;
 
 WX_DECLARE_OBJC_HASHMAP(NSView);
index 6f14b7831829bf0e1e7948d2258e372e296cf547..5049cda0353b61ca017f43759e5dc3da8108cdfa 100644 (file)
@@ -61,7 +61,7 @@ public:
     wxBitmap *GetStipple() const;
 
     WX_NSColor GetNSColor();
-    int GetCocoaLineDash(const float **pattern);
+    int GetCocoaLineDash(const CGFloat **pattern);
 };
 
 #endif // __WX_COCOA_PEN_H__
index 20e7ce3d28e797492615c110d488a73f7733aa4e..2789d24e0beb38a3e85861cef259a93d4836107e 100644 (file)
 
 #include "wx/generic/region.h"
 
+#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
+typedef struct CGRect NSRect;
+#else
 typedef struct _NSRect NSRect;
+#endif
 
 class WXDLLEXPORT wxRegion : public wxRegionGeneric
 {
index 09ca34917b77225ff0d2edd092c7160008ed8554..e045df65237607a94b8816c6b50d9a485a40b394 100644 (file)
 // ========================================================================
 // wxToolBar
 // ========================================================================
+#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
+typedef struct CGPoint NSPoint;
+#else
 typedef struct _NSPoint NSPoint;
+#endif
+
 class wxToolBarTool;
 
 class wxToolBar : public wxToolBarBase
index b3ae230a05566caa54d482f6dabce7bf721850be..1ffef246f77cc546e6234a7dd1801103513055f2 100644 (file)
@@ -2522,6 +2522,36 @@ typedef void*       WXDisplay;
 
 #ifdef __WXCOCOA__
 
+/* Definitions of 32-bit/64-bit types
+ * These are typedef'd exactly the same way in newer OS X headers so
+ * redefinition when real headers are included should not be a problem.  If
+ * it is, the types are being defined wrongly here.
+ * The purpose of these types is so they can be used from public wx headers.
+ * and also because the older (pre-Leopard) headers don't define them.
+ */
+
+/* NOTE: We don't pollute namespace with CGFLOAT_MIN/MAX/IS_DOUBLE macros
+ * since they are unlikely to be needed in a public header.
+ */
+#if defined(__LP64__) && __LP64__
+       typedef double CGFloat;
+#else
+       typedef float CGFloat;
+#endif
+
+#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64)
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+#else
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#endif
+
+/* Objective-C type declarations.
+ * These are to be used in public headers in lieu of NSSomething* because
+ * Objective-C class names are not available in C/C++ code.
+ */
+
 /*  NOTE: This ought to work with other compilers too, but I'm being cautious */
 #if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__)
 /* It's desirable to have type safety for Objective-C(++) code as it does
index 375bf3a3dd27e618228d4bb9eba159d483a818c8..832b6ba72672e8960587ef17bd491b01d15a9cf7 100644 (file)
@@ -43,7 +43,7 @@ wxCocoaDCStack wxDC::sm_cocoaDCStack;
 inline void CocoaSetPenForNSBezierPath(wxPen &pen, NSBezierPath *bezpath)
 {
     [pen.GetNSColor() set];
-    const float *pattern;
+    const CGFloat *pattern;
     [bezpath setLineDash:pattern count:pen.GetCocoaLineDash(&pattern) phase:0.0];
     [bezpath setLineWidth:pen.GetWidth()];
     switch(pen.GetJoin())
index ef279856ca14194571d921036a0957406db54b04..63e1bfd0e000586acbd001d20db58d9f439af1b3 100644 (file)
@@ -232,10 +232,10 @@ void wxMDIParentFrame::WindowDidBecomeMain(NSNotification *notification)
         }
         if(!hashmap.empty())
         {
-            int windowCount = 0;
+            NSInteger windowCount = 0;
             NSCountWindows(&windowCount);
             wxASSERT(windowCount>0);
-            int *windowList = new int[windowCount];
+            NSInteger *windowList = new NSInteger[windowCount];
             NSWindowList(windowCount, windowList);
             wxIntMDIChildFrameHashMap::iterator iter = hashmap.end();
             for(int i=0; i<windowCount && iter == hashmap.end(); i++)
index d133d90fcb1a219376afcc8f5093fbaf5ba9bbba..0968133ffc2e01220122849baa4844d0be5a85fa 100644 (file)
@@ -54,7 +54,7 @@ public:
         m_style = wxSTIPPLE;
     }
     WX_NSColor GetNSColor();
-    int GetCocoaLineDash(const float **pattern);
+    int GetCocoaLineDash(const CGFloat **pattern);
 protected:
     void FreeCocoaNSColor();
     void FreeCocoaDash();
@@ -68,36 +68,36 @@ protected:
     wxDash         *m_dash;
     wxBitmap        m_stipple;
     WX_NSColor      m_cocoaNSColor;
-    float          *m_cocoaDash;
+    CGFloat        *m_cocoaDash;
 
     // Predefined dash patterns
     static const int scm_countDot;
-    static const float scm_patternDot[];
+    static const CGFloat scm_patternDot[];
     static const int scm_countLongDash;
-    static const float scm_patternLongDash[];
+    static const CGFloat scm_patternLongDash[];
     static const int scm_countShortDash;
-    static const float scm_patternShortDash[];
+    static const CGFloat scm_patternShortDash[];
     static const int scm_countDotDash;
-    static const float scm_patternDotDash[];
+    static const CGFloat scm_patternDotDash[];
 private:
     // Don't allow assignment
     wxPenRefData& operator=(const wxPenRefData& data);
 };
 
 const int wxPenRefData::scm_countDot = 1;
-const float wxPenRefData::scm_patternDot[] = {
+const CGFloat wxPenRefData::scm_patternDot[] = {
     1.0
 };
 const int wxPenRefData::scm_countLongDash = 1;
-const float wxPenRefData::scm_patternLongDash[] = {
+const CGFloat wxPenRefData::scm_patternLongDash[] = {
     10.0
 };
 const int wxPenRefData::scm_countShortDash = 1;
-const float wxPenRefData::scm_patternShortDash[] = {
+const CGFloat wxPenRefData::scm_patternShortDash[] = {
     5.0
 };
 const int wxPenRefData::scm_countDotDash = 4;
-const float wxPenRefData::scm_patternDotDash[] = {
+const CGFloat wxPenRefData::scm_patternDotDash[] = {
     1.0
 ,   1.0
 ,   5.0
@@ -185,7 +185,7 @@ inline WX_NSColor wxPenRefData::GetNSColor()
     return m_cocoaNSColor;
 }
 
-int wxPenRefData::GetCocoaLineDash(const float **pattern)
+int wxPenRefData::GetCocoaLineDash(const CGFloat **pattern)
 {
     int count;
     switch( m_style )
@@ -216,7 +216,7 @@ int wxPenRefData::GetCocoaLineDash(const float **pattern)
         {
             if(!m_cocoaDash)
             {
-                m_cocoaDash = new float[count];
+                m_cocoaDash = new CGFloat[count];
                 for(int i=0; i<count; i++)
                     m_cocoaDash[i] = m_dash[i];
             }
@@ -362,7 +362,7 @@ WX_NSColor wxPen::GetNSColor()
     return (M_PENDATA ? M_PENDATA->GetNSColor() : nil);
 }
 
-int wxPen::GetCocoaLineDash(const float **pattern)
+int wxPen::GetCocoaLineDash(const CGFloat **pattern)
 {
     if(M_PENDATA)
         return M_PENDATA->GetCocoaLineDash(pattern);
index 83874d9ad0f167de021140d10015e7213eb5c0ae..caca70f317d62ced0f1e6bc7f20d8988633e82bb 100644 (file)
 #import <AppKit/NSBezierPath.h>
 #endif //def WXCOCOA_FILL_DUMMY_VIEW
 
+/* NSComparisonResult is typedef'd as an enum pre-Leopard but typedef'd as
+ * NSInteger post-Leopard.  Pre-Leopard the Cocoa toolkit expects a function
+ * returning int and not NSComparisonResult.  Post-Leopard the Cocoa toolkit
+ * expects a function returning the new non-enum NSComparsionResult.
+ * Hence we create a typedef named CocoaWindowCompareFunctionResult.
+ */
+#if defined(NSINTEGER_DEFINED)
+typedef NSComparisonResult CocoaWindowCompareFunctionResult;
+#else
+typedef int CocoaWindowCompareFunctionResult;
+#endif
+
 // A category for methods that are only present in Panther's SDK
 @interface NSView(wxNSViewPrePantherCompatibility)
 - (void)getRectsBeingDrawn:(const NSRect **)rects count:(int *)count;
@@ -458,7 +470,7 @@ bool wxWindowCocoa::Cocoa_drawRect(const NSRect &rect)
 
     // Set m_updateRegion
     const NSRect *rects = &rect; // The bounding box of the region
-    int countRects = 1;
+    NSInteger countRects = 1;
     // Try replacing the larger rectangle with a list of smaller ones:
     if ([GetNSView() respondsToSelector:@selector(getRectsBeingDrawn:count:)])
         [GetNSView() getRectsBeingDrawn:&rects count:&countRects];
@@ -1011,7 +1023,7 @@ bool wxWindow::SetFont(const wxFont& font)
     return true;
 }
 
-static int CocoaRaiseWindowCompareFunction(id first, id second, void *target)
+static CocoaWindowCompareFunctionResult CocoaRaiseWindowCompareFunction(id first, id second, void *target)
 {
     // first should be ordered higher
     if(first==target)
@@ -1032,7 +1044,7 @@ void wxWindow::Raise()
         context: nsview];
 }
 
-static int CocoaLowerWindowCompareFunction(id first, id second, void *target)
+static CocoaWindowCompareFunctionResult CocoaLowerWindowCompareFunction(id first, id second, void *target)
 {
     // first should be ordered lower
     if(first==target)