Merged 47182 from svn trunk:

Make wxCocoa compile in 64-bit mode.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@47415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott
2007-07-13 03:06:22 +00:00
parent 4084e91fe6
commit 65f7483bd6
9 changed files with 76 additions and 20 deletions

View File

@@ -15,7 +15,12 @@
#include "wx/hashmap.h" #include "wx/hashmap.h"
#include "wx/cocoa/ObjcAssociate.h" #include "wx/cocoa/ObjcAssociate.h"
#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
typedef struct CGRect NSRect;
#else
typedef struct _NSRect NSRect; typedef struct _NSRect NSRect;
#endif
class wxWindow; class wxWindow;
WX_DECLARE_OBJC_HASHMAP(NSView); WX_DECLARE_OBJC_HASHMAP(NSView);

View File

@@ -61,7 +61,7 @@ public:
wxBitmap *GetStipple() const; wxBitmap *GetStipple() const;
WX_NSColor GetNSColor(); WX_NSColor GetNSColor();
int GetCocoaLineDash(const float **pattern); int GetCocoaLineDash(const CGFloat **pattern);
}; };
#endif // __WX_COCOA_PEN_H__ #endif // __WX_COCOA_PEN_H__

View File

@@ -14,7 +14,11 @@
#include "wx/generic/region.h" #include "wx/generic/region.h"
#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
typedef struct CGRect NSRect;
#else
typedef struct _NSRect NSRect; typedef struct _NSRect NSRect;
#endif
class WXDLLEXPORT wxRegion : public wxRegionGeneric class WXDLLEXPORT wxRegion : public wxRegionGeneric
{ {

View File

@@ -17,7 +17,12 @@
// ======================================================================== // ========================================================================
// wxToolBar // wxToolBar
// ======================================================================== // ========================================================================
#if defined(__LP64__) || defined(NS_BUILD_32_LIKE_64)
typedef struct CGPoint NSPoint;
#else
typedef struct _NSPoint NSPoint; typedef struct _NSPoint NSPoint;
#endif
class wxToolBarTool; class wxToolBarTool;
class wxToolBar : public wxToolBarBase class wxToolBar : public wxToolBarBase

View File

@@ -2419,6 +2419,36 @@ typedef void* WXDisplay;
#ifdef __WXCOCOA__ #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 */ /* NOTE: This ought to work with other compilers too, but I'm being cautious */
#if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__) #if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__)
/* It's desirable to have type safety for Objective-C(++) code as it does /* It's desirable to have type safety for Objective-C(++) code as it does

View File

@@ -43,7 +43,7 @@ wxCocoaDCStack wxDC::sm_cocoaDCStack;
inline void CocoaSetPenForNSBezierPath(wxPen &pen, NSBezierPath *bezpath) inline void CocoaSetPenForNSBezierPath(wxPen &pen, NSBezierPath *bezpath)
{ {
[pen.GetNSColor() set]; [pen.GetNSColor() set];
const float *pattern; const CGFloat *pattern;
[bezpath setLineDash:pattern count:pen.GetCocoaLineDash(&pattern) phase:0.0]; [bezpath setLineDash:pattern count:pen.GetCocoaLineDash(&pattern) phase:0.0];
[bezpath setLineWidth:pen.GetWidth()]; [bezpath setLineWidth:pen.GetWidth()];
switch(pen.GetJoin()) switch(pen.GetJoin())

View File

@@ -232,10 +232,10 @@ void wxMDIParentFrame::WindowDidBecomeMain(NSNotification *notification)
} }
if(!hashmap.empty()) if(!hashmap.empty())
{ {
int windowCount = 0; NSInteger windowCount = 0;
NSCountWindows(&windowCount); NSCountWindows(&windowCount);
wxASSERT(windowCount>0); wxASSERT(windowCount>0);
int *windowList = new int[windowCount]; NSInteger *windowList = new NSInteger[windowCount];
NSWindowList(windowCount, windowList); NSWindowList(windowCount, windowList);
wxIntMDIChildFrameHashMap::iterator iter = hashmap.end(); wxIntMDIChildFrameHashMap::iterator iter = hashmap.end();
for(int i=0; i<windowCount && iter == hashmap.end(); i++) for(int i=0; i<windowCount && iter == hashmap.end(); i++)

View File

@@ -54,7 +54,7 @@ public:
m_style = wxSTIPPLE; m_style = wxSTIPPLE;
} }
WX_NSColor GetNSColor(); WX_NSColor GetNSColor();
int GetCocoaLineDash(const float **pattern); int GetCocoaLineDash(const CGFloat **pattern);
protected: protected:
void FreeCocoaNSColor(); void FreeCocoaNSColor();
void FreeCocoaDash(); void FreeCocoaDash();
@@ -68,36 +68,36 @@ protected:
wxDash *m_dash; wxDash *m_dash;
wxBitmap m_stipple; wxBitmap m_stipple;
WX_NSColor m_cocoaNSColor; WX_NSColor m_cocoaNSColor;
float *m_cocoaDash; CGFloat *m_cocoaDash;
// Predefined dash patterns // Predefined dash patterns
static const int scm_countDot; static const int scm_countDot;
static const float scm_patternDot[]; static const CGFloat scm_patternDot[];
static const int scm_countLongDash; static const int scm_countLongDash;
static const float scm_patternLongDash[]; static const CGFloat scm_patternLongDash[];
static const int scm_countShortDash; static const int scm_countShortDash;
static const float scm_patternShortDash[]; static const CGFloat scm_patternShortDash[];
static const int scm_countDotDash; static const int scm_countDotDash;
static const float scm_patternDotDash[]; static const CGFloat scm_patternDotDash[];
private: private:
// Don't allow assignment // Don't allow assignment
wxPenRefData& operator=(const wxPenRefData& data); wxPenRefData& operator=(const wxPenRefData& data);
}; };
const int wxPenRefData::scm_countDot = 1; const int wxPenRefData::scm_countDot = 1;
const float wxPenRefData::scm_patternDot[] = { const CGFloat wxPenRefData::scm_patternDot[] = {
1.0 1.0
}; };
const int wxPenRefData::scm_countLongDash = 1; const int wxPenRefData::scm_countLongDash = 1;
const float wxPenRefData::scm_patternLongDash[] = { const CGFloat wxPenRefData::scm_patternLongDash[] = {
10.0 10.0
}; };
const int wxPenRefData::scm_countShortDash = 1; const int wxPenRefData::scm_countShortDash = 1;
const float wxPenRefData::scm_patternShortDash[] = { const CGFloat wxPenRefData::scm_patternShortDash[] = {
5.0 5.0
}; };
const int wxPenRefData::scm_countDotDash = 4; const int wxPenRefData::scm_countDotDash = 4;
const float wxPenRefData::scm_patternDotDash[] = { const CGFloat wxPenRefData::scm_patternDotDash[] = {
1.0 1.0
, 1.0 , 1.0
, 5.0 , 5.0
@@ -185,7 +185,7 @@ inline WX_NSColor wxPenRefData::GetNSColor()
return m_cocoaNSColor; return m_cocoaNSColor;
} }
int wxPenRefData::GetCocoaLineDash(const float **pattern) int wxPenRefData::GetCocoaLineDash(const CGFloat **pattern)
{ {
int count; int count;
switch( m_style ) switch( m_style )
@@ -216,7 +216,7 @@ int wxPenRefData::GetCocoaLineDash(const float **pattern)
{ {
if(!m_cocoaDash) if(!m_cocoaDash)
{ {
m_cocoaDash = new float[count]; m_cocoaDash = new CGFloat[count];
for(int i=0; i<count; i++) for(int i=0; i<count; i++)
m_cocoaDash[i] = m_dash[i]; m_cocoaDash[i] = m_dash[i];
} }
@@ -362,7 +362,7 @@ WX_NSColor wxPen::GetNSColor()
return (M_PENDATA ? M_PENDATA->GetNSColor() : nil); return (M_PENDATA ? M_PENDATA->GetNSColor() : nil);
} }
int wxPen::GetCocoaLineDash(const float **pattern) int wxPen::GetCocoaLineDash(const CGFloat **pattern)
{ {
if(M_PENDATA) if(M_PENDATA)
return M_PENDATA->GetCocoaLineDash(pattern); return M_PENDATA->GetCocoaLineDash(pattern);

View File

@@ -39,6 +39,18 @@
#import <AppKit/NSBezierPath.h> #import <AppKit/NSBezierPath.h>
#endif //def WXCOCOA_FILL_DUMMY_VIEW #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 // A category for methods that are only present in Panther's SDK
@interface NSView(wxNSViewPrePantherCompatibility) @interface NSView(wxNSViewPrePantherCompatibility)
- (void)getRectsBeingDrawn:(const NSRect **)rects count:(int *)count; - (void)getRectsBeingDrawn:(const NSRect **)rects count:(int *)count;
@@ -446,7 +458,7 @@ bool wxWindowCocoa::Cocoa_drawRect(const NSRect &rect)
// Set m_updateRegion // Set m_updateRegion
const NSRect *rects = &rect; // The bounding box of the region 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: // Try replacing the larger rectangle with a list of smaller ones:
if ([GetNSView() respondsToSelector:@selector(getRectsBeingDrawn:count:)]) if ([GetNSView() respondsToSelector:@selector(getRectsBeingDrawn:count:)])
[GetNSView() getRectsBeingDrawn:&rects count:&countRects]; [GetNSView() getRectsBeingDrawn:&rects count:&countRects];
@@ -951,7 +963,7 @@ bool wxWindow::SetFont(const wxFont& font)
return true; 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 // first should be ordered higher
if(first==target) if(first==target)
@@ -972,7 +984,7 @@ void wxWindow::Raise()
context: nsview]; 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 // first should be ordered lower
if(first==target) if(first==target)