removing dependancy on mac headers from public wx headers (eventually adding wx/mac/private and typecasts)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2002-01-04 17:26:02 +00:00
parent 5128e3be68
commit 76a5e5d21e
128 changed files with 2614 additions and 3276 deletions

View File

@@ -213,17 +213,17 @@ wxPrintData::wxPrintData()
#endif #endif
#else #else
m_macPrintInfo = (THPrint) NewHandleClear( sizeof( TPrint ) ); m_macPrintInfo = (THPrint) NewHandleClear( sizeof( TPrint ) );
(**m_macPrintInfo).iPrVersion = 0; // something invalid (**(THPrint)m_macPrintInfo).iPrVersion = 0; // something invalid
(**m_macPrintInfo).prInfo.iHRes = 72; (**(THPrint)m_macPrintInfo).prInfo.iHRes = 72;
(**m_macPrintInfo).prInfo.iVRes = 72; (**(THPrint)m_macPrintInfo).prInfo.iVRes = 72;
Rect r1 = { 0, 0, 8*72 - 2 * 18, 11*72 - 2 * 36 }; Rect r1 = { 0, 0, 8*72 - 2 * 18, 11*72 - 2 * 36 };
(**m_macPrintInfo).prInfo.rPage = r1;// must have its top left & (0,0) (**(THPrint)m_macPrintInfo).prInfo.rPage = r1;// must have its top left & (0,0)
Rect r2 = { -18, -36, 8*72 - 18, 11*72 - 36 }; Rect r2 = { -18, -36, 8*72 - 18, 11*72 - 36 };
(**m_macPrintInfo).rPaper = r2; (**(THPrint)m_macPrintInfo).rPaper = r2;
(**m_macPrintInfo).prStl.iPageV = 11 * 120 ; // 11 inches in 120th of an inch (**(THPrint)m_macPrintInfo).prStl.iPageV = 11 * 120 ; // 11 inches in 120th of an inch
(**m_macPrintInfo).prStl.iPageH = 8 * 120 ; // 8 inches in 120th of an inch (**(THPrint)m_macPrintInfo).prStl.iPageH = 8 * 120 ; // 8 inches in 120th of an inch
#endif #endif
#endif #endif
m_printOrientation = wxPORTRAIT; m_printOrientation = wxPORTRAIT;
@@ -768,7 +768,7 @@ void wxPrintData::ConvertToNative()
{ {
#if TARGET_CARBON #if TARGET_CARBON
#else #else
(**m_macPrintInfo).prJob.iCopies = m_printNoCopies; (**(THPrint)m_macPrintInfo).prJob.iCopies = m_printNoCopies;
#endif #endif
} }
@@ -776,7 +776,7 @@ void wxPrintData::ConvertFromNative()
{ {
#if TARGET_CARBON #if TARGET_CARBON
#else #else
m_printNoCopies = (**m_macPrintInfo).prJob.iCopies; m_printNoCopies = (**(THPrint)m_macPrintInfo).prJob.iCopies;
#endif #endif
} }
#endif #endif
@@ -1088,8 +1088,8 @@ void wxPrintDialogData::ConvertToNative()
{ {
#if TARGET_CARBON #if TARGET_CARBON
#else #else
(**m_printData.m_macPrintInfo).prJob.iFstPage = m_printFromPage; (**(THPrint)m_printData.m_macPrintInfo).prJob.iFstPage = m_printFromPage;
(**m_printData.m_macPrintInfo).prJob.iLstPage = m_printToPage; (**(THPrint)m_printData.m_macPrintInfo).prJob.iLstPage = m_printToPage;
m_printData.ConvertToNative(); m_printData.ConvertToNative();
#endif #endif
} }
@@ -1099,8 +1099,8 @@ void wxPrintDialogData::ConvertFromNative()
#if TARGET_CARBON #if TARGET_CARBON
#else #else
m_printData.ConvertFromNative(); m_printData.ConvertFromNative();
m_printFromPage = (**m_printData.m_macPrintInfo).prJob.iFstPage; m_printFromPage = (**(THPrint)m_printData.m_macPrintInfo).prJob.iFstPage;
m_printToPage = (**m_printData.m_macPrintInfo).prJob.iLstPage; m_printToPage = (**(THPrint)m_printData.m_macPrintInfo).prJob.iLstPage;
#endif #endif
} }
#endif #endif
@@ -1413,16 +1413,16 @@ void wxPageSetupDialogData::ConvertToNative()
// on mac the paper rect has a negative top left corner, because the page rect (printable area) is at 0,0 // on mac the paper rect has a negative top left corner, because the page rect (printable area) is at 0,0
#if TARGET_CARBON #if TARGET_CARBON
#else #else
(**m_printData.m_macPrintInfo).rPaper.left = int( ((double) m_minMarginTopLeft.x)*mm2pt ); (**(THPrint)m_printData.m_macPrintInfo).rPaper.left = int( ((double) m_minMarginTopLeft.x)*mm2pt );
(**m_printData.m_macPrintInfo).rPaper.top = int( ((double) m_minMarginTopLeft.y)*mm2pt ); (**(THPrint)m_printData.m_macPrintInfo).rPaper.top = int( ((double) m_minMarginTopLeft.y)*mm2pt );
(**m_printData.m_macPrintInfo).rPaper.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x)*mm2pt ); (**(THPrint)m_printData.m_macPrintInfo).rPaper.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x)*mm2pt );
(**m_printData.m_macPrintInfo).rPaper.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y)*mm2pt ); (**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y)*mm2pt );
(**m_printData.m_macPrintInfo).prInfo.rPage.left = 0; (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.left = 0;
(**m_printData.m_macPrintInfo).prInfo.rPage.top = 0; (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.top = 0;
(**m_printData.m_macPrintInfo).prInfo.rPage.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x - m_minMarginBottomRight.x)*mm2pt ); (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x - m_minMarginBottomRight.x)*mm2pt );
(**m_printData.m_macPrintInfo).prInfo.rPage.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y - m_minMarginBottomRight.y)*mm2pt ); (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y - m_minMarginBottomRight.y)*mm2pt );
#endif #endif
} }
@@ -1432,14 +1432,14 @@ void wxPageSetupDialogData::ConvertFromNative()
#if TARGET_CARBON #if TARGET_CARBON
#else #else
m_paperSize.x = ((double) (**m_printData.m_macPrintInfo).rPaper.right - (**m_printData.m_macPrintInfo).rPaper.left ) * pt2mm; m_paperSize.x = ((double) (**(THPrint)m_printData.m_macPrintInfo).rPaper.right - (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ) * pt2mm;
m_paperSize.y = ((double) (**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).rPaper.top ) * pt2mm; m_paperSize.y = ((double) (**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom - (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ) * pt2mm;
m_minMarginTopLeft.x = ((double) -(**m_printData.m_macPrintInfo).rPaper.left ) * pt2mm; m_minMarginTopLeft.x = ((double) -(**(THPrint)m_printData.m_macPrintInfo).rPaper.left ) * pt2mm;
m_minMarginTopLeft.y = ((double) -(**m_printData.m_macPrintInfo).rPaper.top ) * pt2mm; m_minMarginTopLeft.y = ((double) -(**(THPrint)m_printData.m_macPrintInfo).rPaper.top ) * pt2mm;
m_minMarginBottomRight.x = ((double) (**m_printData.m_macPrintInfo).rPaper.right - (**m_printData.m_macPrintInfo).prInfo.rPage.right ) * pt2mm; m_minMarginBottomRight.x = ((double) (**(THPrint)m_printData.m_macPrintInfo).rPaper.right - (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.right ) * pt2mm;
m_minMarginBottomRight.y = ((double)(**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).prInfo.rPage.bottom ) * pt2mm; m_minMarginBottomRight.y = ((double)(**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom - (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.bottom ) * pt2mm;
#endif #endif
// adjust minimal values // adjust minimal values
//TODO add custom fields in dialog for margins //TODO add custom fields in dialog for margins

View File

@@ -38,6 +38,10 @@
#include "wx/intl.h" #include "wx/intl.h"
#include "wx/log.h" #include "wx/log.h"
#if defined(__WXMAC__)
#include "wx/mac/private.h"
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// conditional compilation // conditional compilation
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -105,7 +109,7 @@ const char *dlerror(void);
# define wxDllGetSymbol(handle, name) ::GetProcAddress(handle, name) # define wxDllGetSymbol(handle, name) ::GetProcAddress(handle, name)
# define wxDllClose ::FreeLibrary # define wxDllClose ::FreeLibrary
#elif defined(__WXMAC__) #elif defined(__WXMAC__)
# define wxDllClose(handle) CloseConnection(&handle) # define wxDllClose(handle) CloseConnection(&((CFragConnectionID)handle))
#else #else
# error "Don't know how to load shared libraries on this platform." # error "Don't know how to load shared libraries on this platform."
#endif // OS #endif // OS
@@ -242,7 +246,7 @@ wxDllType wxDllLoader::LoadLibrary(const wxString & libname, bool *success)
kCFragGoesToEOF, kCFragGoesToEOF,
"\p", "\p",
kPrivateCFragCopy, kPrivateCFragCopy,
&handle, &((CFragConnectionID)handle),
&myMainAddr, &myMainAddr,
myErrName ) != noErr ) myErrName ) != noErr )
{ {
@@ -310,7 +314,7 @@ void *wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name, bool *su
strcpy( (char *) symName, name ); strcpy( (char *) symName, name );
c2pstr( (char *) symName ); c2pstr( (char *) symName );
#endif #endif
if( FindSymbol( dllHandle, symName, &symAddress, &symClass ) == noErr ) if( FindSymbol( ((CFragConnectionID)dllHandle), symName, &symAddress, &symClass ) == noErr )
symbol = (void *)symAddress; symbol = (void *)symAddress;
#elif defined(__WXPM__) || defined(__EMX__) #elif defined(__WXPM__) || defined(__EMX__)

View File

@@ -46,6 +46,10 @@
#include "wx/utils.h" // for wxGetHomeDir #include "wx/utils.h" // for wxGetHomeDir
#if defined(__WXMAC__)
#include "wx/mac/private.h" // includes mac headers
#endif
// _WINDOWS_ is defined when windows.h is included, // _WINDOWS_ is defined when windows.h is included,
// __WXMSW__ is defined for MS Windows compilation // __WXMSW__ is defined for MS Windows compilation
#if defined(__WXMSW__) && !defined(_WINDOWS_) #if defined(__WXMSW__) && !defined(_WINDOWS_)

View File

@@ -50,6 +50,10 @@
#endif #endif
#endif #endif
#if defined(__WXMAC__)
#include "wx/mac/private.h" // includes mac headers
#endif
#include <time.h> #include <time.h>
#ifndef __MWERKS__ #ifndef __MWERKS__

View File

@@ -90,6 +90,10 @@
#include "wx/msw/winundef.h" #include "wx/msw/winundef.h"
#endif #endif
#if defined(__WXMAC__)
#include "wx/mac/private.h" // includes mac headers
#endif
// utime() is POSIX so should normally be available on all Unices // utime() is POSIX so should normally be available on all Unices
#ifdef __UNIX_LIKE__ #ifdef __UNIX_LIKE__
#include <sys/types.h> #include <sys/types.h>

View File

@@ -60,6 +60,10 @@
#include "wx/fontmap.h" // for CharsetToEncoding() #include "wx/fontmap.h" // for CharsetToEncoding()
#endif #endif
#if defined(__WXMAC__)
#include "wx/mac/private.h" // includes mac headers
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// simple types // simple types
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -60,6 +60,10 @@
#include "wx/msw/private.h" // includes windows.h for OutputDebugString #include "wx/msw/private.h" // includes windows.h for OutputDebugString
#endif #endif
#if defined(__WXMAC__)
#include "wx/mac/private.h" // includes mac headers
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// non member functions // non member functions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -47,6 +47,10 @@
#include "wx/generic/dirctrlg.h" #include "wx/generic/dirctrlg.h"
#if defined(__WXMAC__)
#include "wx/mac/private.h" // includes mac headers
#endif
#ifdef __WXMSW__ #ifdef __WXMSW__
#include <windows.h> #include <windows.h>

View File

@@ -1048,7 +1048,7 @@ pascal SInt32 AGABevelButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ; Boolean mRadioBehavior = false ;
@@ -1188,7 +1188,7 @@ pascal SInt32 AGAButtonDefProc (SInt16 procID, ControlHandle theControl, Control
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ; Boolean mRadioBehavior = false ;
@@ -1425,7 +1425,7 @@ pascal SInt32 AGACheckBoxDefProc (SInt16 procID, ControlHandle theControl, Contr
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
Rect frame = (**theControl).contrlRect ; Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true; Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ; Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1621,7 +1621,7 @@ pascal SInt32 AGARadioButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ; return 0 ;
{ {
AGAPortHelper help() ; wxMacPortStateHelper help() ;
Rect frame = (**theControl).contrlRect ; Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true; Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ; Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1813,7 +1813,7 @@ pascal SInt32 AGAStaticGroupBoxTextDefProc (SInt16 procID, ControlHandle theCont
{ {
bool disabled = false ; bool disabled = false ;
bool hasColor = true ; bool hasColor = true ;
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
FontInfo fi ; FontInfo fi ;
::GetFontInfo( &fi ) ; ::GetFontInfo( &fi ) ;
@@ -1899,7 +1899,7 @@ pascal SInt32 AGAStaticTextDefProc (SInt16 procID, ControlHandle theControl, Con
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
int x = (**theControl).contrlRect.left ; int x = (**theControl).contrlRect.left ;
int y = (**theControl).contrlRect.top ; int y = (**theControl).contrlRect.top ;
@@ -2094,7 +2094,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
{ {
case initCntl : case initCntl :
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
SetPort( (**theControl).contrlOwner ) ; SetPort( (**theControl).contrlOwner ) ;
::TextFont( kFontIDGeneva ) ; ::TextFont( kFontIDGeneva ) ;
::TextSize( 10 ) ; ::TextSize( 10 ) ;
@@ -2116,7 +2116,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ; break ;
case drawCntl : case drawCntl :
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
SetPort( (**theControl).contrlOwner ) ; SetPort( (**theControl).contrlOwner ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ; RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
@@ -2223,7 +2223,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ; break ;
case kControlMsgKeyDown : case kControlMsgKeyDown :
{ {
AGAPortHelper help( (**theControl).contrlOwner ) ; wxMacPortStateHelper help( (**theControl).contrlOwner ) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ; RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
RGBForeColor( &gAGARamp[ kAGABlack ] ) ; RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
@@ -2332,7 +2332,7 @@ pascal SInt32 AGAListControlDefProc (SInt16 procID, ControlHandle theControl, Co
break ; break ;
case drawCntl : case drawCntl :
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ; RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
EraseRect( &(**theControl).contrlRect ) ; EraseRect( &(**theControl).contrlRect ) ;
@@ -2560,52 +2560,4 @@ void AGAApplyThemeBackground(ThemeBackgroundKind inKind,
// status in a theme savvy manner, pen mode, patterns and fonts // status in a theme savvy manner, pen mode, patterns and fonts
// attributes // attributes
AGAPortHelper::AGAPortHelper( GrafPtr newport)
{
m_clip = NULL ;
Setup( newport ) ;
}
AGAPortHelper::AGAPortHelper()
{
m_clip = NULL ;
}
void AGAPortHelper::Setup( GrafPtr newport )
{
GetPort( &m_oldPort ) ;
SetPort( newport ) ;
wxASSERT_MSG( m_clip == NULL , "Cannot call setup twice" ) ;
m_clip = NewRgn() ;
GetClip( m_clip );
m_textFont = GetPortTextFont( newport);
m_textSize = GetPortTextSize( newport);
m_textStyle = GetPortTextFace( newport);
m_textMode = GetPortTextMode( newport);
GetThemeDrawingState( &m_drawingState ) ;
m_currentPort = newport ;
}
void AGAPortHelper::Clear()
{
if ( m_clip )
{
DisposeRgn( m_clip ) ;
DisposeThemeDrawingState( m_drawingState ) ;
m_clip = NULL ;
}
}
AGAPortHelper::~AGAPortHelper()
{
if ( m_clip )
{
SetPort( m_currentPort ) ;
SetClip( m_clip ) ;
DisposeRgn( m_clip ) ;
TextFont( m_textFont );
TextSize( m_textSize );
TextFace( m_textStyle );
TextMode( m_textMode );
SetThemeDrawingState( m_drawingState , true ) ;
SetPort( m_oldPort ) ;
}
}

View File

@@ -85,7 +85,7 @@ const short kMacMinHeap = (29 * 1024) ;
const short kwxMacMenuBarResource = 1 ; const short kwxMacMenuBarResource = 1 ;
const short kwxMacAppleMenuId = 1 ; const short kwxMacAppleMenuId = 1 ;
RgnHandle wxApp::s_macCursorRgn = NULL; WXHRGN wxApp::s_macCursorRgn = NULL;
wxWindow* wxApp::s_captureWindow = NULL ; wxWindow* wxApp::s_captureWindow = NULL ;
int wxApp::s_lastMouseDown = 0 ; int wxApp::s_lastMouseDown = 0 ;
long wxApp::sm_lastMessageTime = 0; long wxApp::sm_lastMessageTime = 0;
@@ -125,7 +125,7 @@ pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long re
return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ; return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ;
} }
OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEODoc(const WXEVENTREF event , WXEVENTREF reply)
{ {
SysBeep(40) ; SysBeep(40) ;
ProcessSerialNumber PSN ; ProcessSerialNumber PSN ;
@@ -135,17 +135,17 @@ OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
return noErr ; return noErr ;
} }
OSErr wxApp::MacHandleAEPDoc(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEPDoc(const WXEVENTREF event , WXEVENTREF reply)
{ {
return noErr ; return noErr ;
} }
OSErr wxApp::MacHandleAEOApp(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEOApp(const WXEVENTREF event , WXEVENTREF reply)
{ {
return noErr ; return noErr ;
} }
OSErr wxApp::MacHandleAEQuit(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEQuit(const WXEVENTREF event , WXEVENTREF reply)
{ {
wxWindow* win = GetTopWindow() ; wxWindow* win = GetTopWindow() ;
if ( win ) if ( win )
@@ -603,7 +603,7 @@ void wxApp::CleanUp()
UMACleanupToolbox() ; UMACleanupToolbox() ;
if (s_macCursorRgn) if (s_macCursorRgn)
::DisposeRgn(s_macCursorRgn); ::DisposeRgn((RgnHandle)s_macCursorRgn);
#if 0 #if 0
TerminateAE() ; TerminateAE() ;
@@ -958,11 +958,11 @@ bool wxApp::Yield(bool onlyIfNeeded)
long sleepTime = 1 ; //::GetCaretTime(); long sleepTime = 1 ; //::GetCaretTime();
while ( !wxTheApp->IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, wxApp::s_macCursorRgn)) while ( !wxTheApp->IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, (RgnHandle) wxApp::s_macCursorRgn))
{ {
wxTheApp->MacHandleOneEvent( &event ); wxTheApp->MacHandleOneEvent( &event );
if ( event.what != kHighLevelEvent ) if ( event.what != kHighLevelEvent )
SetRectRgn( wxApp::s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; SetRectRgn( (RgnHandle) wxApp::s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ;
} }
wxMacProcessNotifierAndPendingEvents() ; wxMacProcessNotifierAndPendingEvents() ;
@@ -1021,7 +1021,7 @@ void wxApp::MacDoOneEvent()
long sleepTime = 1; // GetCaretTime() / 4 ; long sleepTime = 1; // GetCaretTime() / 4 ;
if (WaitNextEvent(everyEvent, &event, sleepTime, s_macCursorRgn)) if (WaitNextEvent(everyEvent, &event, sleepTime, (RgnHandle) s_macCursorRgn))
{ {
MacHandleOneEvent( &event ); MacHandleOneEvent( &event );
} }
@@ -1035,7 +1035,7 @@ void wxApp::MacDoOneEvent()
wxTheApp->ProcessIdle() ; wxTheApp->ProcessIdle() ;
} }
if ( event.what != kHighLevelEvent ) if ( event.what != kHighLevelEvent )
SetRectRgn( s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; SetRectRgn( (RgnHandle) s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ;
// repeaters // repeaters
@@ -1043,8 +1043,9 @@ void wxApp::MacDoOneEvent()
wxMacProcessNotifierAndPendingEvents() ; wxMacProcessNotifierAndPendingEvents() ;
} }
void wxApp::MacHandleOneEvent( EventRecord *ev ) void wxApp::MacHandleOneEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
m_macCurrentEvent = ev ; m_macCurrentEvent = ev ;
wxApp::sm_lastMessageTime = ev->when ; wxApp::sm_lastMessageTime = ev->when ;
@@ -1098,15 +1099,17 @@ void wxApp::MacHandleOneEvent( EventRecord *ev )
wxMacProcessNotifierAndPendingEvents() ; wxMacProcessNotifierAndPendingEvents() ;
} }
void wxApp::MacHandleHighLevelEvent( EventRecord *ev ) void wxApp::MacHandleHighLevelEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
::AEProcessAppleEvent( ev ) ; ::AEProcessAppleEvent( ev ) ;
} }
bool s_macIsInModalLoop = false ; bool s_macIsInModalLoop = false ;
void wxApp::MacHandleMouseDownEvent( EventRecord *ev ) void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ; wxToolTip::RemoveToolTips() ;
WindowRef window; WindowRef window;
@@ -1156,11 +1159,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
GrafPtr port ; GrafPtr port ;
GetPort( &port ) ; GetPort( &port ) ;
Point pt = { 0, 0 } ; Point pt = { 0, 0 } ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ; SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
LocalToGlobal( &pt ) ; LocalToGlobal( &pt ) ;
SetPort( port ) ; SetPort( port ) ;
win->SetSize( pt.h , pt.v , -1 , win->SetSize( pt.h , pt.v , -1 ,
@@ -1226,11 +1225,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
{ {
GrafPtr port ; GrafPtr port ;
GetPort( &port ) ; GetPort( &port ) ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ; SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
SetPort( port ) ; SetPort( port ) ;
} }
if ( window != frontWindow && wxTheApp->s_captureWindow == NULL ) if ( window != frontWindow && wxTheApp->s_captureWindow == NULL )
@@ -1263,8 +1258,9 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleMouseUpEvent( EventRecord *ev ) void wxApp::MacHandleMouseUpEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
WindowRef window; WindowRef window;
short windowPart = ::FindWindow(ev->where, &window); short windowPart = ::FindWindow(ev->where, &window);
@@ -1394,8 +1390,9 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
return retval; return retval;
} }
void wxApp::MacHandleKeyDownEvent( EventRecord *ev ) void wxApp::MacHandleKeyDownEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ; wxToolTip::RemoveToolTips() ;
UInt32 menuresult = UMAMenuEvent(ev) ; UInt32 menuresult = UMAMenuEvent(ev) ;
@@ -1511,8 +1508,9 @@ void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleKeyUpEvent( EventRecord *ev ) void wxApp::MacHandleKeyUpEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ; wxToolTip::RemoveToolTips() ;
UInt32 menuresult = UMAMenuEvent(ev) ; UInt32 menuresult = UMAMenuEvent(ev) ;
@@ -1546,8 +1544,9 @@ void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleActivateEvent( EventRecord *ev ) void wxApp::MacHandleActivateEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
WindowRef window = (WindowRef) ev->message ; WindowRef window = (WindowRef) ev->message ;
if ( window ) if ( window )
{ {
@@ -1565,8 +1564,9 @@ void wxApp::MacHandleActivateEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleUpdateEvent( EventRecord *ev ) void wxApp::MacHandleUpdateEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
WindowRef window = (WindowRef) ev->message ; WindowRef window = (WindowRef) ev->message ;
wxTopLevelWindowMac * win = wxFindWinFromMacWindow( window ) ; wxTopLevelWindowMac * win = wxFindWinFromMacWindow( window ) ;
if ( win ) if ( win )
@@ -1584,8 +1584,9 @@ void wxApp::MacHandleUpdateEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleDiskEvent( EventRecord *ev ) void wxApp::MacHandleDiskEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
if ( HiWord( ev->message ) != noErr ) if ( HiWord( ev->message ) != noErr )
{ {
#if !TARGET_CARBON #if !TARGET_CARBON
@@ -1599,8 +1600,9 @@ void wxApp::MacHandleDiskEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleOSEvent( EventRecord *ev ) void wxApp::MacHandleOSEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
switch( ( ev->message & osEvtMessageMask ) >> 24 ) switch( ( ev->message & osEvtMessageMask ) >> 24 )
{ {
case suspendResumeMessage : case suspendResumeMessage :

View File

@@ -313,7 +313,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{ {
if ( data->m_hPict ) if ( data->m_hPict )
{ {
KillPicture( data->m_hPict ) ; KillPicture( MAC_WXHMETAFILE( data->m_hPict ) ) ;
data->m_hPict = NULL ; data->m_hPict = NULL ;
} }
} }
@@ -322,7 +322,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{ {
if ( data->m_hBitmap ) if ( data->m_hBitmap )
{ {
wxMacDestroyGWorld( data->m_hBitmap ) ; wxMacDestroyGWorld( MAC_WXHBITMAP(data->m_hBitmap) ) ;
data->m_hBitmap = NULL ; data->m_hBitmap = NULL ;
} }
} }
@@ -330,7 +330,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
case kMacBitmapTypeIcon : case kMacBitmapTypeIcon :
if ( data->m_hIcon ) if ( data->m_hIcon )
{ {
DisposeCIcon( data->m_hIcon ) ; DisposeCIcon( MAC_WXHICON(data->m_hIcon) ) ;
data->m_hIcon = NULL ; data->m_hIcon = NULL ;
} }
@@ -377,15 +377,15 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
if ( no_bits == 1 ) if ( no_bits == 1 )
{ {
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( the_width , the_height , no_bits ) ; MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) = wxMacCreateGWorld( the_width , the_height , no_bits ) ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ; M_BITMAPDATA->m_ok = (MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) != NULL ) ;
CGrafPtr origPort ; CGrafPtr origPort ;
GDHandle origDevice ; GDHandle origDevice ;
GetGWorld( &origPort , &origDevice ) ; GetGWorld( &origPort , &origDevice ) ;
SetGWorld( M_BITMAPDATA->m_hBitmap , NULL ) ; SetGWorld( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , NULL ) ;
LockPixels( GetGWorldPixMap( M_BITMAPDATA->m_hBitmap ) ) ; LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) ) ) ;
// bits is a char array // bits is a char array
@@ -417,7 +417,7 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
} }
} }
} }
UnlockPixels( GetGWorldPixMap( M_BITMAPDATA->m_hBitmap ) ) ; UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) ) ) ;
SetGWorld( origPort , origDevice ) ; SetGWorld( origPort , origDevice ) ;
} }
@@ -474,7 +474,7 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
wxBitmap ret( rect.width, rect.height, GetDepth() ); wxBitmap ret( rect.width, rect.height, GetDepth() );
wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") ); wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") );
WXHBITMAP origPort; GWorldPtr origPort;
GDHandle origDevice; GDHandle origDevice;
GetGWorld( &origPort, &origDevice ); GetGWorld( &origPort, &origDevice );
@@ -496,10 +496,10 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy mask // Copy mask
if(GetMask()) if(GetMask())
{ {
WXHBITMAP submask, mask; GWorldPtr submask, mask;
RGBColor color; RGBColor color;
mask = GetMask()->GetMaskBitmap(); mask = (GWorldPtr) GetMask()->GetMaskBitmap();
submask = wxMacCreateGWorld(rect.width, rect.height, 1); submask = wxMacCreateGWorld(rect.width, rect.height, 1);
LockPixels(GetGWorldPixMap(mask)); LockPixels(GetGWorldPixMap(mask));
LockPixels(GetGWorldPixMap(submask)); LockPixels(GetGWorldPixMap(submask));
@@ -523,11 +523,11 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy bitmap // Copy bitmap
if(GetHBITMAP()) if(GetHBITMAP())
{ {
WXHBITMAP subbitmap, bitmap; GWorldPtr subbitmap, bitmap;
RGBColor color; RGBColor color;
bitmap = GetHBITMAP(); bitmap = (GWorldPtr) GetHBITMAP();
subbitmap = ref->m_hBitmap ; subbitmap = (GWorldPtr) ref->m_hBitmap ;
LockPixels(GetGWorldPixMap(bitmap)); LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap)); LockPixels(GetGWorldPixMap(subbitmap));
@@ -562,7 +562,7 @@ bool wxBitmap::Create(int w, int h, int d)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( w , h , d ) ; M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( w , h , d ) ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ; M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ;
return M_BITMAPDATA->m_ok; return M_BITMAPDATA->m_ok;
} }
@@ -579,7 +579,7 @@ void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = bmp ; M_BITMAPDATA->m_hBitmap = bmp ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ; M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ;
} }
bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type) bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
@@ -641,11 +641,11 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
CGrafPtr origPort ; CGrafPtr origPort ;
GDHandle origDevice ; GDHandle origDevice ;
PixMapHandle pixMap = GetGWorldPixMap(GetHBITMAP()) ; PixMapHandle pixMap = GetGWorldPixMap((GWorldPtr)GetHBITMAP()) ;
LockPixels( pixMap ); LockPixels( pixMap );
GetGWorld( &origPort , &origDevice ) ; GetGWorld( &origPort , &origDevice ) ;
SetGWorld( GetHBITMAP() , NULL ) ; SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
// Render image // Render image
RGBColor colorRGB ; RGBColor colorRGB ;
@@ -675,8 +675,8 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
wxBitmap maskBitmap ; wxBitmap maskBitmap ;
maskBitmap.Create( width, height, 1); maskBitmap.Create( width, height, 1);
LockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) ); LockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
SetGWorld(maskBitmap.GetHBITMAP(), NULL); SetGWorld( (GWorldPtr) maskBitmap.GetHBITMAP(), NULL);
for (int y = 0; y < height; y++) for (int y = 0; y < height; y++)
{ {
@@ -692,12 +692,12 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
data += 3 ; data += 3 ;
} }
} // for height } // for height
SetGWorld(GetHBITMAP(), NULL); SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
SetMask(new wxMask( maskBitmap )); SetMask(new wxMask( maskBitmap ));
UnlockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
} }
UnlockPixels( GetGWorldPixMap(GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP()) );
SetGWorld( origPort, origDevice ); SetGWorld( origPort, origDevice );
} }
@@ -716,7 +716,7 @@ wxImage wxBitmap::ConvertToImage() const
wxCHECK_MSG( data, wxNullImage, wxT("Could not allocate data for image") ); wxCHECK_MSG( data, wxNullImage, wxT("Could not allocate data for image") );
WXHBITMAP origPort; GWorldPtr origPort;
GDHandle origDevice; GDHandle origDevice;
int index; int index;
RGBColor color; RGBColor color;
@@ -726,8 +726,8 @@ wxImage wxBitmap::ConvertToImage() const
wxMask *mask = GetMask(); wxMask *mask = GetMask();
GetGWorld( &origPort, &origDevice ); GetGWorld( &origPort, &origDevice );
LockPixels(GetGWorldPixMap(GetHBITMAP())); LockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld( GetHBITMAP(), NULL); SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
// Copy data into image // Copy data into image
index = 0; index = 0;
@@ -761,7 +761,7 @@ wxImage wxBitmap::ConvertToImage() const
} }
// Free resources // Free resources
UnlockPixels(GetGWorldPixMap(GetHBITMAP())); UnlockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld(origPort, origDevice); SetGWorld(origPort, origDevice);
return image; return image;
@@ -899,10 +899,10 @@ WXHBITMAP wxBitmap::GetHBITMAP() const
{ {
wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") );
return M_BITMAPDATA->m_hBitmap; return MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap);
} }
PicHandle wxBitmap::GetPict() const WXHMETAFILE wxBitmap::GetPict() const
{ {
wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") );
@@ -925,16 +925,16 @@ PicHandle wxBitmap::GetPict() const
wxMask *mask; wxMask *mask;
Rect portRect ; Rect portRect ;
GetPortBounds( GetHBITMAP() , &portRect ) ; GetPortBounds( (GWorldPtr) GetHBITMAP() , &portRect ) ;
int width = portRect.right - portRect.left ; int width = portRect.right - portRect.left ;
int height = portRect.bottom - portRect.top ; int height = portRect.bottom - portRect.top ;
LockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ; LockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
GetGWorld( &origPort , &origDev ) ; GetGWorld( &origPort , &origDev ) ;
mask = GetMask(); mask = GetMask();
SetGWorld( GetHBITMAP() , NULL ) ; SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
picture = OpenPicture(&portRect); // open a picture, this disables drawing picture = OpenPicture(&portRect); // open a picture, this disables drawing
if(!picture) { if(!picture) {
@@ -979,16 +979,16 @@ PicHandle wxBitmap::GetPict() const
RGBForeColor( &black ) ; RGBForeColor( &black ) ;
RGBBackColor( &white ) ; RGBBackColor( &white ) ;
CopyBits(GetPortBitMapForCopyBits(GetHBITMAP()), CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// src PixMap - we copy image over itself - // src PixMap - we copy image over itself -
GetPortBitMapForCopyBits(GetHBITMAP()), GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// dst PixMap - no drawing occurs // dst PixMap - no drawing occurs
&portRect, // srcRect - it will be recorded and compressed - &portRect, // srcRect - it will be recorded and compressed -
&portRect, // dstRect - into the picture that is open - &portRect, // dstRect - into the picture that is open -
srcCopy,NULL); // copyMode and no clip region srcCopy,NULL); // copyMode and no clip region
} }
ClosePicture(); // We are done recording the picture ClosePicture(); // We are done recording the picture
UnlockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ; UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
SetGWorld( origPort , origDev ) ; SetGWorld( origPort , origDev ) ;
return picture; // return our groovy pict handle return picture; // return our groovy pict handle
@@ -1030,7 +1030,7 @@ wxMask::~wxMask()
{ {
if ( m_maskBitmap ) if ( m_maskBitmap )
{ {
wxMacDestroyGWorld( m_maskBitmap ) ; wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ; m_maskBitmap = NULL ;
} }
} }
@@ -1040,7 +1040,7 @@ bool wxMask::Create(const wxBitmap& bitmap)
{ {
if ( m_maskBitmap ) if ( m_maskBitmap )
{ {
wxMacDestroyGWorld( m_maskBitmap ) ; wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ; m_maskBitmap = NULL ;
} }
wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false, wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false,
@@ -1055,13 +1055,13 @@ bool wxMask::Create(const wxBitmap& bitmap)
m_maskBitmap = wxMacCreateGWorld(bitmap.GetWidth(), bitmap.GetHeight(), 1); m_maskBitmap = wxMacCreateGWorld(bitmap.GetWidth(), bitmap.GetHeight(), 1);
Rect rect = { 0,0, bitmap.GetHeight(), bitmap.GetWidth() }; Rect rect = { 0,0, bitmap.GetHeight(), bitmap.GetWidth() };
LockPixels( GetGWorldPixMap(m_maskBitmap) ); LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
LockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) ); LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
CopyBits(GetPortBitMapForCopyBits(bitmap.GetHBITMAP()), CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) bitmap.GetHBITMAP()),
GetPortBitMapForCopyBits(m_maskBitmap), GetPortBitMapForCopyBits( (GWorldPtr) m_maskBitmap),
&rect, &rect, srcCopy, 0); &rect, &rect, srcCopy, 0);
UnlockPixels( GetGWorldPixMap(m_maskBitmap) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
UnlockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
return FALSE; return FALSE;
} }
@@ -1081,7 +1081,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
{ {
if ( m_maskBitmap ) if ( m_maskBitmap )
{ {
wxMacDestroyGWorld( m_maskBitmap ) ; wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ; m_maskBitmap = NULL ;
} }
wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false, wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false,
@@ -1091,9 +1091,9 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
wxCHECK_MSG( bitmap.Ok(), false, wxT("Illigal bitmap")); wxCHECK_MSG( bitmap.Ok(), false, wxT("Illigal bitmap"));
m_maskBitmap = wxMacCreateGWorld( bitmap.GetWidth() , bitmap.GetHeight() , 1 ); m_maskBitmap = wxMacCreateGWorld( bitmap.GetWidth() , bitmap.GetHeight() , 1 );
LockPixels( GetGWorldPixMap( m_maskBitmap ) ); LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap ) );
LockPixels( GetGWorldPixMap( bitmap.GetHBITMAP() ) ); LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) );
RGBColor maskColor = colour.GetPixel(); RGBColor maskColor = MAC_WXCOLORREF(colour.GetPixel());
// this is not very efficient, but I can't think // this is not very efficient, but I can't think
// of a better way of doing it // of a better way of doing it
@@ -1109,9 +1109,9 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
{ {
for (int h = 0; h < bitmap.GetHeight(); h++) for (int h = 0; h < bitmap.GetHeight(); h++)
{ {
SetGWorld( bitmap.GetHBITMAP(), NULL ) ; SetGWorld( (GWorldPtr) bitmap.GetHBITMAP(), NULL ) ;
GetCPixel( w , h , &col ) ; GetCPixel( w , h , &col ) ;
SetGWorld( m_maskBitmap , NULL ) ; SetGWorld( (GWorldPtr) m_maskBitmap , NULL ) ;
if (col.red == maskColor.red && col.green == maskColor.green && col.blue == maskColor.blue) if (col.red == maskColor.red && col.green == maskColor.green && col.blue == maskColor.blue)
{ {
SetCPixel( w , h , &colors[0] ) ; SetCPixel( w , h , &colors[0] ) ;
@@ -1123,7 +1123,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
} }
} }
UnlockPixels( GetGWorldPixMap( (CGrafPtr) m_maskBitmap ) ) ; UnlockPixels( GetGWorldPixMap( (CGrafPtr) m_maskBitmap ) ) ;
UnlockPixels( GetGWorldPixMap( bitmap.GetHBITMAP() ) ) ; UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) ) ;
SetGWorld( origPort , origDevice ) ; SetGWorld( origPort , origDevice ) ;
return TRUE; return TRUE;
@@ -1131,7 +1131,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
bool wxMask::PointMasked(int x, int y) bool wxMask::PointMasked(int x, int y)
{ {
WXHBITMAP origPort; GWorldPtr origPort;
GDHandle origDevice; GDHandle origDevice;
RGBColor color; RGBColor color;
bool masked = true; bool masked = true;
@@ -1139,11 +1139,11 @@ bool wxMask::PointMasked(int x, int y)
GetGWorld( &origPort, &origDevice); GetGWorld( &origPort, &origDevice);
//Set port to mask and see if it masked (1) or not ( 0 ) //Set port to mask and see if it masked (1) or not ( 0 )
SetGWorld(m_maskBitmap, NULL); SetGWorld( (GWorldPtr) m_maskBitmap, NULL);
LockPixels(GetGWorldPixMap(m_maskBitmap)); LockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
GetCPixel(x,y, &color); GetCPixel(x,y, &color);
masked = !(color.red == 0 && color.green == 0 && color.blue == 0); masked = !(color.red == 0 && color.green == 0 && color.blue == 0);
UnlockPixels(GetGWorldPixMap(m_maskBitmap)); UnlockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
SetGWorld( origPort, origDevice); SetGWorld( origPort, origDevice);

View File

@@ -57,11 +57,11 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
MacPreControlCreate( parent , id , "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 ,
kControlBehaviorOffsetContents + kControlBehaviorOffsetContents +
( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0, ( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0,
(( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ; (( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
ControlButtonContentInfo info ; ControlButtonContentInfo info ;
@@ -70,31 +70,31 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
{ {
if ( bmap->m_bitmapType == kMacBitmapTypePict ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ; info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ; info.u.picture = MAC_WXHMETAFILE( bmap->m_hPict ) ;
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{ {
if ( m_buttonBitmap.GetMask() ) if ( m_buttonBitmap.GetMask() )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP( bmap->m_hBitmap ) , MAC_WXHBITMAP(m_buttonBitmap.GetMask()->GetMaskBitmap()) ,
8 , 16 ) ; 8 , 16 ) ;
} }
else else
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP( bmap->m_hBitmap ) , NULL ,
8 , 16 ) ; 8 , 16 ) ;
} }
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = bmap->m_hIcon ; info.u.cIconHandle = MAC_WXHICON(bmap->m_hIcon) ;
} }
} }
::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; ::SetControlData( (ControlHandle) m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -111,31 +111,31 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap)
wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ; wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ;
if ( bmap->m_bitmapType == kMacBitmapTypePict ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ; info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ; info.u.picture = MAC_WXHMETAFILE(bmap->m_hPict) ;
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{ {
if ( m_buttonBitmap.GetMask() ) if ( m_buttonBitmap.GetMask() )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , MAC_WXHBITMAP(m_buttonBitmap.GetMask()->GetMaskBitmap()) ,
8 , 16 ) ; 8 , 16 ) ;
} }
else else
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL ,
8 , 16 ) ; 8 , 16 ) ;
} }
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = bmap->m_hIcon ; info.u.cIconHandle = MAC_WXHICON( bmap->m_hIcon ) ;
} }
::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; ::SetControlData( (ControlHandle) m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ;
} }
} }

View File

@@ -17,10 +17,34 @@
#include "wx/utils.h" #include "wx/utils.h"
#include "wx/brush.h" #include "wx/brush.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject)
#endif #endif
class WXDLLEXPORT wxBrushRefData: public wxGDIRefData
{
friend class WXDLLEXPORT wxBrush;
public:
wxBrushRefData();
wxBrushRefData(const wxBrushRefData& data);
~wxBrushRefData();
protected:
wxMacBrushKind m_macBrushKind ;
int m_style;
wxBitmap m_stipple ;
wxColour m_colour;
ThemeBrush m_macThemeBrush ;
ThemeBackgroundKind m_macThemeBackground ;
Rect m_macThemeBackgroundExtent ;
};
#define M_BRUSHDATA ((wxBrushRefData *)m_refData)
wxBrushRefData::wxBrushRefData() wxBrushRefData::wxBrushRefData()
{ {
m_style = wxSOLID; m_style = wxSOLID;
@@ -149,13 +173,13 @@ void wxBrush::SetMacTheme(ThemeBrush macThemeBrush)
RealizeResource(); RealizeResource();
} }
void wxBrush::SetMacThemeBackground(ThemeBackgroundKind macThemeBackground, const Rect &extent) void wxBrush::SetMacThemeBackground(unsigned long macThemeBackground, const WXRECTPTR extent)
{ {
Unshare(); Unshare();
M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground; M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground;
M_BRUSHDATA->m_macThemeBackground = macThemeBackground; M_BRUSHDATA->m_macThemeBackground = macThemeBackground;
M_BRUSHDATA->m_macThemeBackgroundExtent = extent ; M_BRUSHDATA->m_macThemeBackgroundExtent = *(Rect*)extent ;
RealizeResource(); RealizeResource();
} }
@@ -164,12 +188,12 @@ bool wxBrush::RealizeResource()
return TRUE; return TRUE;
} }
ThemeBackgroundKind wxBrush::GetMacThemeBackground(Rect *extent) const unsigned long wxBrush::GetMacThemeBackground( WXRECTPTR extent) const
{ {
if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground ) if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground )
{ {
if ( extent ) if ( extent )
*extent = M_BRUSHDATA->m_macThemeBackgroundExtent ; *(Rect*)extent = M_BRUSHDATA->m_macThemeBackgroundExtent ;
return M_BRUSHDATA->m_macThemeBackground ; return M_BRUSHDATA->m_macThemeBackground ;
} }
else else
@@ -178,3 +202,25 @@ ThemeBackgroundKind wxBrush::GetMacThemeBackground(Rect *extent) const
} }
} }
short wxBrush::GetMacTheme() const
{
return (M_BRUSHDATA ? ( M_BRUSHDATA->m_macBrushKind == kwxMacBrushTheme ? M_BRUSHDATA->m_macThemeBrush : kThemeBrushBlack) : kThemeBrushBlack);
};
wxColour& wxBrush::GetColour() const
{ return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); };
int wxBrush::GetStyle() const
{
return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0);
};
wxBitmap *wxBrush::GetStipple() const
{
return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0);
};
wxMacBrushKind wxBrush::MacGetBrushKind() const
{
return (M_BRUSHDATA ? M_BRUSHDATA->m_macBrushKind : kwxMacBrushColour);
};

View File

@@ -37,9 +37,9 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlPushButtonProc , (long) this ) ; kControlPushButtonProc , (long) this ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -61,13 +61,13 @@ void wxButton::SetDefault()
if ( btnOldDefault && btnOldDefault->m_macControl ) if ( btnOldDefault && btnOldDefault->m_macControl )
{ {
inData = 0; inData = 0;
::SetControlData( btnOldDefault->m_macControl , kControlButtonPart , ::SetControlData( (ControlHandle) btnOldDefault->m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
} }
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
inData = 1; inData = 1;
::SetControlData( m_macControl , kControlButtonPart , ::SetControlData( (ControlHandle) m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
} }
} }
@@ -95,17 +95,17 @@ wxSize wxButton::GetDefaultSize()
void wxButton::Command (wxCommandEvent & event) void wxButton::Command (wxCommandEvent & event)
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
HiliteControl( m_macControl , kControlButtonPart ) ; HiliteControl( (ControlHandle) m_macControl , kControlButtonPart ) ;
unsigned long finalTicks ; unsigned long finalTicks ;
Delay( 8 , &finalTicks ) ; Delay( 8 , &finalTicks ) ;
HiliteControl( m_macControl , 0 ) ; HiliteControl( (ControlHandle) m_macControl , 0 ) ;
} }
ProcessCommand (event); ProcessCommand (event);
} }
void wxButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
if ( controlpart != kControlNoPart ) if ( controlpart != kControlNoPart )
{ {

View File

@@ -1048,7 +1048,7 @@ pascal SInt32 AGABevelButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ; Boolean mRadioBehavior = false ;
@@ -1188,7 +1188,7 @@ pascal SInt32 AGAButtonDefProc (SInt16 procID, ControlHandle theControl, Control
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ; Boolean mRadioBehavior = false ;
@@ -1425,7 +1425,7 @@ pascal SInt32 AGACheckBoxDefProc (SInt16 procID, ControlHandle theControl, Contr
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
Rect frame = (**theControl).contrlRect ; Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true; Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ; Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1621,7 +1621,7 @@ pascal SInt32 AGARadioButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ; return 0 ;
{ {
AGAPortHelper help() ; wxMacPortStateHelper help() ;
Rect frame = (**theControl).contrlRect ; Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true; Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ; Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1813,7 +1813,7 @@ pascal SInt32 AGAStaticGroupBoxTextDefProc (SInt16 procID, ControlHandle theCont
{ {
bool disabled = false ; bool disabled = false ;
bool hasColor = true ; bool hasColor = true ;
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
FontInfo fi ; FontInfo fi ;
::GetFontInfo( &fi ) ; ::GetFontInfo( &fi ) ;
@@ -1899,7 +1899,7 @@ pascal SInt32 AGAStaticTextDefProc (SInt16 procID, ControlHandle theControl, Con
return 0 ; return 0 ;
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
int x = (**theControl).contrlRect.left ; int x = (**theControl).contrlRect.left ;
int y = (**theControl).contrlRect.top ; int y = (**theControl).contrlRect.top ;
@@ -2094,7 +2094,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
{ {
case initCntl : case initCntl :
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
SetPort( (**theControl).contrlOwner ) ; SetPort( (**theControl).contrlOwner ) ;
::TextFont( kFontIDGeneva ) ; ::TextFont( kFontIDGeneva ) ;
::TextSize( 10 ) ; ::TextSize( 10 ) ;
@@ -2116,7 +2116,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ; break ;
case drawCntl : case drawCntl :
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
SetPort( (**theControl).contrlOwner ) ; SetPort( (**theControl).contrlOwner ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ; RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
@@ -2223,7 +2223,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ; break ;
case kControlMsgKeyDown : case kControlMsgKeyDown :
{ {
AGAPortHelper help( (**theControl).contrlOwner ) ; wxMacPortStateHelper help( (**theControl).contrlOwner ) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ; RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
RGBForeColor( &gAGARamp[ kAGABlack ] ) ; RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
@@ -2332,7 +2332,7 @@ pascal SInt32 AGAListControlDefProc (SInt16 procID, ControlHandle theControl, Co
break ; break ;
case drawCntl : case drawCntl :
{ {
AGAPortHelper help((**theControl).contrlOwner) ; wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ; AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ; RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
EraseRect( &(**theControl).contrlRect ) ; EraseRect( &(**theControl).contrlRect ) ;
@@ -2560,52 +2560,4 @@ void AGAApplyThemeBackground(ThemeBackgroundKind inKind,
// status in a theme savvy manner, pen mode, patterns and fonts // status in a theme savvy manner, pen mode, patterns and fonts
// attributes // attributes
AGAPortHelper::AGAPortHelper( GrafPtr newport)
{
m_clip = NULL ;
Setup( newport ) ;
}
AGAPortHelper::AGAPortHelper()
{
m_clip = NULL ;
}
void AGAPortHelper::Setup( GrafPtr newport )
{
GetPort( &m_oldPort ) ;
SetPort( newport ) ;
wxASSERT_MSG( m_clip == NULL , "Cannot call setup twice" ) ;
m_clip = NewRgn() ;
GetClip( m_clip );
m_textFont = GetPortTextFont( newport);
m_textSize = GetPortTextSize( newport);
m_textStyle = GetPortTextFace( newport);
m_textMode = GetPortTextMode( newport);
GetThemeDrawingState( &m_drawingState ) ;
m_currentPort = newport ;
}
void AGAPortHelper::Clear()
{
if ( m_clip )
{
DisposeRgn( m_clip ) ;
DisposeThemeDrawingState( m_drawingState ) ;
m_clip = NULL ;
}
}
AGAPortHelper::~AGAPortHelper()
{
if ( m_clip )
{
SetPort( m_currentPort ) ;
SetClip( m_clip ) ;
DisposeRgn( m_clip ) ;
TextFont( m_textFont );
TextSize( m_textSize );
TextFace( m_textStyle );
TextMode( m_textMode );
SetThemeDrawingState( m_drawingState , true ) ;
SetPort( m_oldPort ) ;
}
}

View File

@@ -85,7 +85,7 @@ const short kMacMinHeap = (29 * 1024) ;
const short kwxMacMenuBarResource = 1 ; const short kwxMacMenuBarResource = 1 ;
const short kwxMacAppleMenuId = 1 ; const short kwxMacAppleMenuId = 1 ;
RgnHandle wxApp::s_macCursorRgn = NULL; WXHRGN wxApp::s_macCursorRgn = NULL;
wxWindow* wxApp::s_captureWindow = NULL ; wxWindow* wxApp::s_captureWindow = NULL ;
int wxApp::s_lastMouseDown = 0 ; int wxApp::s_lastMouseDown = 0 ;
long wxApp::sm_lastMessageTime = 0; long wxApp::sm_lastMessageTime = 0;
@@ -125,7 +125,7 @@ pascal OSErr AEHandleQuit( const AppleEvent *event , AppleEvent *reply , long re
return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ; return wxTheApp->MacHandleAEQuit( (AppleEvent*) event , reply) ;
} }
OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEODoc(const WXEVENTREF event , WXEVENTREF reply)
{ {
SysBeep(40) ; SysBeep(40) ;
ProcessSerialNumber PSN ; ProcessSerialNumber PSN ;
@@ -135,17 +135,17 @@ OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
return noErr ; return noErr ;
} }
OSErr wxApp::MacHandleAEPDoc(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEPDoc(const WXEVENTREF event , WXEVENTREF reply)
{ {
return noErr ; return noErr ;
} }
OSErr wxApp::MacHandleAEOApp(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEOApp(const WXEVENTREF event , WXEVENTREF reply)
{ {
return noErr ; return noErr ;
} }
OSErr wxApp::MacHandleAEQuit(const AppleEvent *event , AppleEvent *reply) short wxApp::MacHandleAEQuit(const WXEVENTREF event , WXEVENTREF reply)
{ {
wxWindow* win = GetTopWindow() ; wxWindow* win = GetTopWindow() ;
if ( win ) if ( win )
@@ -603,7 +603,7 @@ void wxApp::CleanUp()
UMACleanupToolbox() ; UMACleanupToolbox() ;
if (s_macCursorRgn) if (s_macCursorRgn)
::DisposeRgn(s_macCursorRgn); ::DisposeRgn((RgnHandle)s_macCursorRgn);
#if 0 #if 0
TerminateAE() ; TerminateAE() ;
@@ -958,11 +958,11 @@ bool wxApp::Yield(bool onlyIfNeeded)
long sleepTime = 1 ; //::GetCaretTime(); long sleepTime = 1 ; //::GetCaretTime();
while ( !wxTheApp->IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, wxApp::s_macCursorRgn)) while ( !wxTheApp->IsExiting() && WaitNextEvent(everyEvent, &event,sleepTime, (RgnHandle) wxApp::s_macCursorRgn))
{ {
wxTheApp->MacHandleOneEvent( &event ); wxTheApp->MacHandleOneEvent( &event );
if ( event.what != kHighLevelEvent ) if ( event.what != kHighLevelEvent )
SetRectRgn( wxApp::s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; SetRectRgn( (RgnHandle) wxApp::s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ;
} }
wxMacProcessNotifierAndPendingEvents() ; wxMacProcessNotifierAndPendingEvents() ;
@@ -1021,7 +1021,7 @@ void wxApp::MacDoOneEvent()
long sleepTime = 1; // GetCaretTime() / 4 ; long sleepTime = 1; // GetCaretTime() / 4 ;
if (WaitNextEvent(everyEvent, &event, sleepTime, s_macCursorRgn)) if (WaitNextEvent(everyEvent, &event, sleepTime, (RgnHandle) s_macCursorRgn))
{ {
MacHandleOneEvent( &event ); MacHandleOneEvent( &event );
} }
@@ -1035,7 +1035,7 @@ void wxApp::MacDoOneEvent()
wxTheApp->ProcessIdle() ; wxTheApp->ProcessIdle() ;
} }
if ( event.what != kHighLevelEvent ) if ( event.what != kHighLevelEvent )
SetRectRgn( s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ; SetRectRgn( (RgnHandle) s_macCursorRgn , event.where.h , event.where.v , event.where.h + 1 , event.where.v + 1 ) ;
// repeaters // repeaters
@@ -1043,8 +1043,9 @@ void wxApp::MacDoOneEvent()
wxMacProcessNotifierAndPendingEvents() ; wxMacProcessNotifierAndPendingEvents() ;
} }
void wxApp::MacHandleOneEvent( EventRecord *ev ) void wxApp::MacHandleOneEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
m_macCurrentEvent = ev ; m_macCurrentEvent = ev ;
wxApp::sm_lastMessageTime = ev->when ; wxApp::sm_lastMessageTime = ev->when ;
@@ -1098,15 +1099,17 @@ void wxApp::MacHandleOneEvent( EventRecord *ev )
wxMacProcessNotifierAndPendingEvents() ; wxMacProcessNotifierAndPendingEvents() ;
} }
void wxApp::MacHandleHighLevelEvent( EventRecord *ev ) void wxApp::MacHandleHighLevelEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
::AEProcessAppleEvent( ev ) ; ::AEProcessAppleEvent( ev ) ;
} }
bool s_macIsInModalLoop = false ; bool s_macIsInModalLoop = false ;
void wxApp::MacHandleMouseDownEvent( EventRecord *ev ) void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ; wxToolTip::RemoveToolTips() ;
WindowRef window; WindowRef window;
@@ -1156,11 +1159,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
GrafPtr port ; GrafPtr port ;
GetPort( &port ) ; GetPort( &port ) ;
Point pt = { 0, 0 } ; Point pt = { 0, 0 } ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ; SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
LocalToGlobal( &pt ) ; LocalToGlobal( &pt ) ;
SetPort( port ) ; SetPort( port ) ;
win->SetSize( pt.h , pt.v , -1 , win->SetSize( pt.h , pt.v , -1 ,
@@ -1226,11 +1225,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
{ {
GrafPtr port ; GrafPtr port ;
GetPort( &port ) ; GetPort( &port ) ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ; SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
SetPort( port ) ; SetPort( port ) ;
} }
if ( window != frontWindow && wxTheApp->s_captureWindow == NULL ) if ( window != frontWindow && wxTheApp->s_captureWindow == NULL )
@@ -1263,8 +1258,9 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleMouseUpEvent( EventRecord *ev ) void wxApp::MacHandleMouseUpEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
WindowRef window; WindowRef window;
short windowPart = ::FindWindow(ev->where, &window); short windowPart = ::FindWindow(ev->where, &window);
@@ -1394,8 +1390,9 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
return retval; return retval;
} }
void wxApp::MacHandleKeyDownEvent( EventRecord *ev ) void wxApp::MacHandleKeyDownEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ; wxToolTip::RemoveToolTips() ;
UInt32 menuresult = UMAMenuEvent(ev) ; UInt32 menuresult = UMAMenuEvent(ev) ;
@@ -1511,8 +1508,9 @@ void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleKeyUpEvent( EventRecord *ev ) void wxApp::MacHandleKeyUpEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ; wxToolTip::RemoveToolTips() ;
UInt32 menuresult = UMAMenuEvent(ev) ; UInt32 menuresult = UMAMenuEvent(ev) ;
@@ -1546,8 +1544,9 @@ void wxApp::MacHandleKeyUpEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleActivateEvent( EventRecord *ev ) void wxApp::MacHandleActivateEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
WindowRef window = (WindowRef) ev->message ; WindowRef window = (WindowRef) ev->message ;
if ( window ) if ( window )
{ {
@@ -1565,8 +1564,9 @@ void wxApp::MacHandleActivateEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleUpdateEvent( EventRecord *ev ) void wxApp::MacHandleUpdateEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
WindowRef window = (WindowRef) ev->message ; WindowRef window = (WindowRef) ev->message ;
wxTopLevelWindowMac * win = wxFindWinFromMacWindow( window ) ; wxTopLevelWindowMac * win = wxFindWinFromMacWindow( window ) ;
if ( win ) if ( win )
@@ -1584,8 +1584,9 @@ void wxApp::MacHandleUpdateEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleDiskEvent( EventRecord *ev ) void wxApp::MacHandleDiskEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
if ( HiWord( ev->message ) != noErr ) if ( HiWord( ev->message ) != noErr )
{ {
#if !TARGET_CARBON #if !TARGET_CARBON
@@ -1599,8 +1600,9 @@ void wxApp::MacHandleDiskEvent( EventRecord *ev )
} }
} }
void wxApp::MacHandleOSEvent( EventRecord *ev ) void wxApp::MacHandleOSEvent( WXEVENTREF evr )
{ {
EventRecord* ev = (EventRecord*) evr ;
switch( ( ev->message & osEvtMessageMask ) >> 24 ) switch( ( ev->message & osEvtMessageMask ) >> 24 )
{ {
case suspendResumeMessage : case suspendResumeMessage :

View File

@@ -313,7 +313,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{ {
if ( data->m_hPict ) if ( data->m_hPict )
{ {
KillPicture( data->m_hPict ) ; KillPicture( MAC_WXHMETAFILE( data->m_hPict ) ) ;
data->m_hPict = NULL ; data->m_hPict = NULL ;
} }
} }
@@ -322,7 +322,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{ {
if ( data->m_hBitmap ) if ( data->m_hBitmap )
{ {
wxMacDestroyGWorld( data->m_hBitmap ) ; wxMacDestroyGWorld( MAC_WXHBITMAP(data->m_hBitmap) ) ;
data->m_hBitmap = NULL ; data->m_hBitmap = NULL ;
} }
} }
@@ -330,7 +330,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
case kMacBitmapTypeIcon : case kMacBitmapTypeIcon :
if ( data->m_hIcon ) if ( data->m_hIcon )
{ {
DisposeCIcon( data->m_hIcon ) ; DisposeCIcon( MAC_WXHICON(data->m_hIcon) ) ;
data->m_hIcon = NULL ; data->m_hIcon = NULL ;
} }
@@ -377,15 +377,15 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
if ( no_bits == 1 ) if ( no_bits == 1 )
{ {
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( the_width , the_height , no_bits ) ; MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) = wxMacCreateGWorld( the_width , the_height , no_bits ) ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ; M_BITMAPDATA->m_ok = (MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) != NULL ) ;
CGrafPtr origPort ; CGrafPtr origPort ;
GDHandle origDevice ; GDHandle origDevice ;
GetGWorld( &origPort , &origDevice ) ; GetGWorld( &origPort , &origDevice ) ;
SetGWorld( M_BITMAPDATA->m_hBitmap , NULL ) ; SetGWorld( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , NULL ) ;
LockPixels( GetGWorldPixMap( M_BITMAPDATA->m_hBitmap ) ) ; LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) ) ) ;
// bits is a char array // bits is a char array
@@ -417,7 +417,7 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
} }
} }
} }
UnlockPixels( GetGWorldPixMap( M_BITMAPDATA->m_hBitmap ) ) ; UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) ) ) ;
SetGWorld( origPort , origDevice ) ; SetGWorld( origPort , origDevice ) ;
} }
@@ -474,7 +474,7 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
wxBitmap ret( rect.width, rect.height, GetDepth() ); wxBitmap ret( rect.width, rect.height, GetDepth() );
wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") ); wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") );
WXHBITMAP origPort; GWorldPtr origPort;
GDHandle origDevice; GDHandle origDevice;
GetGWorld( &origPort, &origDevice ); GetGWorld( &origPort, &origDevice );
@@ -496,10 +496,10 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy mask // Copy mask
if(GetMask()) if(GetMask())
{ {
WXHBITMAP submask, mask; GWorldPtr submask, mask;
RGBColor color; RGBColor color;
mask = GetMask()->GetMaskBitmap(); mask = (GWorldPtr) GetMask()->GetMaskBitmap();
submask = wxMacCreateGWorld(rect.width, rect.height, 1); submask = wxMacCreateGWorld(rect.width, rect.height, 1);
LockPixels(GetGWorldPixMap(mask)); LockPixels(GetGWorldPixMap(mask));
LockPixels(GetGWorldPixMap(submask)); LockPixels(GetGWorldPixMap(submask));
@@ -523,11 +523,11 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy bitmap // Copy bitmap
if(GetHBITMAP()) if(GetHBITMAP())
{ {
WXHBITMAP subbitmap, bitmap; GWorldPtr subbitmap, bitmap;
RGBColor color; RGBColor color;
bitmap = GetHBITMAP(); bitmap = (GWorldPtr) GetHBITMAP();
subbitmap = ref->m_hBitmap ; subbitmap = (GWorldPtr) ref->m_hBitmap ;
LockPixels(GetGWorldPixMap(bitmap)); LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap)); LockPixels(GetGWorldPixMap(subbitmap));
@@ -562,7 +562,7 @@ bool wxBitmap::Create(int w, int h, int d)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( w , h , d ) ; M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( w , h , d ) ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ; M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ;
return M_BITMAPDATA->m_ok; return M_BITMAPDATA->m_ok;
} }
@@ -579,7 +579,7 @@ void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ; M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = bmp ; M_BITMAPDATA->m_hBitmap = bmp ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ; M_BITMAPDATA->m_ok = ( M_BITMAPDATA->m_hBitmap != NULL ) ;
} }
bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type) bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
@@ -641,11 +641,11 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
CGrafPtr origPort ; CGrafPtr origPort ;
GDHandle origDevice ; GDHandle origDevice ;
PixMapHandle pixMap = GetGWorldPixMap(GetHBITMAP()) ; PixMapHandle pixMap = GetGWorldPixMap((GWorldPtr)GetHBITMAP()) ;
LockPixels( pixMap ); LockPixels( pixMap );
GetGWorld( &origPort , &origDevice ) ; GetGWorld( &origPort , &origDevice ) ;
SetGWorld( GetHBITMAP() , NULL ) ; SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
// Render image // Render image
RGBColor colorRGB ; RGBColor colorRGB ;
@@ -675,8 +675,8 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
wxBitmap maskBitmap ; wxBitmap maskBitmap ;
maskBitmap.Create( width, height, 1); maskBitmap.Create( width, height, 1);
LockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) ); LockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
SetGWorld(maskBitmap.GetHBITMAP(), NULL); SetGWorld( (GWorldPtr) maskBitmap.GetHBITMAP(), NULL);
for (int y = 0; y < height; y++) for (int y = 0; y < height; y++)
{ {
@@ -692,12 +692,12 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
data += 3 ; data += 3 ;
} }
} // for height } // for height
SetGWorld(GetHBITMAP(), NULL); SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
SetMask(new wxMask( maskBitmap )); SetMask(new wxMask( maskBitmap ));
UnlockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
} }
UnlockPixels( GetGWorldPixMap(GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP()) );
SetGWorld( origPort, origDevice ); SetGWorld( origPort, origDevice );
} }
@@ -716,7 +716,7 @@ wxImage wxBitmap::ConvertToImage() const
wxCHECK_MSG( data, wxNullImage, wxT("Could not allocate data for image") ); wxCHECK_MSG( data, wxNullImage, wxT("Could not allocate data for image") );
WXHBITMAP origPort; GWorldPtr origPort;
GDHandle origDevice; GDHandle origDevice;
int index; int index;
RGBColor color; RGBColor color;
@@ -726,8 +726,8 @@ wxImage wxBitmap::ConvertToImage() const
wxMask *mask = GetMask(); wxMask *mask = GetMask();
GetGWorld( &origPort, &origDevice ); GetGWorld( &origPort, &origDevice );
LockPixels(GetGWorldPixMap(GetHBITMAP())); LockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld( GetHBITMAP(), NULL); SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
// Copy data into image // Copy data into image
index = 0; index = 0;
@@ -761,7 +761,7 @@ wxImage wxBitmap::ConvertToImage() const
} }
// Free resources // Free resources
UnlockPixels(GetGWorldPixMap(GetHBITMAP())); UnlockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld(origPort, origDevice); SetGWorld(origPort, origDevice);
return image; return image;
@@ -899,10 +899,10 @@ WXHBITMAP wxBitmap::GetHBITMAP() const
{ {
wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") );
return M_BITMAPDATA->m_hBitmap; return MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap);
} }
PicHandle wxBitmap::GetPict() const WXHMETAFILE wxBitmap::GetPict() const
{ {
wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") ); wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") );
@@ -925,16 +925,16 @@ PicHandle wxBitmap::GetPict() const
wxMask *mask; wxMask *mask;
Rect portRect ; Rect portRect ;
GetPortBounds( GetHBITMAP() , &portRect ) ; GetPortBounds( (GWorldPtr) GetHBITMAP() , &portRect ) ;
int width = portRect.right - portRect.left ; int width = portRect.right - portRect.left ;
int height = portRect.bottom - portRect.top ; int height = portRect.bottom - portRect.top ;
LockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ; LockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
GetGWorld( &origPort , &origDev ) ; GetGWorld( &origPort , &origDev ) ;
mask = GetMask(); mask = GetMask();
SetGWorld( GetHBITMAP() , NULL ) ; SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
picture = OpenPicture(&portRect); // open a picture, this disables drawing picture = OpenPicture(&portRect); // open a picture, this disables drawing
if(!picture) { if(!picture) {
@@ -979,16 +979,16 @@ PicHandle wxBitmap::GetPict() const
RGBForeColor( &black ) ; RGBForeColor( &black ) ;
RGBBackColor( &white ) ; RGBBackColor( &white ) ;
CopyBits(GetPortBitMapForCopyBits(GetHBITMAP()), CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// src PixMap - we copy image over itself - // src PixMap - we copy image over itself -
GetPortBitMapForCopyBits(GetHBITMAP()), GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// dst PixMap - no drawing occurs // dst PixMap - no drawing occurs
&portRect, // srcRect - it will be recorded and compressed - &portRect, // srcRect - it will be recorded and compressed -
&portRect, // dstRect - into the picture that is open - &portRect, // dstRect - into the picture that is open -
srcCopy,NULL); // copyMode and no clip region srcCopy,NULL); // copyMode and no clip region
} }
ClosePicture(); // We are done recording the picture ClosePicture(); // We are done recording the picture
UnlockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ; UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
SetGWorld( origPort , origDev ) ; SetGWorld( origPort , origDev ) ;
return picture; // return our groovy pict handle return picture; // return our groovy pict handle
@@ -1030,7 +1030,7 @@ wxMask::~wxMask()
{ {
if ( m_maskBitmap ) if ( m_maskBitmap )
{ {
wxMacDestroyGWorld( m_maskBitmap ) ; wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ; m_maskBitmap = NULL ;
} }
} }
@@ -1040,7 +1040,7 @@ bool wxMask::Create(const wxBitmap& bitmap)
{ {
if ( m_maskBitmap ) if ( m_maskBitmap )
{ {
wxMacDestroyGWorld( m_maskBitmap ) ; wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ; m_maskBitmap = NULL ;
} }
wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false, wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false,
@@ -1055,13 +1055,13 @@ bool wxMask::Create(const wxBitmap& bitmap)
m_maskBitmap = wxMacCreateGWorld(bitmap.GetWidth(), bitmap.GetHeight(), 1); m_maskBitmap = wxMacCreateGWorld(bitmap.GetWidth(), bitmap.GetHeight(), 1);
Rect rect = { 0,0, bitmap.GetHeight(), bitmap.GetWidth() }; Rect rect = { 0,0, bitmap.GetHeight(), bitmap.GetWidth() };
LockPixels( GetGWorldPixMap(m_maskBitmap) ); LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
LockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) ); LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
CopyBits(GetPortBitMapForCopyBits(bitmap.GetHBITMAP()), CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) bitmap.GetHBITMAP()),
GetPortBitMapForCopyBits(m_maskBitmap), GetPortBitMapForCopyBits( (GWorldPtr) m_maskBitmap),
&rect, &rect, srcCopy, 0); &rect, &rect, srcCopy, 0);
UnlockPixels( GetGWorldPixMap(m_maskBitmap) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
UnlockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
return FALSE; return FALSE;
} }
@@ -1081,7 +1081,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
{ {
if ( m_maskBitmap ) if ( m_maskBitmap )
{ {
wxMacDestroyGWorld( m_maskBitmap ) ; wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ; m_maskBitmap = NULL ;
} }
wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false, wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false,
@@ -1091,9 +1091,9 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
wxCHECK_MSG( bitmap.Ok(), false, wxT("Illigal bitmap")); wxCHECK_MSG( bitmap.Ok(), false, wxT("Illigal bitmap"));
m_maskBitmap = wxMacCreateGWorld( bitmap.GetWidth() , bitmap.GetHeight() , 1 ); m_maskBitmap = wxMacCreateGWorld( bitmap.GetWidth() , bitmap.GetHeight() , 1 );
LockPixels( GetGWorldPixMap( m_maskBitmap ) ); LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap ) );
LockPixels( GetGWorldPixMap( bitmap.GetHBITMAP() ) ); LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) );
RGBColor maskColor = colour.GetPixel(); RGBColor maskColor = MAC_WXCOLORREF(colour.GetPixel());
// this is not very efficient, but I can't think // this is not very efficient, but I can't think
// of a better way of doing it // of a better way of doing it
@@ -1109,9 +1109,9 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
{ {
for (int h = 0; h < bitmap.GetHeight(); h++) for (int h = 0; h < bitmap.GetHeight(); h++)
{ {
SetGWorld( bitmap.GetHBITMAP(), NULL ) ; SetGWorld( (GWorldPtr) bitmap.GetHBITMAP(), NULL ) ;
GetCPixel( w , h , &col ) ; GetCPixel( w , h , &col ) ;
SetGWorld( m_maskBitmap , NULL ) ; SetGWorld( (GWorldPtr) m_maskBitmap , NULL ) ;
if (col.red == maskColor.red && col.green == maskColor.green && col.blue == maskColor.blue) if (col.red == maskColor.red && col.green == maskColor.green && col.blue == maskColor.blue)
{ {
SetCPixel( w , h , &colors[0] ) ; SetCPixel( w , h , &colors[0] ) ;
@@ -1123,7 +1123,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
} }
} }
UnlockPixels( GetGWorldPixMap( (CGrafPtr) m_maskBitmap ) ) ; UnlockPixels( GetGWorldPixMap( (CGrafPtr) m_maskBitmap ) ) ;
UnlockPixels( GetGWorldPixMap( bitmap.GetHBITMAP() ) ) ; UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) ) ;
SetGWorld( origPort , origDevice ) ; SetGWorld( origPort , origDevice ) ;
return TRUE; return TRUE;
@@ -1131,7 +1131,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
bool wxMask::PointMasked(int x, int y) bool wxMask::PointMasked(int x, int y)
{ {
WXHBITMAP origPort; GWorldPtr origPort;
GDHandle origDevice; GDHandle origDevice;
RGBColor color; RGBColor color;
bool masked = true; bool masked = true;
@@ -1139,11 +1139,11 @@ bool wxMask::PointMasked(int x, int y)
GetGWorld( &origPort, &origDevice); GetGWorld( &origPort, &origDevice);
//Set port to mask and see if it masked (1) or not ( 0 ) //Set port to mask and see if it masked (1) or not ( 0 )
SetGWorld(m_maskBitmap, NULL); SetGWorld( (GWorldPtr) m_maskBitmap, NULL);
LockPixels(GetGWorldPixMap(m_maskBitmap)); LockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
GetCPixel(x,y, &color); GetCPixel(x,y, &color);
masked = !(color.red == 0 && color.green == 0 && color.blue == 0); masked = !(color.red == 0 && color.green == 0 && color.blue == 0);
UnlockPixels(GetGWorldPixMap(m_maskBitmap)); UnlockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
SetGWorld( origPort, origDevice); SetGWorld( origPort, origDevice);

View File

@@ -57,11 +57,11 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
MacPreControlCreate( parent , id , "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , wxSize( width , height ) ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 ,
kControlBehaviorOffsetContents + kControlBehaviorOffsetContents +
( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0, ( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0,
(( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ; (( style & wxBU_AUTODRAW ) ? kControlBevelButtonSmallBevelProc : kControlBevelButtonNormalBevelProc ), (long) this ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
ControlButtonContentInfo info ; ControlButtonContentInfo info ;
@@ -70,31 +70,31 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
{ {
if ( bmap->m_bitmapType == kMacBitmapTypePict ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ; info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ; info.u.picture = MAC_WXHMETAFILE( bmap->m_hPict ) ;
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{ {
if ( m_buttonBitmap.GetMask() ) if ( m_buttonBitmap.GetMask() )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP( bmap->m_hBitmap ) , MAC_WXHBITMAP(m_buttonBitmap.GetMask()->GetMaskBitmap()) ,
8 , 16 ) ; 8 , 16 ) ;
} }
else else
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP( bmap->m_hBitmap ) , NULL ,
8 , 16 ) ; 8 , 16 ) ;
} }
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = bmap->m_hIcon ; info.u.cIconHandle = MAC_WXHICON(bmap->m_hIcon) ;
} }
} }
::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; ::SetControlData( (ControlHandle) m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -111,31 +111,31 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap)
wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ; wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ;
if ( bmap->m_bitmapType == kMacBitmapTypePict ) { if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ; info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ; info.u.picture = MAC_WXHMETAFILE(bmap->m_hPict) ;
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{ {
if ( m_buttonBitmap.GetMask() ) if ( m_buttonBitmap.GetMask() )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , m_buttonBitmap.GetMask()->GetMaskBitmap() , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , MAC_WXHBITMAP(m_buttonBitmap.GetMask()->GetMaskBitmap()) ,
8 , 16 ) ; 8 , 16 ) ;
} }
else else
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL ,
8 , 16 ) ; 8 , 16 ) ;
} }
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon ) else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = bmap->m_hIcon ; info.u.cIconHandle = MAC_WXHICON( bmap->m_hIcon ) ;
} }
::SetControlData( m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ; ::SetControlData( (ControlHandle) m_macControl , kControlButtonPart , kControlBevelButtonContentTag , sizeof(info) , (char*) &info ) ;
} }
} }

View File

@@ -17,10 +17,34 @@
#include "wx/utils.h" #include "wx/utils.h"
#include "wx/brush.h" #include "wx/brush.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject)
#endif #endif
class WXDLLEXPORT wxBrushRefData: public wxGDIRefData
{
friend class WXDLLEXPORT wxBrush;
public:
wxBrushRefData();
wxBrushRefData(const wxBrushRefData& data);
~wxBrushRefData();
protected:
wxMacBrushKind m_macBrushKind ;
int m_style;
wxBitmap m_stipple ;
wxColour m_colour;
ThemeBrush m_macThemeBrush ;
ThemeBackgroundKind m_macThemeBackground ;
Rect m_macThemeBackgroundExtent ;
};
#define M_BRUSHDATA ((wxBrushRefData *)m_refData)
wxBrushRefData::wxBrushRefData() wxBrushRefData::wxBrushRefData()
{ {
m_style = wxSOLID; m_style = wxSOLID;
@@ -149,13 +173,13 @@ void wxBrush::SetMacTheme(ThemeBrush macThemeBrush)
RealizeResource(); RealizeResource();
} }
void wxBrush::SetMacThemeBackground(ThemeBackgroundKind macThemeBackground, const Rect &extent) void wxBrush::SetMacThemeBackground(unsigned long macThemeBackground, const WXRECTPTR extent)
{ {
Unshare(); Unshare();
M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground; M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground;
M_BRUSHDATA->m_macThemeBackground = macThemeBackground; M_BRUSHDATA->m_macThemeBackground = macThemeBackground;
M_BRUSHDATA->m_macThemeBackgroundExtent = extent ; M_BRUSHDATA->m_macThemeBackgroundExtent = *(Rect*)extent ;
RealizeResource(); RealizeResource();
} }
@@ -164,12 +188,12 @@ bool wxBrush::RealizeResource()
return TRUE; return TRUE;
} }
ThemeBackgroundKind wxBrush::GetMacThemeBackground(Rect *extent) const unsigned long wxBrush::GetMacThemeBackground( WXRECTPTR extent) const
{ {
if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground ) if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground )
{ {
if ( extent ) if ( extent )
*extent = M_BRUSHDATA->m_macThemeBackgroundExtent ; *(Rect*)extent = M_BRUSHDATA->m_macThemeBackgroundExtent ;
return M_BRUSHDATA->m_macThemeBackground ; return M_BRUSHDATA->m_macThemeBackground ;
} }
else else
@@ -178,3 +202,25 @@ ThemeBackgroundKind wxBrush::GetMacThemeBackground(Rect *extent) const
} }
} }
short wxBrush::GetMacTheme() const
{
return (M_BRUSHDATA ? ( M_BRUSHDATA->m_macBrushKind == kwxMacBrushTheme ? M_BRUSHDATA->m_macThemeBrush : kThemeBrushBlack) : kThemeBrushBlack);
};
wxColour& wxBrush::GetColour() const
{ return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); };
int wxBrush::GetStyle() const
{
return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0);
};
wxBitmap *wxBrush::GetStipple() const
{
return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0);
};
wxMacBrushKind wxBrush::MacGetBrushKind() const
{
return (M_BRUSHDATA ? M_BRUSHDATA->m_macBrushKind : kwxMacBrushColour);
};

View File

@@ -37,9 +37,9 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label,
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlPushButtonProc , (long) this ) ; kControlPushButtonProc , (long) this ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -61,13 +61,13 @@ void wxButton::SetDefault()
if ( btnOldDefault && btnOldDefault->m_macControl ) if ( btnOldDefault && btnOldDefault->m_macControl )
{ {
inData = 0; inData = 0;
::SetControlData( btnOldDefault->m_macControl , kControlButtonPart , ::SetControlData( (ControlHandle) btnOldDefault->m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
} }
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
inData = 1; inData = 1;
::SetControlData( m_macControl , kControlButtonPart , ::SetControlData( (ControlHandle) m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ; kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
} }
} }
@@ -95,17 +95,17 @@ wxSize wxButton::GetDefaultSize()
void wxButton::Command (wxCommandEvent & event) void wxButton::Command (wxCommandEvent & event)
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
HiliteControl( m_macControl , kControlButtonPart ) ; HiliteControl( (ControlHandle) m_macControl , kControlButtonPart ) ;
unsigned long finalTicks ; unsigned long finalTicks ;
Delay( 8 , &finalTicks ) ; Delay( 8 , &finalTicks ) ;
HiliteControl( m_macControl , 0 ) ; HiliteControl( (ControlHandle) m_macControl , 0 ) ;
} }
ProcessCommand (event); ProcessCommand (event);
} }
void wxButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
if ( controlpart != kControlNoPart ) if ( controlpart != kControlNoPart )
{ {

View File

@@ -36,7 +36,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlCheckBoxProc , (long) this ) ; kControlCheckBoxProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -46,13 +46,13 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
void wxCheckBox::SetValue(bool val) void wxCheckBox::SetValue(bool val)
{ {
::SetControlValue( m_macControl , val ) ; ::SetControlValue( (ControlHandle) m_macControl , val ) ;
MacRedrawControl() ; MacRedrawControl() ;
} }
bool wxCheckBox::GetValue() const bool wxCheckBox::GetValue() const
{ {
return ::GetControlValue( m_macControl ) ; return ::GetControlValue( (ControlHandle) m_macControl ) ;
} }
void wxCheckBox::Command (wxCommandEvent & event) void wxCheckBox::Command (wxCommandEvent & event)
@@ -61,7 +61,7 @@ void wxCheckBox::Command (wxCommandEvent & event)
ProcessCommand (event); ProcessCommand (event);
} }
void wxCheckBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxCheckBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
SetValue( !GetValue() ) ; SetValue( !GetValue() ) ;
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId ); wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );

View File

@@ -109,10 +109,10 @@ static pascal void wxMacCheckListDefinition( short message, Boolean isSelected,
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
if( isSelected ) { if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
} }
// Restore the saved clip region. // Restore the saved clip region.
@@ -127,10 +127,10 @@ static pascal void wxMacCheckListDefinition( short message, Boolean isSelected,
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
GetPort( &grafPtr ); GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
break; break;
default : default :
break ; break ;
@@ -183,36 +183,36 @@ bool wxCheckListBox::Create(wxWindow *parent,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true, CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
14, 14, false, &listDef, &m_macControl ); 14, 14, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag, GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize); sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this); SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false); SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else #else
long result ; long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0, kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ; kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ; sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ; HLock( (Handle) m_macList ) ;
ldefHandle ldef ; ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ; ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL ) if ( (**(ListHandle)m_macList).listDefProc != NULL )
{ {
(**ldef).instruction = 0x4EF9; /* JMP instruction */ (**ldef).instruction = 0x4EF9; /* JMP instruction */
(**ldef).function = (void(*)()) listDef.u.userProc; (**ldef).function = (void(*)()) listDef.u.userProc;
(**m_macList).listDefProc = (Handle) ldef ; (**(ListHandle)m_macList).listDefProc = (Handle) ldef ;
} }
Point pt = (**m_macList).cellSize ; Point pt = (**(ListHandle)m_macList).cellSize ;
pt.v = 14 ; pt.v = 14 ;
LCellSize( pt , m_macList ) ; LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ; LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif #endif
OptionBits options = 0; OptionBits options = 0;
if ( style & wxLB_MULTIPLE ) if ( style & wxLB_MULTIPLE )
@@ -227,7 +227,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
{ {
options = lOnlyOne ; options = lOnlyOne ;
} }
SetListSelectionFlags(m_macList, options); SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -236,7 +236,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
Append( choices[i] ) ; Append( choices[i] ) ;
} }
LSetDrawingMode( true , m_macList ) ; LSetDrawingMode( true , (ListHandle) m_macList ) ;
return TRUE; return TRUE;
} }
@@ -358,8 +358,8 @@ void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
GetListVisibleCells( m_macList , &visible ) ; GetListVisibleCells( m_macList , &visible ) ;
topcell = visible.top ; topcell = visible.top ;
#else #else
lineheight = (**m_macList).cellSize.v ; lineheight = (**(ListHandle)m_macList).cellSize.v ;
topcell = (**m_macList).visible.top ; topcell = (**(ListHandle)m_macList).visible.top ;
#endif #endif
size_t nItem = ((size_t)event.GetY()) / lineheight + topcell ; size_t nItem = ((size_t)event.GetY()) / lineheight + topcell ;

View File

@@ -45,15 +45,15 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , -12345 , 0 , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , -12345 , 0 ,
kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ; kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ;
m_macPopUpMenuHandle = NewUniqueMenu() ; m_macPopUpMenuHandle = NewUniqueMenu() ;
SetControlData( m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ; SetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
SetControlMinimum( m_macControl , 0 ) ; SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( m_macControl , 0) ; SetControlMaximum( (ControlHandle) m_macControl , 0) ;
if ( n > 0 ) if ( n > 0 )
SetControlValue( m_macControl , 1 ) ; SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -72,12 +72,12 @@ int wxChoice::DoAppend(const wxString& item)
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false); wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ; AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ;
m_strings.Add( item ) ; m_strings.Add( item ) ;
m_datas.Add( NULL ) ; m_datas.Add( NULL ) ;
int index = m_strings.GetCount() - 1 ; int index = m_strings.GetCount() - 1 ;
DoSetItemClientData( index , NULL ) ; DoSetItemClientData( index , NULL ) ;
SetControlMaximum( m_macControl , GetCount()) ; SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
return index ; return index ;
} }
@@ -90,10 +90,10 @@ void wxChoice::Delete(int n)
delete GetClientObject(n); delete GetClientObject(n);
} }
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ; ::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1) ;
m_strings.Remove( n ) ; m_strings.Remove( n ) ;
m_datas.RemoveAt( n ) ; m_datas.RemoveAt( n ) ;
SetControlMaximum( m_macControl , GetCount()) ; SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
} }
void wxChoice::Clear() void wxChoice::Clear()
@@ -102,11 +102,11 @@ void wxChoice::Clear()
for ( int i = 0 ; i < GetCount() ; i++ ) for ( int i = 0 ; i < GetCount() ; i++ )
{ {
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ; ::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , 1 ) ;
} }
m_strings.Empty() ; m_strings.Empty() ;
m_datas.Empty() ; m_datas.Empty() ;
SetControlMaximum( m_macControl , 0 ) ; SetControlMaximum( (ControlHandle) m_macControl , 0 ) ;
} }
void wxChoice::Free() void wxChoice::Free()
@@ -127,12 +127,12 @@ void wxChoice::Free()
int wxChoice::GetSelection() const int wxChoice::GetSelection() const
{ {
return GetControlValue( m_macControl ) -1 ; return GetControlValue( (ControlHandle) m_macControl ) -1 ;
} }
void wxChoice::SetSelection(int n) void wxChoice::SetSelection(int n)
{ {
SetControlValue( m_macControl , n + 1 ) ; SetControlValue( (ControlHandle) m_macControl , n + 1 ) ;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -208,7 +208,7 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const
return (wxClientData *)DoGetItemClientData(n); return (wxClientData *)DoGetItemClientData(n);
} }
void wxChoice::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
event.SetInt(GetSelection()); event.SetInt(GetSelection());

View File

@@ -22,6 +22,8 @@
#include "wx/clipbrd.h" #include "wx/clipbrd.h"
#include "wx/intl.h" #include "wx/intl.h"
#include "wx/mac/private.h"
#define wxUSE_DATAOBJ 1 #define wxUSE_DATAOBJ 1
#include <string.h> #include <string.h>
@@ -254,7 +256,7 @@ bool wxClipboard::AddData( wxDataObject *data )
wxMetafileDataObject* metaFileDataObject = wxMetafileDataObject* metaFileDataObject =
(wxMetafileDataObject*) data; (wxMetafileDataObject*) data;
wxMetafile metaFile = metaFileDataObject->GetMetafile(); wxMetafile metaFile = metaFileDataObject->GetMetafile();
PicHandle pict = metaFile.GetHMETAFILE() ; PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ;
HLock( (Handle) pict ) ; HLock( (Handle) pict ) ;
#if !TARGET_CARBON #if !TARGET_CARBON
err = PutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; err = PutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ;

View File

@@ -20,6 +20,8 @@
IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog)
#endif #endif
#include "wx/mac/private.h"
/* /*
* wxColourDialog * wxColourDialog
*/ */
@@ -46,13 +48,13 @@ bool wxColourDialog::Create(wxWindow *parent, wxColourData *data)
int wxColourDialog::ShowModal() int wxColourDialog::ShowModal()
{ {
Point where ; Point where ;
RGBColor currentColor = m_colourData.dataColour.GetPixel() , newColor ; RGBColor currentColor = *((RGBColor*)m_colourData.dataColour.GetPixel()) , newColor ;
where.h = where.v = -1; where.h = where.v = -1;
if (GetColor( where, "\pSelect a new palette color.", &currentColor, &newColor )) if (GetColor( where, "\pSelect a new palette color.", &currentColor, &newColor ))
{ {
m_colourData.dataColour.Set( newColor ) ; m_colourData.dataColour.Set( (WXCOLORREF*) &newColor ) ;
return wxID_OK; return wxID_OK;
} }
else else

View File

@@ -22,9 +22,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject)
// Colour // Colour
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green ) ; #include "wx/mac/private.h"
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green )
static void wxComposeRGBColor( WXCOLORREF* color , int red, int blue, int green ) ;
static void wxComposeRGBColor( WXCOLORREF* color , int red, int blue, int green )
{ {
RGBColor* col = (RGBColor*) color ;
col->red = (red << 8) + red; col->red = (red << 8) + red;
col->blue = (blue << 8) + blue; col->blue = (blue << 8) + blue;
col->green = (green << 8) + green; col->green = (green << 8) + green;
@@ -55,7 +58,7 @@ wxColour::wxColour (const wxColour& col)
m_blue = col.m_blue; m_blue = col.m_blue;
m_isInit = col.m_isInit; m_isInit = col.m_isInit;
m_pixel = col.m_pixel; memcpy( &m_pixel , &col.m_pixel , 6 ) ;
} }
wxColour::wxColour (const wxColour* col) wxColour::wxColour (const wxColour* col)
@@ -65,7 +68,7 @@ wxColour::wxColour (const wxColour* col)
m_blue = col->m_blue; m_blue = col->m_blue;
m_isInit = col->m_isInit; m_isInit = col->m_isInit;
m_pixel = col->m_pixel; memcpy( &m_pixel , &col->m_pixel , 6 ) ;
} }
wxColour& wxColour::operator =(const wxColour& col) wxColour& wxColour::operator =(const wxColour& col)
@@ -75,7 +78,7 @@ wxColour& wxColour::operator =(const wxColour& col)
m_blue = col.m_blue; m_blue = col.m_blue;
m_isInit = col.m_isInit; m_isInit = col.m_isInit;
m_pixel = col.m_pixel; memcpy( &m_pixel , &col.m_pixel , 6 ) ;
return *this; return *this;
} }
@@ -114,3 +117,12 @@ void wxColour::Set (unsigned char r, unsigned char g, unsigned char b)
wxComposeRGBColor( &m_pixel , m_red , m_blue , m_green ) ; wxComposeRGBColor( &m_pixel , m_red , m_blue , m_green ) ;
} }
void wxColour::Set( const WXCOLORREF* color )
{
RGBColor* col = (RGBColor*) color ;
memcpy( &m_pixel , color , 6 ) ;
m_red = col->red>>8 ;
m_blue = col->blue>>8 ;
m_green = col->green>>8 ;
}

View File

@@ -47,20 +47,20 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , -12345 , 0, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , -12345 , 0,
kControlPopupButtonProc , (long) this ) ; kControlPopupButtonProc , (long) this ) ;
m_macPopUpMenuHandle = NewUniqueMenu() ; m_macPopUpMenuHandle = NewUniqueMenu() ;
SetControlData( m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ; SetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
for ( int i = 0 ; i < n ; i++ ) for ( int i = 0 ; i < n ; i++ )
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , choices[i] ,false); wxMenuItem::MacBuildMenuString( label , NULL , NULL , choices[i] ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ; AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
} }
SetControlMinimum( m_macControl , 0 ) ; SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
SetControlValue( m_macControl , 1 ) ; SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -139,37 +139,37 @@ void wxComboBox::Append(const wxString& item)
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false); wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ; AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
m_noStrings ++; m_noStrings ++;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
} }
void wxComboBox::Delete(int n) void wxComboBox::Delete(int n)
{ {
wxASSERT( n < m_noStrings ) ; wxASSERT( n < m_noStrings ) ;
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ; ::DeleteMenuItem( (MenuHandle) m_macPopUpMenuHandle , n + 1) ;
m_noStrings --; m_noStrings --;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
} }
void wxComboBox::Clear() void wxComboBox::Clear()
{ {
for ( int i = 0 ; i < m_noStrings ; i++ ) for ( int i = 0 ; i < m_noStrings ; i++ )
{ {
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ; ::DeleteMenuItem((MenuHandle) m_macPopUpMenuHandle , 1 ) ;
} }
m_noStrings = 0; m_noStrings = 0;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
} }
int wxComboBox::GetSelection() const int wxComboBox::GetSelection() const
{ {
return GetControlValue( m_macControl ) -1 ; return GetControlValue( (ControlHandle) m_macControl ) -1 ;
} }
void wxComboBox::SetSelection(int n) void wxComboBox::SetSelection(int n)
{ {
SetControlValue( m_macControl , n + 1 ) ; SetControlValue( (ControlHandle) m_macControl , n + 1 ) ;
} }
int wxComboBox::FindString(const wxString& s) const int wxComboBox::FindString(const wxString& s) const
@@ -186,7 +186,7 @@ wxString wxComboBox::GetString(int n) const
{ {
Str255 p_text ; Str255 p_text ;
char c_text[255]; char c_text[255];
::GetMenuItemText( m_macPopUpMenuHandle , n+1 , p_text ) ; ::GetMenuItemText( (MenuHandle) m_macPopUpMenuHandle , n+1 , p_text ) ;
#if TARGET_CARBON #if TARGET_CARBON
p2cstrcpy( c_text, p_text ) ; p2cstrcpy( c_text, p_text ) ;
#else #else
@@ -217,7 +217,7 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
return FALSE; return FALSE;
} }
void wxComboBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxComboBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId ); wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
event.SetInt(GetSelection()); event.SetInt(GetSelection());

View File

@@ -110,9 +110,9 @@ wxControl::~wxControl()
if (parent->GetDefaultItem() == (wxButton*) this) if (parent->GetDefaultItem() == (wxButton*) this)
parent->SetDefaultItem(NULL); parent->SetDefaultItem(NULL);
} }
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
::DisposeControl( m_macControl ) ; ::DisposeControl( (ControlHandle) m_macControl ) ;
m_macControl = NULL ; m_macControl = NULL ;
} }
} }
@@ -121,7 +121,7 @@ void wxControl::SetLabel(const wxString& title)
{ {
m_label = title ; m_label = title ;
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
Str255 maclabel ; Str255 maclabel ;
wxString label ; wxString label ;
@@ -137,7 +137,7 @@ void wxControl::SetLabel(const wxString& title)
strcpy( (char *) maclabel , label ) ; strcpy( (char *) maclabel , label ) ;
c2pstr( (char *) maclabel ) ; c2pstr( (char *) maclabel ) ;
#endif #endif
::SetControlTitle( m_macControl , maclabel ) ; ::SetControlTitle( (ControlHandle) m_macControl , maclabel ) ;
} }
Refresh() ; Refresh() ;
} }
@@ -147,7 +147,7 @@ wxSize wxControl::DoGetBestSize() const
Rect bestsize = { 0 , 0 , 0 , 0 } ; Rect bestsize = { 0 , 0 , 0 , 0 } ;
short baselineoffset ; short baselineoffset ;
int bestWidth, bestHeight ; int bestWidth, bestHeight ;
::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ;
if ( EmptyRect( &bestsize ) ) if ( EmptyRect( &bestsize ) )
{ {
@@ -239,7 +239,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, long style, const wxSize& size, long style,
const wxValidator& validator, const wxValidator& validator,
const wxString& name , Rect *outBounds , StringPtr maclabel ) const wxString& name , WXRECTPTR outBounds , unsigned char* maclabel )
{ {
m_label = label ; m_label = label ;
SetName(name); SetName(name);
@@ -264,10 +264,10 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l
m_x = pos.x ; m_x = pos.x ;
m_y = pos.y ; m_y = pos.y ;
outBounds->top = -10; ((Rect*)outBounds)->top = -10;
outBounds->left = -10; ((Rect*)outBounds)->left = -10;
outBounds->bottom = 0; ((Rect*)outBounds)->bottom = 0;
outBounds->right = 0; ((Rect*)outBounds)->right = 0;
char c_text[255]; char c_text[255];
strcpy( c_text , label ) ; strcpy( c_text , label ) ;
@@ -286,7 +286,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l
void wxControl::MacPostControlCreate() void wxControl::MacPostControlCreate()
{ {
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
if ( IsKindOf( CLASSINFO( wxScrollBar ) ) ) if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )
{ {
@@ -298,7 +298,7 @@ void wxControl::MacPostControlCreate()
controlstyle.flags = kControlUseFontMask ; controlstyle.flags = kControlUseFontMask ;
controlstyle.font = kControlFontSmallBoldSystemFont ; controlstyle.font = kControlFontSmallBoldSystemFont ;
::SetControlFontStyle( m_macControl , &controlstyle ) ; ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ;
} }
else else
{ {
@@ -306,14 +306,14 @@ void wxControl::MacPostControlCreate()
controlstyle.flags = kControlUseFontMask ; controlstyle.flags = kControlUseFontMask ;
controlstyle.font = kControlFontSmallSystemFont ; controlstyle.font = kControlFontSmallSystemFont ;
::SetControlFontStyle( m_macControl , &controlstyle ) ; ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ;
} }
ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; ControlHandle container = (ControlHandle) GetParent()->MacGetContainerForEmbedding() ;
wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ; wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ;
::EmbedControl( m_macControl , container ) ; ::EmbedControl( (ControlHandle) m_macControl , container ) ;
m_macControlIsShown = true ; m_macControlIsShown = true ;
wxAssociateControlWithMacControl( m_macControl , this ) ; wxAssociateControlWithMacControl( (ControlHandle) m_macControl , this ) ;
// Adjust the controls size and position // Adjust the controls size and position
@@ -332,19 +332,19 @@ void wxControl::MacPostControlCreate()
SetSize(pos.x, pos.y, new_size.x, new_size.y); SetSize(pos.x, pos.y, new_size.x, new_size.y);
UMAShowControl( m_macControl ) ; UMAShowControl( (ControlHandle) m_macControl ) ;
Refresh() ; Refresh() ;
} }
void wxControl::MacAdjustControlRect() void wxControl::MacAdjustControlRect()
{ {
wxASSERT_MSG( m_macControl != NULL , wxT("No valid mac control") ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
if ( m_width == -1 || m_height == -1 ) if ( m_width == -1 || m_height == -1 )
{ {
Rect bestsize = { 0 , 0 , 0 , 0 } ; Rect bestsize = { 0 , 0 , 0 , 0 } ;
short baselineoffset ; short baselineoffset ;
::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ;
if ( EmptyRect( &bestsize ) ) if ( EmptyRect( &bestsize ) )
{ {
@@ -388,10 +388,11 @@ void wxControl::MacAdjustControlRect()
m_height += 2 * m_macVerticalBorder; m_height += 2 * m_macVerticalBorder;
} }
UMASizeControl( m_macControl , m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ; UMASizeControl( (ControlHandle) m_macControl , m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ;
} }
} }
ControlHandle wxControl::MacGetContainerForEmbedding()
WXWidget wxControl::MacGetContainerForEmbedding()
{ {
if ( m_macControl ) if ( m_macControl )
return m_macControl ; return m_macControl ;
@@ -401,17 +402,17 @@ ControlHandle wxControl::MacGetContainerForEmbedding()
void wxControl::MacSuperChangedPosition() void wxControl::MacSuperChangedPosition()
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
Rect contrlRect ; Rect contrlRect ;
GetControlBounds( m_macControl , &contrlRect ) ; GetControlBounds( (ControlHandle) m_macControl , &contrlRect ) ;
int former_mac_x = contrlRect.left ; int former_mac_x = contrlRect.left ;
int former_mac_y = contrlRect.top ; int former_mac_y = contrlRect.top ;
int mac_x = m_x ; int mac_x = m_x ;
int mac_y = m_y ; int mac_y = m_y ;
GetParent()->MacWindowToRootWindow( & mac_x , & mac_y ) ; GetParent()->MacWindowToRootWindow( & mac_x , & mac_y ) ;
WindowRef rootwindow = MacGetRootWindow() ; WindowRef rootwindow = (WindowRef) MacGetRootWindow() ;
if ( mac_x + m_macHorizontalBorder != former_mac_x || if ( mac_x + m_macHorizontalBorder != former_mac_x ||
mac_y + m_macVerticalBorder != former_mac_y ) mac_y + m_macVerticalBorder != former_mac_y )
@@ -420,7 +421,7 @@ void wxControl::MacSuperChangedPosition()
Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ; Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ;
InvalWindowRect( rootwindow , &inval ) ; InvalWindowRect( rootwindow , &inval ) ;
} }
UMAMoveControl( m_macControl , mac_x + m_macHorizontalBorder , mac_y + m_macVerticalBorder ) ; UMAMoveControl( (ControlHandle) m_macControl , mac_x + m_macHorizontalBorder , mac_y + m_macVerticalBorder ) ;
{ {
Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ; Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ;
InvalWindowRect( rootwindow , &inval ) ; InvalWindowRect( rootwindow , &inval ) ;
@@ -439,13 +440,13 @@ void wxControl::MacSuperEnabled( bool enabled )
void wxControl::MacSuperShown( bool show ) void wxControl::MacSuperShown( bool show )
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
if ( !show ) if ( !show )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
{ {
::UMAHideControl( m_macControl ) ; ::UMAHideControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = false ; m_macControlIsShown = false ;
} }
} }
@@ -453,7 +454,7 @@ void wxControl::MacSuperShown( bool show )
{ {
if ( MacIsReallyShown() && !m_macControlIsShown ) if ( MacIsReallyShown() && !m_macControlIsShown )
{ {
::UMAShowControl( m_macControl ) ; ::UMAShowControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = true ; m_macControlIsShown = true ;
} }
} }
@@ -466,7 +467,7 @@ void wxControl::DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags ) int sizeFlags )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
{ {
wxWindow::DoSetSize( x , y ,width , height ,sizeFlags ) ; wxWindow::DoSetSize( x , y ,width , height ,sizeFlags ) ;
return ; return ;
@@ -515,7 +516,7 @@ void wxControl::DoSetSize(int x, int y,
if(GetParent()) { if(GetParent()) {
GetParent()->MacWindowToRootWindow(&mac_x, &mac_y); GetParent()->MacWindowToRootWindow(&mac_x, &mac_y);
} }
GetControlBounds(m_macControl, &oldbounds); GetControlBounds( (ControlHandle) m_macControl, &oldbounds);
oldbounds.right = oldbounds.left + m_width; oldbounds.right = oldbounds.left + m_width;
oldbounds.bottom = oldbounds.top + m_height; oldbounds.bottom = oldbounds.top + m_height;
@@ -556,7 +557,7 @@ void wxControl::DoSetSize(int x, int y,
m_x = new_x; m_x = new_x;
m_y = new_y; m_y = new_y;
UMAMoveControl(m_macControl, UMAMoveControl( (ControlHandle) m_macControl,
mac_x + m_macHorizontalBorder, mac_y + m_macVerticalBorder); mac_x + m_macHorizontalBorder, mac_y + m_macVerticalBorder);
wxMoveEvent event(wxPoint(m_x, m_y), m_windowId); wxMoveEvent event(wxPoint(m_x, m_y), m_windowId);
@@ -568,7 +569,7 @@ void wxControl::DoSetSize(int x, int y,
m_width = new_width; m_width = new_width;
m_height = new_height; m_height = new_height;
UMASizeControl( m_macControl, UMASizeControl( (ControlHandle) m_macControl,
m_width - 2 * m_macHorizontalBorder, m_width - 2 * m_macHorizontalBorder,
m_height - 2 * m_macVerticalBorder ) ; m_height - 2 * m_macVerticalBorder ) ;
@@ -587,13 +588,13 @@ bool wxControl::Show(bool show)
if ( !wxWindow::Show( show ) ) if ( !wxWindow::Show( show ) )
return FALSE ; return FALSE ;
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
if ( !show ) if ( !show )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
{ {
::UMAHideControl( m_macControl ) ; ::UMAHideControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = false ; m_macControlIsShown = false ;
} }
} }
@@ -601,7 +602,7 @@ bool wxControl::Show(bool show)
{ {
if ( MacIsReallyShown() && !m_macControlIsShown ) if ( MacIsReallyShown() && !m_macControlIsShown )
{ {
::UMAShowControl( m_macControl ) ; ::UMAShowControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = true ; m_macControlIsShown = true ;
} }
} }
@@ -614,12 +615,12 @@ bool wxControl::Enable(bool enable)
if ( !wxWindow::Enable(enable) ) if ( !wxWindow::Enable(enable) )
return FALSE; return FALSE;
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
if ( enable ) if ( enable )
UMAActivateControl( m_macControl ) ; UMAActivateControl( (ControlHandle) m_macControl ) ;
else else
UMADeactivateControl( m_macControl ) ; UMADeactivateControl( (ControlHandle) m_macControl ) ;
} }
return TRUE ; return TRUE ;
} }
@@ -631,7 +632,7 @@ void wxControl::Refresh(bool eraseBack, const wxRect *rect)
void wxControl::MacRedrawControl() void wxControl::MacRedrawControl()
{ {
if ( m_macControl && MacGetRootWindow() ) if ( (ControlHandle) m_macControl && MacGetRootWindow() )
{ {
wxClientDC dc(this) ; wxClientDC dc(this) ;
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
@@ -643,13 +644,13 @@ void wxControl::MacRedrawControl()
Rect r = { 0 , 0 , 32000 , 32000 } ; Rect r = { 0 , 0 , 32000 , 32000 } ;
ClipRect( &r ) ; ClipRect( &r ) ;
wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ; wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ;
UMADrawControl( m_macControl ) ; UMADrawControl( (ControlHandle) m_macControl ) ;
} }
} }
void wxControl::OnPaint(wxPaintEvent& event) void wxControl::OnPaint(wxPaintEvent& event)
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
wxPaintDC dc(this) ; wxPaintDC dc(this) ;
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
@@ -661,7 +662,7 @@ void wxControl::OnPaint(wxPaintEvent& event)
ClipRect( &r ) ; ClipRect( &r ) ;
wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ; wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ;
UMADrawControl( m_macControl ) ; UMADrawControl( (ControlHandle) m_macControl ) ;
} }
else else
{ {
@@ -676,21 +677,21 @@ void wxControl::OnEraseBackground(wxEraseEvent& event)
void wxControl::OnKeyDown( wxKeyEvent &event ) void wxControl::OnKeyDown( wxKeyEvent &event )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
return ; return ;
EventRecord *ev = wxTheApp->MacGetCurrentEvent() ; EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ;
short keycode ; short keycode ;
short keychar ; short keychar ;
keychar = short(ev->message & charCodeMask); keychar = short(ev->message & charCodeMask);
keycode = short(ev->message & keyCodeMask) >> 8 ; keycode = short(ev->message & keyCodeMask) >> 8 ;
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; ::HandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers ) ;
} }
void wxControl::OnMouseEvent( wxMouseEvent &event ) void wxControl::OnMouseEvent( wxMouseEvent &event )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
{ {
event.Skip() ; event.Skip() ;
return ; return ;
@@ -707,7 +708,7 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
ControlHandle control ; ControlHandle control ;
Point localwhere ; Point localwhere ;
SInt16 controlpart ; SInt16 controlpart ;
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
localwhere.h = x ; localwhere.h = x ;
localwhere.v = y ; localwhere.v = y ;
@@ -742,7 +743,7 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
SetFocus() ; SetFocus() ;
} }
*/ */
control = m_macControl ; control = (ControlHandle) m_macControl ;
if ( control && ::IsControlActive( control ) ) if ( control && ::IsControlActive( control ) )
{ {
{ {
@@ -762,15 +763,15 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
bool wxControl::MacCanFocus() const bool wxControl::MacCanFocus() const
{ {
{ if ( m_macControl == NULL ) { if ( (ControlHandle) m_macControl == NULL )
return true ; return true ;
else else
return false ; return false ;
} }
} }
void wxControl::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
} }

View File

@@ -15,6 +15,7 @@
#include "wx/cursor.h" #include "wx/cursor.h"
#include "wx/icon.h" #include "wx/icon.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
@@ -195,8 +196,8 @@ void wxCursor::MacInstall() const
{ {
if ( m_refData && M_CURSORDATA->m_hCursor ) if ( m_refData && M_CURSORDATA->m_hCursor )
{ {
::SetCursor( *M_CURSORDATA->m_hCursor ) ; ::SetCursor( *((CursHandle)M_CURSORDATA->m_hCursor) ) ;
gMacCurrentCursor = M_CURSORDATA->m_hCursor ; gMacCurrentCursor = (CursHandle)M_CURSORDATA->m_hCursor ;
} }
else else
{ {

View File

@@ -33,6 +33,7 @@
#include "wx/dataobj.h" #include "wx/dataobj.h"
#include "wx/mstream.h" #include "wx/mstream.h"
#include "wx/image.h" #include "wx/image.h"
#include "wx/mac/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// functions // functions

View File

@@ -20,6 +20,8 @@
#include "wx/region.h" #include "wx/region.h"
#include "wx/image.h" #include "wx/image.h"
#include "wx/mac/private.h"
#if __MSL__ >= 0x6000 #if __MSL__ >= 0x6000
#include "math.h" #include "math.h"
#endif #endif
@@ -42,6 +44,10 @@ IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
const double M_PI = 3.14159265358979 ; const double M_PI = 3.14159265358979 ;
#endif #endif
const double RAD2DEG = 180.0 / M_PI; const double RAD2DEG = 180.0 / M_PI;
const short kEmulatedMode = -1 ;
const short kUnsupportedMode = -2 ;
#define wxMAC_EXPERIMENTAL_PATTERN 0
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Local functions // Local functions
@@ -55,6 +61,95 @@ static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; }
// wxDC // wxDC
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// this function emulates all wx colour manipulations, used to verify the implementation
// by setting the mode in the blitting functions to kEmulatedMode
void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor ) ;
void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor )
{
switch ( logical_func )
{
case wxAND: // src AND dst
dstColor.red = dstColor.red & srcColor.red ;
dstColor.green = dstColor.green & srcColor.green ;
dstColor.blue = dstColor.blue & srcColor.blue ;
break ;
case wxAND_INVERT: // (NOT src) AND dst
dstColor.red = dstColor.red & ~srcColor.red ;
dstColor.green = dstColor.green & ~srcColor.green ;
dstColor.blue = dstColor.blue & ~srcColor.blue ;
break ;
case wxAND_REVERSE:// src AND (NOT dst)
dstColor.red = ~dstColor.red & srcColor.red ;
dstColor.green = ~dstColor.green & srcColor.green ;
dstColor.blue = ~dstColor.blue & srcColor.blue ;
break ;
case wxCLEAR: // 0
dstColor.red = 0 ;
dstColor.green = 0 ;
dstColor.blue = 0 ;
break ;
case wxCOPY: // src
dstColor.red = srcColor.red ;
dstColor.green = srcColor.green ;
dstColor.blue = srcColor.blue ;
break ;
case wxEQUIV: // (NOT src) XOR dst
dstColor.red = dstColor.red ^ ~srcColor.red ;
dstColor.green = dstColor.green ^ ~srcColor.green ;
dstColor.blue = dstColor.blue ^ ~srcColor.blue ;
break ;
case wxINVERT: // NOT dst
dstColor.red = ~dstColor.red ;
dstColor.green = ~dstColor.green ;
dstColor.blue = ~dstColor.blue ;
break ;
case wxNAND: // (NOT src) OR (NOT dst)
dstColor.red = ~dstColor.red | ~srcColor.red ;
dstColor.green = ~dstColor.green | ~srcColor.green ;
dstColor.blue = ~dstColor.blue | ~srcColor.blue ;
break ;
case wxNOR: // (NOT src) AND (NOT dst)
dstColor.red = ~dstColor.red & ~srcColor.red ;
dstColor.green = ~dstColor.green & ~srcColor.green ;
dstColor.blue = ~dstColor.blue & ~srcColor.blue ;
break ;
case wxNO_OP: // dst
break ;
case wxOR: // src OR dst
dstColor.red = dstColor.red | srcColor.red ;
dstColor.green = dstColor.green | srcColor.green ;
dstColor.blue = dstColor.blue | srcColor.blue ;
break ;
case wxOR_INVERT: // (NOT src) OR dst
dstColor.red = dstColor.red | ~srcColor.red ;
dstColor.green = dstColor.green | ~srcColor.green ;
dstColor.blue = dstColor.blue | ~srcColor.blue ;
break ;
case wxOR_REVERSE: // src OR (NOT dst)
dstColor.red = ~dstColor.red | srcColor.red ;
dstColor.green = ~dstColor.green | srcColor.green ;
dstColor.blue = ~dstColor.blue | srcColor.blue ;
break ;
case wxSET: // 1
dstColor.red = 0xFFFF ;
dstColor.green = 0xFFFF ;
dstColor.blue = 0xFFFF ;
break ;
case wxSRC_INVERT: // (NOT src)
dstColor.red = ~srcColor.red ;
dstColor.green = ~srcColor.green ;
dstColor.blue = ~srcColor.blue ;
break ;
case wxXOR: // src XOR dst
dstColor.red = dstColor.red ^ srcColor.red ;
dstColor.green = dstColor.green ^ srcColor.green ;
dstColor.blue = dstColor.blue ^ srcColor.blue ;
break ;
}
}
wxDC::wxDC() wxDC::wxDC()
{ {
m_ok = FALSE; m_ok = FALSE;
@@ -78,9 +173,6 @@ wxDC::wxDC()
m_needComputeScaleX = FALSE; m_needComputeScaleX = FALSE;
m_needComputeScaleY = FALSE; m_needComputeScaleY = FALSE;
m_maxX = m_maxY = -100000;
m_minY = m_minY = 100000;
m_macPort = NULL ; m_macPort = NULL ;
m_macMask = NULL ; m_macMask = NULL ;
m_ok = FALSE ; m_ok = FALSE ;
@@ -89,19 +181,19 @@ wxDC::wxDC()
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
m_macPenInstalled = false ; m_macPenInstalled = false ;
m_macLocalOrigin.h = m_macLocalOrigin.v = 0 ; m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ;
m_macBoundaryClipRgn = NewRgn() ; m_macBoundaryClipRgn = NewRgn() ;
m_macCurrentClipRgn = NewRgn() ; m_macCurrentClipRgn = NewRgn() ;
SetRectRgn( m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ; SetRectRgn( (RgnHandle) m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
m_pen = *wxBLACK_PEN; m_pen = *wxBLACK_PEN;
m_font = *wxNORMAL_FONT; m_font = *wxNORMAL_FONT;
m_brush = *wxWHITE_BRUSH; m_brush = *wxWHITE_BRUSH;
} }
wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
m_ph( dc->m_macPort ) m_ph( (GrafPtr) dc->m_macPort )
{ {
wxASSERT( dc->Ok() ) ; wxASSERT( dc->Ok() ) ;
@@ -114,12 +206,12 @@ wxMacPortSetter::~wxMacPortSetter()
wxDC::~wxDC(void) wxDC::~wxDC(void)
{ {
DisposeRgn( m_macBoundaryClipRgn ) ; DisposeRgn( (RgnHandle) m_macBoundaryClipRgn ) ;
DisposeRgn( m_macCurrentClipRgn ) ; DisposeRgn( (RgnHandle) m_macCurrentClipRgn ) ;
} }
void wxDC::MacSetupPort(AGAPortHelper* help) const void wxDC::MacSetupPort(wxMacPortStateHelper* help) const
{ {
SetClip( m_macCurrentClipRgn); SetClip( (RgnHandle) m_macCurrentClipRgn);
m_macFontInstalled = false ; m_macFontInstalled = false ;
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
@@ -159,18 +251,18 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( bmp.GetBitmapType() == kMacBitmapTypePict ) { if ( bmp.GetBitmapType() == kMacBitmapTypePict ) {
Rect bitmaprect = { 0 , 0 , hh, ww }; Rect bitmaprect = { 0 , 0 , hh, ww };
::OffsetRect( &bitmaprect, xx, yy ) ; ::OffsetRect( &bitmaprect, xx, yy ) ;
::DrawPicture( bmp.GetPict(), &bitmaprect ) ; ::DrawPicture( (PicHandle) bmp.GetPict(), &bitmaprect ) ;
} }
else if ( bmp.GetBitmapType() == kMacBitmapTypeGrafWorld ) else if ( bmp.GetBitmapType() == kMacBitmapTypeGrafWorld )
{ {
GWorldPtr bmapworld = bmp.GetHBITMAP(); GWorldPtr bmapworld = MAC_WXHBITMAP( bmp.GetHBITMAP() );
PixMapHandle bmappixels ; PixMapHandle bmappixels ;
// Set foreground and background colours (for bitmaps depth = 1) // Set foreground and background colours (for bitmaps depth = 1)
if(bmp.GetDepth() == 1) if(bmp.GetDepth() == 1)
{ {
RGBColor fore = m_textForegroundColour.GetPixel(); RGBColor fore = MAC_WXCOLORREF(m_textForegroundColour.GetPixel());
RGBColor back = m_textBackgroundColour.GetPixel(); RGBColor back = MAC_WXCOLORREF(m_textBackgroundColour.GetPixel());
RGBForeColor(&fore); RGBForeColor(&fore);
RGBBackColor(&back); RGBBackColor(&back);
} }
@@ -192,21 +284,21 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( useMask && bmp.GetMask() ) if ( useMask && bmp.GetMask() )
{ {
if( LockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap()))) if( LockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap()))))
{ {
CopyDeepMask CopyDeepMask
( (
GetPortBitMapForCopyBits(bmapworld), GetPortBitMapForCopyBits(bmapworld),
GetPortBitMapForCopyBits(bmp.GetMask()->GetMaskBitmap()), GetPortBitMapForCopyBits(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())),
GetPortBitMapForCopyBits( m_macPort ), GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &source, &dest, mode, NULL &source, &source, &dest, mode, NULL
); );
UnlockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap())); UnlockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())));
} }
} }
else { else {
CopyBits( GetPortBitMapForCopyBits( bmapworld ), CopyBits( GetPortBitMapForCopyBits( bmapworld ),
GetPortBitMapForCopyBits( m_macPort ), GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &dest, mode, NULL ) ; &source, &dest, mode, NULL ) ;
} }
UnlockPixels( bmappixels ) ; UnlockPixels( bmappixels ) ;
@@ -215,7 +307,7 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
{ {
Rect bitmaprect = { 0 , 0 , bmp.GetHeight(), bmp.GetWidth() } ; Rect bitmaprect = { 0 , 0 , bmp.GetHeight(), bmp.GetWidth() } ;
OffsetRect( &bitmaprect, xx, yy ) ; OffsetRect( &bitmaprect, xx, yy ) ;
PlotCIconHandle( &bitmaprect , atNone , ttNone , bmp.GetHICON() ) ; PlotCIconHandle( &bitmaprect , atNone , ttNone , MAC_WXHICON(bmp.GetHICON()) ) ;
} }
m_macPenInstalled = false ; m_macPenInstalled = false ;
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
@@ -241,8 +333,8 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
ww = XLOG2DEVREL(width); ww = XLOG2DEVREL(width);
hh = YLOG2DEVREL(height); hh = YLOG2DEVREL(height);
SetRectRgn( m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ; SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
SectRgn( m_macCurrentClipRgn , m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
if( m_clipping ) if( m_clipping )
{ {
@@ -290,12 +382,12 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
} }
else else
{ {
CopyRgn( region.GetWXHRGN() , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) region.GetWXHRGN() , (RgnHandle) m_macCurrentClipRgn ) ;
if ( xx != x || yy != y ) if ( xx != x || yy != y )
{ {
OffsetRgn( m_macCurrentClipRgn , xx - x , yy - y ) ; OffsetRgn( (RgnHandle) m_macCurrentClipRgn , xx - x , yy - y ) ;
} }
SectRgn( m_macCurrentClipRgn , m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
if( m_clipping ) if( m_clipping )
{ {
m_clipX1 = wxMax( m_clipX1 , xx ); m_clipX1 = wxMax( m_clipX1 , xx );
@@ -318,7 +410,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
void wxDC::DestroyClippingRegion() void wxDC::DestroyClippingRegion()
{ {
wxMacPortSetter helper(this) ; wxMacPortSetter helper(this) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_clipping = FALSE; m_clipping = FALSE;
} }
void wxDC::DoGetSize( int* width, int* height ) const void wxDC::DoGetSize( int* width, int* height ) const
@@ -418,15 +510,8 @@ void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp )
m_signX = (xLeftRight ? 1 : -1); m_signX = (xLeftRight ? 1 : -1);
m_signY = (yBottomUp ? -1 : 1); m_signY = (yBottomUp ? -1 : 1);
ComputeScaleAndOrigin(); ComputeScaleAndOrigin();
}/* }
void wxDC::CalcBoundingBox( long x, long y )
{
if (x < m_minX) m_minX = x;
if (y < m_minY) m_minY = y;
if (x > m_maxX) m_maxX = x;
if (y > m_maxY) m_maxY = y;
}*/
wxSize wxDC::GetPPI() const wxSize wxDC::GetPPI() const
{ {
return wxSize(72, 72); return wxSize(72, 72);
@@ -787,13 +872,19 @@ void wxDC::DoDrawPolygon(int n, wxPoint points[],
y1 = YLOG2DEVMAC(points[0].y + yoffset); y1 = YLOG2DEVMAC(points[0].y + yoffset);
::MoveTo(x1,y1); ::MoveTo(x1,y1);
for (int i = 0; i < n-1; i++) for (int i = 1; i < n; i++)
{ {
x2 = XLOG2DEVMAC(points[i+1].x + xoffset); x2 = XLOG2DEVMAC(points[i].x + xoffset);
y2 = YLOG2DEVMAC(points[i+1].y + yoffset); y2 = YLOG2DEVMAC(points[i].y + yoffset);
::LineTo(x2, y2); ::LineTo(x2, y2);
} }
// close the polyline if necessary
if ( x1 != x2 || y1 != y2 )
{
::LineTo(x1,y1 ) ;
}
ClosePoly(); ClosePoly();
if (m_brush.GetStyle() != wxTRANSPARENT) if (m_brush.GetStyle() != wxTRANSPARENT)
@@ -959,82 +1050,222 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
{ {
wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc")); wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc"));
wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC")); wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC"));
wxMacPortSetter helper(this) ;
if ( logical_func == wxNO_OP )
return TRUE ;
/* TODO: use the mask origin when drawing transparently */
if (xsrcMask == -1 && ysrcMask == -1) if (xsrcMask == -1 && ysrcMask == -1)
{ {
xsrcMask = xsrc; ysrcMask = ysrc; xsrcMask = xsrc; ysrcMask = ysrc;
} }
// correct the parameter in case this dc does not have a mask at all
if ( useMask && !source->m_macMask )
useMask = false ;
Rect srcrect , dstrect ;
srcrect.top = source->YLOG2DEVMAC(ysrc) ;
srcrect.left = source->XLOG2DEVMAC(xsrc) ;
srcrect.right = source->XLOG2DEVMAC(xsrc + width ) ;
srcrect.bottom = source->YLOG2DEVMAC(ysrc + height) ;
dstrect.top = YLOG2DEVMAC(ydest) ;
dstrect.left = XLOG2DEVMAC(xdest) ;
dstrect.bottom = YLOG2DEVMAC(ydest + height ) ;
dstrect.right = XLOG2DEVMAC(xdest + width ) ;
short mode = kUnsupportedMode ;
bool invertDestinationFirst = false ;
switch ( logical_func )
{
case wxAND: // src AND dst
mode = srcOr ; // ok
break ;
case wxAND_INVERT: // (NOT src) AND dst
mode = notSrcOr ; // ok
break ;
case wxAND_REVERSE:// src AND (NOT dst)
invertDestinationFirst = true ;
mode = srcOr ;
break ;
case wxCLEAR: // 0
mode = kEmulatedMode ;
break ;
case wxCOPY: // src
mode = srcCopy ; // ok
break ;
case wxEQUIV: // (NOT src) XOR dst
mode = srcXor ; // ok
break ;
case wxINVERT: // NOT dst
mode = kEmulatedMode ; //or hilite ;
break ;
case wxNAND: // (NOT src) OR (NOT dst)
invertDestinationFirst = true ;
mode = srcBic ;
break ;
case wxNOR: // (NOT src) AND (NOT dst)
invertDestinationFirst = true ;
mode = notSrcOr ;
break ;
case wxNO_OP: // dst
mode = kEmulatedMode ; // this has already been handled upon entry
break ;
case wxOR: // src OR dst
mode = notSrcBic ;
break ;
case wxOR_INVERT: // (NOT src) OR dst
mode = srcBic ;
break ;
case wxOR_REVERSE: // src OR (NOT dst)
invertDestinationFirst = true ;
mode = notSrcBic ;
break ;
case wxSET: // 1
mode = kEmulatedMode ;
break ;
case wxSRC_INVERT: // (NOT src)
mode = notSrcCopy ; // ok
break ;
case wxXOR: // src XOR dst
mode = notSrcXor ; // ok
break ;
default :
break ;
}
if ( mode == kUnsupportedMode )
{
wxFAIL_MSG("unsupported blitting mode" )
return FALSE ;
}
CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ; CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ;
PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ; PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ;
RGBColor white = { 0xFFFF, 0xFFFF,0xFFFF} ;
RGBColor black = { 0,0,0} ;
RGBColor forecolor = m_textForegroundColour.GetPixel();
RGBColor backcolor = m_textBackgroundColour.GetPixel();
RGBForeColor( &forecolor ) ;
RGBBackColor( &backcolor ) ;
if ( LockPixels(bmappixels) ) if ( LockPixels(bmappixels) )
{ {
Rect srcrect , dstrect ; wxMacPortSetter helper(this) ;
srcrect.top = source->YLOG2DEVMAC(ysrc) ; RGBColor tempColor ;
srcrect.left = source->XLOG2DEVMAC(xsrc) ;
srcrect.right = source->XLOG2DEVMAC(xsrc + width ) ; if ( source->GetDepth() == 1 )
srcrect.bottom = source->YLOG2DEVMAC(ysrc + height) ; {
dstrect.top = YLOG2DEVMAC(ydest) ; RGBForeColor( &MAC_WXCOLORREF(m_textForegroundColour.GetPixel()) ) ;
dstrect.left = XLOG2DEVMAC(xdest) ; RGBBackColor( &MAC_WXCOLORREF(m_textBackgroundColour.GetPixel()) ) ;
dstrect.bottom = YLOG2DEVMAC(ydest + height ) ; }
dstrect.right = XLOG2DEVMAC(xdest + width ) ; else
{
short mode = (logical_func == wxCOPY ? srcCopy : // the modes need this, otherwise we'll end up having really nice colors...
// logical_func == wxCLEAR ? WHITENESS : RGBColor white = { 0xFFFF, 0xFFFF,0xFFFF} ;
// logical_func == wxSET ? BLACKNESS : RGBColor black = { 0,0,0} ;
logical_func == wxINVERT ? hilite : RGBForeColor( &black ) ;
// logical_func == wxAND ? MERGECOPY : RGBBackColor( &white ) ;
logical_func == wxOR ? srcOr : }
logical_func == wxSRC_INVERT ? notSrcCopy :
logical_func == wxXOR ? srcXor :
// logical_func == wxOR_REVERSE ? MERGEPAINT :
// logical_func == wxAND_REVERSE ? SRCERASE :
// logical_func == wxSRC_OR ? srcOr :
// logical_func == wxSRC_AND ? SRCAND :
srcCopy );
if ( useMask && source->m_macMask ) if ( useMask && source->m_macMask )
{ {
if ( mode == srcCopy ) if ( mode == srcCopy )
{ {
if ( LockPixels( GetGWorldPixMap( source->m_macMask ) ) ) if ( LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) )
{ {
CopyMask( GetPortBitMapForCopyBits( sourcePort ) , CopyMask( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( source->m_macMask ) , GetPortBitMapForCopyBits( MAC_WXHBITMAP(source->m_macMask) ) ,
GetPortBitMapForCopyBits( m_macPort ) , GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &srcrect , &dstrect ) ; &srcrect, &srcrect , &dstrect ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ; UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
} }
} }
else else
{ {
RgnHandle clipRgn = NewRgn() ; RgnHandle clipRgn = NewRgn() ;
LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
LockPixels( GetGWorldPixMap( source->m_macMask ) ) ; BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( source->m_macMask ) ) ; UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
//OffsetRgn( clipRgn , -source->m_macMask->portRect.left , -source->m_macMask->portRect.top ) ;
OffsetRgn( clipRgn , -srcrect.left + dstrect.left, -srcrect.top + dstrect.top ) ; OffsetRgn( clipRgn , -srcrect.left + dstrect.left, -srcrect.top + dstrect.top ) ;
CopyBits( GetPortBitMapForCopyBits( sourcePort ) , if ( mode == kEmulatedMode )
GetPortBitMapForCopyBits( m_macPort ) , {
&srcrect, &dstrect, mode, clipRgn ) ; Pattern pat ;
::PenPat(GetQDGlobalsBlack(&pat));
if ( logical_func == wxSET )
{
RGBColor col= { 0xFFFF, 0xFFFF, 0xFFFF } ;
::RGBForeColor( &col ) ;
::PaintRgn( clipRgn ) ;
}
else if ( logical_func == wxCLEAR )
{
RGBColor col= { 0x0000, 0x0000, 0x0000 } ;
::RGBForeColor( &col ) ;
::PaintRgn( clipRgn ) ;
}
else if ( logical_func == wxINVERT )
{
MacInvertRgn( clipRgn ) ;
}
else
{
for ( int y = 0 ; y < srcrect.right - srcrect.left ; ++y )
{
for ( int x = 0 ; x < srcrect.bottom - srcrect.top ; ++x )
{
Point dstPoint = { dstrect.top + y , dstrect.left + x } ;
Point srcPoint = { srcrect.top + y , srcrect.left + x } ;
if ( PtInRgn( dstPoint , clipRgn ) )
{
RGBColor srcColor ;
RGBColor dstColor ;
SetPort( (GrafPtr) sourcePort ) ;
GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ;
SetPort( (GrafPtr) m_macPort ) ;
GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ;
wxMacCalculateColour( logical_func , srcColor , dstColor ) ;
SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ;
}
}
}
// wxFAIL_MSG("unimplemented emulated mode") ;
}
}
else
{
if ( invertDestinationFirst )
{
MacInvertRgn( clipRgn ) ;
}
CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &dstrect, mode, clipRgn ) ;
}
DisposeRgn( clipRgn ) ; DisposeRgn( clipRgn ) ;
} }
} }
else else
{ {
CopyBits( GetPortBitMapForCopyBits( sourcePort ) , if ( mode == kEmulatedMode )
GetPortBitMapForCopyBits( m_macPort ) , {
&srcrect, &dstrect, mode, NULL ) ; CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &dstrect, mode, NULL ) ;
}
else
{
Pattern pat ;
::PenPat(GetQDGlobalsBlack(&pat));
if ( logical_func == wxSET )
{
RGBColor col= { 0xFFFF, 0xFFFF, 0xFFFF } ;
::RGBForeColor( &col ) ;
}
else
{
RGBColor col= { 0x0000, 0x0000, 0x0000 } ;
::RGBForeColor( &col ) ;
}
::PaintRect( &dstrect ) ;
}
} }
UnlockPixels( bmappixels ) ; UnlockPixels( bmappixels ) ;
} }
@@ -1100,8 +1331,8 @@ void wxDC::DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y,
// prepare to blit-with-rotate the bitmap to the DC // prepare to blit-with-rotate the bitmap to the DC
wxImage image(src); wxImage image(src);
RGBColor colText = m_textForegroundColour.GetPixel(); RGBColor colText = MAC_WXCOLORREF( m_textForegroundColour.GetPixel() );
RGBColor colBack = m_textBackgroundColour.GetPixel(); RGBColor colBack = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel() );
unsigned char *data = image.GetData(); unsigned char *data = image.GetData();
@@ -1336,7 +1567,8 @@ void wxDC::Clear(void)
if (m_backgroundBrush.GetStyle() != wxTRANSPARENT) if (m_backgroundBrush.GetStyle() != wxTRANSPARENT)
{ {
MacInstallBrush() ; MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
::EraseRect( &rect ) ; ::EraseRect( &rect ) ;
} }
} }
@@ -1360,8 +1592,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
m_macPenInstalled = false ; m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel(); RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = m_textBackgroundColour.GetPixel(); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor ); ::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor ); ::RGBBackColor( &backcolor );
} }
@@ -1380,8 +1612,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
m_macPenInstalled = false ; m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel(); RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = m_textBackgroundColour.GetPixel(); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor ); ::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor ); ::RGBBackColor( &backcolor );
} }
@@ -1470,8 +1702,8 @@ void wxDC::MacInstallPen() const
// if ( m_macPenInstalled ) // if ( m_macPenInstalled )
// return ; // return ;
RGBColor forecolor = m_pen.GetColour().GetPixel(); RGBColor forecolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel());
RGBColor backcolor = m_backgroundBrush.GetColour().GetPixel(); RGBColor backcolor = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel());
::RGBForeColor( &forecolor ); ::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor ); ::RGBBackColor( &backcolor );
@@ -1604,7 +1836,7 @@ void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background )
} }
case kwxMacBrushColour : case kwxMacBrushColour :
{ {
::RGBBackColor( &background.GetColour().GetPixel() ); ::RGBBackColor( &MAC_WXCOLORREF( background.GetColour().GetPixel()) );
int brushStyle = background.GetStyle(); int brushStyle = background.GetStyle();
if (brushStyle == wxSOLID) if (brushStyle == wxSOLID)
::BackPat(GetQDGlobalsWhite(&whiteColor)); ::BackPat(GetQDGlobalsWhite(&whiteColor));
@@ -1632,8 +1864,10 @@ void wxDC::MacInstallBrush() const
// return ; // return ;
// foreground // foreground
bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ;
::RGBForeColor( &m_brush.GetColour().GetPixel() ); ::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) );
int brushStyle = m_brush.GetStyle(); int brushStyle = m_brush.GetStyle();
if (brushStyle == wxSOLID) if (brushStyle == wxSOLID)
@@ -1646,62 +1880,109 @@ void wxDC::MacInstallBrush() const
} }
else if ( m_brush.GetStyle() == wxSTIPPLE || m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE ) else if ( m_brush.GetStyle() == wxSTIPPLE || m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE )
{ {
// we force this in order to be compliant with wxMSW
backgroundTransparent = false ;
// for these the text fore (and back for MASK_OPAQUE) colors are used // for these the text fore (and back for MASK_OPAQUE) colors are used
wxBitmap* bitmap = m_brush.GetStipple() ; wxBitmap* bitmap = m_brush.GetStipple() ;
int width = bitmap->GetWidth() ; int width = bitmap->GetWidth() ;
int height = bitmap->GetHeight() ; int height = bitmap->GetHeight() ;
int depth = bitmap->GetDepth() ; GWorldPtr gw = NULL ;
if ( m_brush.GetStyle() == wxSTIPPLE ) if ( m_brush.GetStyle() == wxSTIPPLE )
gw = MAC_WXHBITMAP(bitmap->GetHBITMAP()) ;
else
gw = MAC_WXHBITMAP(bitmap->GetMask()->GetMaskBitmap()) ;
PixMapHandle gwpixmaphandle = GetGWorldPixMap( gw ) ;
LockPixels( gwpixmaphandle ) ;
bool isMonochrome = !IsPortColor( gw ) ;
if ( !isMonochrome )
{
if ( (**gwpixmaphandle).pixelSize == 1 )
isMonochrome = true ;
}
if ( isMonochrome )
{ {
GWorldPtr gw = bitmap->GetHBITMAP() ; ::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) );
if ( width == 8 && height == 8 && depth == 1)
{ BitMap* gwbitmap = (BitMap*) *gwpixmaphandle ; // since the color depth is 1 it is a BitMap
Pattern pat ; UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
LockPixels( GetGWorldPixMap( gw ) ) ; int alignment = gwbitmap->rowBytes & 0x7FFF ;
BitMap* gwbitmap = (BitMap*) *GetGWorldPixMap( gw ) ; // since the color depth is 1 it is a BitMap
int alignment = gwbitmap->rowBytes & 0x7FFF ; if( width == 8 && height == 8 )
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ; {
Pattern pat ;
for ( int i = 0 ; i < 8 ; ++i ) for ( int i = 0 ; i < 8 ; ++i )
{ {
pat.pat[i] = gwbits[i*alignment+0] ; pat.pat[i] = gwbits[i*alignment+0] ;
} }
UnlockPixels( GetGWorldPixMap( gw ) ) ; UnlockPixels( GetGWorldPixMap( gw ) ) ;
::PenPat( &pat ) ;
::PenPat( &pat ) ; }
} else
else {
{ #if wxMAC_EXPERIMENTAL_PATTERN
::PenPat(GetQDGlobalsBlack(&blackColor)); // this will be the code to handle power of 2 patterns, we will have to arrive at a nice
} // caching scheme before putting this into production
Handle image;
long imageSize;
PixPatHandle pixpat = NewPixPat() ;
CopyPixMap(gwpixmaphandle, (**pixpat).patMap);
imageSize = GetPixRowBytes((**pixpat).patMap) *
((**(**pixpat).patMap).bounds.bottom -
(**(**pixpat).patMap).bounds.top);
PtrToHand( (**gwpixmaphandle).baseAddr, &image, imageSize );
(**pixpat).patData = image;
CTabHandle ctable = ((**((**pixpat).patMap)).pmTable) ;
ColorSpecPtr ctspec = (ColorSpecPtr) &(**ctable).ctTable ;
if ( ctspec[0].rgb.red == 0x0000 )
{
ctspec[1].rgb = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ;
ctspec[0].rgb = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) ;
}
else
{
ctspec[0].rgb = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ;
ctspec[1].rgb = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) ;
}
::CTabChanged( ctable ) ;
::PenPixPat(pixpat);
#endif
}
} }
else if (m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE ) else
{ {
::RGBForeColor( &m_textForegroundColour.GetPixel() );
::RGBForeColor( &m_textBackgroundColour.GetPixel() );
::PenPat(GetQDGlobalsBlack(&blackColor));
} }
UnlockPixels( gwpixmaphandle ) ;
} }
else else
{ {
::PenPat(GetQDGlobalsBlack(&blackColor)); ::PenPat(GetQDGlobalsBlack(&blackColor));
} }
// background if ( !backgroundTransparent )
::RGBBackColor( &MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ) ;
MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
// todo :
short mode = patCopy ; short mode = patCopy ;
switch( m_logicalFunction ) switch( m_logicalFunction )
{ {
case wxCOPY: // src case wxCOPY: // src
mode = patCopy ; if ( backgroundTransparent )
mode = patOr ;
else
mode = patCopy ;
break ; break ;
case wxINVERT: // NOT dst case wxINVERT: // NOT dst
::PenPat(GetQDGlobalsBlack(&blackColor)); if ( !backgroundTransparent )
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
mode = patXor ; mode = patXor ;
break ; break ;
case wxXOR: // src XOR dst case wxXOR: // src XOR dst

View File

@@ -19,6 +19,7 @@
#include "wx/window.h" #include "wx/window.h"
#include "wx/toplevel.h" #include "wx/toplevel.h"
#include <math.h> #include <math.h>
#include "wx/mac/private.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// constants // constants
@@ -49,16 +50,16 @@ wxWindowDC::wxWindowDC()
wxWindowDC::wxWindowDC(wxWindow *the_canvas) wxWindowDC::wxWindowDC(wxWindow *the_canvas)
{ {
wxTopLevelWindowMac* rootwindow = the_canvas->MacGetTopLevelWindow() ; wxTopLevelWindowMac* rootwindow = the_canvas->MacGetTopLevelWindow() ;
WindowRef windowref = rootwindow->MacGetWindowRef() ; WindowRef windowref = (WindowRef) rootwindow->MacGetWindowRef() ;
int x , y ; int x , y ;
x = y = 0 ; x = y = 0 ;
the_canvas->MacWindowToRootWindow( &x , &y ) ; the_canvas->MacWindowToRootWindow( &x , &y ) ;
m_macLocalOrigin.h = x ; m_macLocalOrigin.x = x ;
m_macLocalOrigin.v = y ; m_macLocalOrigin.y = y ;
CopyRgn( the_canvas->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; CopyRgn( (RgnHandle) the_canvas->MacGetVisibleRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , m_macLocalOrigin.x , m_macLocalOrigin.y ) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_macPort = UMAGetWindowPort( windowref ) ; m_macPort = UMAGetWindowPort( windowref ) ;
m_minY = m_minX = 0; m_minY = m_minX = 0;
wxSize size = the_canvas->GetSize() ; wxSize size = the_canvas->GetSize() ;
@@ -84,20 +85,20 @@ wxClientDC::wxClientDC()
wxClientDC::wxClientDC(wxWindow *window) wxClientDC::wxClientDC(wxWindow *window)
{ {
wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ; wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ;
WindowRef windowref = rootwindow->MacGetWindowRef() ; WindowRef windowref = (WindowRef) rootwindow->MacGetWindowRef() ;
wxPoint origin = window->GetClientAreaOrigin() ; wxPoint origin = window->GetClientAreaOrigin() ;
wxSize size = window->GetClientSize() ; wxSize size = window->GetClientSize() ;
int x , y ; int x , y ;
x = origin.x ; x = origin.x ;
y = origin.y ; y = origin.y ;
window->MacWindowToRootWindow( &x , &y ) ; window->MacWindowToRootWindow( &x , &y ) ;
m_macLocalOrigin.h = x ; m_macLocalOrigin.x = x ;
m_macLocalOrigin.v = y ; m_macLocalOrigin.y = y ;
SetRectRgn( m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ;
SectRgn( m_macBoundaryClipRgn , window->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; SectRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) window->MacGetVisibleRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , -origin.x , -origin.y ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , -origin.x , -origin.y ) ;
OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , m_macLocalOrigin.x , m_macLocalOrigin.y ) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn ,(RgnHandle) m_macCurrentClipRgn ) ;
m_macPort = UMAGetWindowPort( windowref ) ; m_macPort = UMAGetWindowPort( windowref ) ;
m_minY = m_minX = 0; m_minY = m_minX = 0;
m_maxX = size.x ; m_maxX = size.x ;
@@ -122,21 +123,21 @@ wxPaintDC::wxPaintDC()
wxPaintDC::wxPaintDC(wxWindow *window) wxPaintDC::wxPaintDC(wxWindow *window)
{ {
wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ; wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ;
WindowRef windowref = rootwindow->MacGetWindowRef() ; WindowRef windowref = (WindowRef) rootwindow->MacGetWindowRef() ;
wxPoint origin = window->GetClientAreaOrigin() ; wxPoint origin = window->GetClientAreaOrigin() ;
wxSize size = window->GetClientSize() ; wxSize size = window->GetClientSize() ;
int x , y ; int x , y ;
x = origin.x ; x = origin.x ;
y = origin.y ; y = origin.y ;
window->MacWindowToRootWindow( &x , &y ) ; window->MacWindowToRootWindow( &x , &y ) ;
m_macLocalOrigin.h = x ; m_macLocalOrigin.x = x ;
m_macLocalOrigin.v = y ; m_macLocalOrigin.y = y ;
SetRectRgn( m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ;
SectRgn( m_macBoundaryClipRgn , window->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; SectRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) window->MacGetVisibleRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , -origin.x , -origin.y ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , -origin.x , -origin.y ) ;
SectRgn( m_macBoundaryClipRgn , window->GetUpdateRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; SectRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) window->GetUpdateRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , m_macLocalOrigin.x , m_macLocalOrigin.y ) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_macPort = UMAGetWindowPort( windowref ) ; m_macPort = UMAGetWindowPort( windowref ) ;
m_minY = m_minX = 0; m_minY = m_minX = 0;
m_maxX = size.x ; m_maxX = size.x ;

View File

@@ -14,6 +14,7 @@
#endif #endif
#include "wx/dcmemory.h" #include "wx/dcmemory.h"
#include "wx/mac/private.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxMemoryDC // wxMemoryDC
@@ -43,7 +44,7 @@ wxMemoryDC::~wxMemoryDC()
{ {
if ( m_selected.Ok() ) if ( m_selected.Ok() )
{ {
UnlockPixels( GetGWorldPixMap(m_selected.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );
} }
}; };
@@ -51,7 +52,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
{ {
if ( m_selected.Ok() ) if ( m_selected.Ok() )
{ {
UnlockPixels( GetGWorldPixMap(m_selected.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );
} }
m_selected = bitmap; m_selected = bitmap;
if (m_selected.Ok()) if (m_selected.Ok())

View File

@@ -63,9 +63,9 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
} }
#if !TARGET_CARBON #if !TARGET_CARBON
if ( ::PrValidate( m_printData.m_macPrintInfo ) ) if ( ::PrValidate( (THPrint) m_printData.m_macPrintInfo ) )
{ {
::PrStlDialog( m_printData.m_macPrintInfo ) ; ::PrStlDialog( (THPrint) m_printData.m_macPrintInfo ) ;
// the driver has changed in the mean time, should we pop up a page setup dialog ? // the driver has changed in the mean time, should we pop up a page setup dialog ?
} }
err = PrError() ; err = PrError() ;
@@ -79,7 +79,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
return; return;
} }
::GetPort( &macPrintFormerPort ) ; ::GetPort( &macPrintFormerPort ) ;
m_macPrintPort = ::PrOpenDoc( m_printData.m_macPrintInfo , NULL , NULL ) ; m_macPrintPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintInfo , NULL , NULL ) ;
err = PrError() ; err = PrError() ;
if ( err ) if ( err )
{ {
@@ -143,8 +143,8 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
m_maxX = rPaper.right - rPaper.left ; m_maxX = rPaper.right - rPaper.left ;
m_maxY = rPaper.bottom - rPaper.top ; m_maxY = rPaper.bottom - rPaper.top ;
#else #else
m_maxX = (**m_printData.m_macPrintInfo).rPaper.right - (**m_printData.m_macPrintInfo).rPaper.left ; m_maxX = (**(THPrint)m_printData.m_macPrintInfo).rPaper.right - (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ;
m_maxY = (**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).rPaper.top ; m_maxY = (**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom - (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ;
#endif #endif
} }
@@ -155,15 +155,15 @@ wxPrinterDC::~wxPrinterDC(void)
#if !TARGET_CARBON #if !TARGET_CARBON
if ( m_ok ) if ( m_ok )
{ {
::PrCloseDoc( m_macPrintPort ) ; ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
err = PrError() ; err = PrError() ;
if ( err == noErr ) if ( err == noErr )
{ {
if ( (**m_printData.m_macPrintInfo).prJob.bJDocLoop == bSpoolLoop ) if ( (**(THPrint)m_printData.m_macPrintInfo).prJob.bJDocLoop == bSpoolLoop )
{ {
TPrStatus status ; TPrStatus status ;
::PrPicFile( m_printData.m_macPrintInfo , NULL , NULL , NULL , &status ) ; ::PrPicFile( (THPrint) m_printData.m_macPrintInfo , NULL , NULL , NULL , &status ) ;
} }
} }
else else
@@ -233,9 +233,9 @@ void wxPrinterDC::StartPage(void)
wxString message ; wxString message ;
#if !TARGET_CARBON #if !TARGET_CARBON
PrOpenPage( m_macPrintPort , NULL ) ; PrOpenPage( (TPPrPort) m_macPrintPort , NULL ) ;
m_macLocalOrigin.h = (**m_printData.m_macPrintInfo).rPaper.left ; m_macLocalOrigin.x = (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ;
m_macLocalOrigin.v = (**m_printData.m_macPrintInfo).rPaper.top ; m_macLocalOrigin.y = (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ;
Rect clip = { -32000 , -32000 , 32000 , 32000 } ; Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
::ClipRect( &clip ) ; ::ClipRect( &clip ) ;
@@ -245,8 +245,8 @@ void wxPrinterDC::StartPage(void)
message.Printf( "Print Error %d", err ) ; message.Printf( "Print Error %d", err ) ;
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal(); dialog.ShowModal();
::PrClosePage( m_macPrintPort ) ; ::PrClosePage( (TPPrPort) m_macPrintPort ) ;
::PrCloseDoc( m_macPrintPort ) ; ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
::UMAPrClose() ; ::UMAPrClose() ;
::SetPort( macPrintFormerPort ) ; ::SetPort( macPrintFormerPort ) ;
m_ok = FALSE ; m_ok = FALSE ;
@@ -288,14 +288,14 @@ void wxPrinterDC::EndPage(void)
wxString message ; wxString message ;
#if !TARGET_CARBON #if !TARGET_CARBON
PrClosePage( (TPrPort*) m_macPort ) ; PrClosePage( (TPPrPort) m_macPort ) ;
err = PrError() ; err = PrError() ;
if ( err != noErr ) if ( err != noErr )
{ {
message.Printf( "Print Error %d", err ) ; message.Printf( "Print Error %d", err ) ;
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal(); dialog.ShowModal();
::PrCloseDoc( m_macPrintPort ) ; ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
::UMAPrClose() ; ::UMAPrClose() ;
::SetPort( macPrintFormerPort ) ; ::SetPort( macPrintFormerPort ) ;
m_ok = FALSE ; m_ok = FALSE ;

View File

@@ -20,6 +20,8 @@
#include "wx/cmndata.h" #include "wx/cmndata.h"
#include "wx/mac/private.h"
#ifdef __DARWIN__ #ifdef __DARWIN__
#include <Carbon/Carbon.h> #include <Carbon/Carbon.h>
#else #else
@@ -30,423 +32,11 @@
IMPLEMENT_CLASS(wxDirDialog, wxDialog) IMPLEMENT_CLASS(wxDirDialog, wxDialog)
#endif #endif
bool gUseNavServices = NavServicesAvailable() ;
// the data we need to pass to our standard file hook routine
// includes a pointer to the dialog, a pointer to the standard
// file reply record (so we can inspect the current selection)
// and a copy of the "previous" file spec of the reply record
// so we can see if the selection has changed
#if !TARGET_CARBON
struct UserDataRec {
StandardFileReply *sfrPtr;
FSSpec oldSelectionFSSpec;
DialogPtr theDlgPtr;
};
typedef struct UserDataRec
UserDataRec, *UserDataRecPtr;
enum {
kSelectItem = 10, // select button item number
kSFGetFolderDlgID = 250, // dialog resource number
kStrListID = 250, // our strings
kSelectStrNum = 1, // word 'Select: ' for button
kDesktopStrNum = 2, // word 'Desktop' for button
kSelectNoQuoteStrNum = 3, // word 'Select: ' for button
kUseQuotes = true, // parameter for SetButtonName
kDontUseQuotes = false
};
static void GetLabelString(StringPtr theStr, short stringNum)
{
GetIndString(theStr, kStrListID, stringNum);
}
static void CopyPStr(StringPtr src, StringPtr dest)
{
BlockMoveData(src, dest, 1 + src[0]);
}
static char GetSelectKey(void)
{
// this is the key used to trigger the select button
// NOT INTERNATIONAL SAVVY; should at least grab it from resources
return 's';
}
// SetButtonName sets the name of the Select button in the dialog
//
// To do this, we need to call the Script Manager to truncate the
// label in the middle to fit the button and to merge the button
// name with the word Select (possibly followed by quotes). Using
// the Script Manager avoids all sorts of problems internationally.
//
// buttonName is the name to appear following the word Select
// quoteFlag should be true if the name is to appear in quotes
static void SetButtonName(DialogPtr theDlgPtr, short buttonID, StringPtr buttonName,
Boolean quoteFlag)
{
short buttonType;
Handle buttonHandle;
Rect buttonRect;
short textWidth;
Handle labelHandle;
Handle nameHandle;
Str15 keyStr;
Str255 labelStr;
OSErr err;
nameHandle = nil;
labelHandle = nil;
// get the details of the button from the dialog
GetDialogItem(theDlgPtr, buttonID, &buttonType, &buttonHandle, &buttonRect);
// get the string for the select button label, "Select ^0" or "Select <20>^0<>"
GetLabelString(labelStr, (quoteFlag == kUseQuotes) ? kSelectStrNum : kSelectNoQuoteStrNum);
// make string handles containing the select button label and the
// file name to be stuffed into the button
err = PtrToHand(&labelStr[1], &labelHandle, labelStr[0]);
if (err != noErr) goto Bail;
// cut out the middle of the file name to fit the button
//
// we'll temporarily use labelStr here to hold the modified button name
// since we don't own the buttonName string storage space
textWidth = (buttonRect.right - buttonRect.left) - StringWidth(labelStr);
CopyPStr(buttonName, labelStr);
(void) TruncString(textWidth, labelStr, smTruncMiddle);
err = PtrToHand(&labelStr[1], &nameHandle, labelStr[0]);
if (err != noErr) goto Bail;
// replace the ^0 in the Select string with the file name
CopyPStr("\p^0", keyStr);
(void) ReplaceText(labelHandle, nameHandle, keyStr);
labelStr[0] = (unsigned char) GetHandleSize(labelHandle);
BlockMoveData(*labelHandle, &labelStr[1], labelStr[0]);
// now set the control title, and re-validate the area
// above the control to avoid a needless redraw
SetControlTitle((ControlHandle) buttonHandle, labelStr);
ValidRect(&buttonRect);
Bail:
if (nameHandle) DisposeHandle(nameHandle);
if (labelHandle) DisposeHandle(labelHandle);
}
// FlashButton briefly highlights the dialog button
// as feedback for key equivalents
static void FlashButton(DialogPtr theDlgPtr, short buttonID)
{
short buttonType;
Handle buttonHandle;
Rect buttonRect;
unsigned long finalTicks;
GetDialogItem(theDlgPtr, buttonID, &buttonType, &buttonHandle, &buttonRect);
HiliteControl((ControlHandle) buttonHandle, kControlButtonPart);
Delay(10, &finalTicks);
HiliteControl((ControlHandle) buttonHandle, 0);
}
static Boolean SameFSSpec(FSSpecPtr spec1, FSSpecPtr spec2)
{
return (spec1->vRefNum == spec2->vRefNum
&& spec1->parID == spec2->parID
&& EqualString(spec1->name, spec2->name, false, false));
}
// MyModalDialogFilter maps a key to the Select button, and handles
// flashing of the button when the key is hit
static pascal Boolean SFGetFolderModalDialogFilter(DialogPtr theDlgPtr, EventRecord *eventRec,
short *item, void *dataPtr)
{
#pragma unused (dataPtr)
// make certain the proper dialog is showing, 'cause standard file
// can nest dialogs but calls the same filter for each
if (((WindowPeek) theDlgPtr)->refCon == sfMainDialogRefCon)
{
// check if the select button was hit
if ((eventRec->what == keyDown)
&& (eventRec->modifiers & cmdKey)
&& ((eventRec->message & charCodeMask) == GetSelectKey()))
{
*item = kSelectItem;
FlashButton(theDlgPtr, kSelectItem);
return true;
}
}
return false;
}
// MyDlgHook is a hook routine that maps the select button to Open
// and sets the Select button name
static pascal short SFGetFolderDialogHook(short item, DialogPtr theDlgPtr, void *dataPtr)
{
UserDataRecPtr theUserDataRecPtr;
long desktopDirID;
short desktopVRefNum;
FSSpec tempSpec;
Str63 desktopName;
OSErr err;
// be sure Std File is really showing us the intended dialog,
// not a nested modal dialog
if (((WindowPeek) theDlgPtr)->refCon != sfMainDialogRefCon)
{
return item;
}
theUserDataRecPtr = (UserDataRecPtr) dataPtr;
// map the Select button to Open
if (item == kSelectItem)
{
item = sfItemOpenButton;
}
// find the desktop folder
err = FindFolder(theUserDataRecPtr->sfrPtr->sfFile.vRefNum,
kDesktopFolderType, kDontCreateFolder,
&desktopVRefNum, &desktopDirID);
if (err != noErr)
{
// for errors, get value that won't match any real vRefNum/dirID
desktopVRefNum = 0;
desktopDirID = 0;
}
// change the Select button label if the selection has changed or
// if this is the first call to the hook
if (item == sfHookFirstCall
|| item == sfHookChangeSelection
|| item == sfHookRebuildList
|| ! SameFSSpec(&theUserDataRecPtr->sfrPtr->sfFile,
&theUserDataRecPtr->oldSelectionFSSpec))
{
// be sure there is a file name selected
if (theUserDataRecPtr->sfrPtr->sfFile.name[0] != '\0')
{
SetButtonName(theDlgPtr, kSelectItem,
theUserDataRecPtr->sfrPtr->sfFile.name,
kUseQuotes); // true -> use quotes
}
else
{
// is the desktop selected?
if (theUserDataRecPtr->sfrPtr->sfFile.vRefNum == desktopVRefNum
&& theUserDataRecPtr->sfrPtr->sfFile.parID == desktopDirID)
{
// set button to "Select Desktop"
GetLabelString(desktopName, kDesktopStrNum);
SetButtonName(theDlgPtr, kSelectItem,
desktopName, kDontUseQuotes); // false -> no quotes
}
else
{
// get parent directory's name for the Select button
//
// passing an empty name string to FSMakeFSSpec gets the
// name of the folder specified by the parID parameter
(void) FSMakeFSSpec(theUserDataRecPtr->sfrPtr->sfFile.vRefNum,
theUserDataRecPtr->sfrPtr->sfFile.parID, "\p",
&tempSpec);
SetButtonName(theDlgPtr, kSelectItem,
tempSpec.name, kUseQuotes); // true -> use quotes
}
}
}
// save the current selection as the old selection for comparison next time
//
// it's not valid on the first call, though, or if we don't have a
// name available from standard file
if (item != sfHookFirstCall || theUserDataRecPtr->sfrPtr->sfFile.name[0] != '\0')
{
theUserDataRecPtr->oldSelectionFSSpec = theUserDataRecPtr->sfrPtr->sfFile;
}
else
{
// on first call, empty string won't set the button correctly,
// so invalidate oldSelection
theUserDataRecPtr->oldSelectionFSSpec.vRefNum = 999;
theUserDataRecPtr->oldSelectionFSSpec.parID = 0;
}
return item;
}
void StandardGetFolder( ConstStr255Param message , ConstStr255Param path , FileFilterYDUPP fileFilter, StandardFileReply *theSFR)
{
Point thePt;
SFTypeList mySFTypeList;
UserDataRec myData;
FSSpec tempSpec;
Boolean folderFlag;
Boolean wasAliasedFlag;
DlgHookYDUPP dlgHookUPP;
ModalFilterYDUPP myModalFilterUPP;
OSErr err;
// presumably we're running System 7 or later so CustomGetFile is
// available
// set initial contents of Select button to a space
memcpy(theSFR->sfFile.name, "\p ", 2);
// point the user data parameter at the reply record so we can get to it later
myData.sfrPtr = theSFR;
// display the dialog
#if !TARGET_CARBON
dlgHookUPP = NewDlgHookYDProc(SFGetFolderDialogHook);
myModalFilterUPP = NewModalFilterYDProc(SFGetFolderModalDialogFilter);
thePt.h = thePt.v = -1; // center dialog
ParamText( message , NULL , NULL , NULL ) ;
CustomGetFile( fileFilter,
-1, // show all types
mySFTypeList,
theSFR,
kSFGetFolderDlgID,
thePt, // top left point
dlgHookUPP,
myModalFilterUPP,
nil, // activate list
nil, // activate proc
&myData);
DisposeRoutineDescriptor(dlgHookUPP);
DisposeRoutineDescriptor(myModalFilterUPP);
#else
#endif
// if cancel wasn't pressed and no fatal error occurred...
if (theSFR->sfGood)
{
// if no name is in the reply record file spec,
// use the file spec of the parent folder
if (theSFR->sfFile.name[0] == '\0')
{
err = FSMakeFSSpec(theSFR->sfFile.vRefNum, theSFR->sfFile.parID,
"\p", &tempSpec);
if (err == noErr)
{
theSFR->sfFile = tempSpec;
}
else
{
// no name to return, forget it
theSFR->sfGood = false;
}
}
// if there is now a name in the file spec, check if it's
// for a folder or a volume
if (theSFR->sfFile.name[0] != '\0')
{
// the parID of the root of a disk is always fsRtParID == 1
if (theSFR->sfFile.parID == fsRtParID)
{
theSFR->sfIsVolume = true;
theSFR->sfIsFolder = false; // it would be reasonable for this to be true, too
}
// we have a valid FSSpec, now let's make sure it's not for an alias file
err = ResolveAliasFile(&theSFR->sfFile, true, &folderFlag, &wasAliasedFlag);
if (err != noErr)
{
theSFR->sfGood = false;
}
// did the alias resolve to a folder?
if (folderFlag && ! theSFR->sfIsVolume)
{
theSFR->sfIsFolder = true;
}
}
}
}
static pascal Boolean OnlyVisibleFoldersCustomFileFilter(CInfoPBPtr myCInfoPBPtr, void *dataPtr)
{
#pragma unused (dataPtr)
// return true if this item is invisible or a file
Boolean visibleFlag;
Boolean folderFlag;
visibleFlag = ! (myCInfoPBPtr->hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible);
folderFlag = (myCInfoPBPtr->hFileInfo.ioFlAttrib & 0x10);
// because the semantics of the filter proc are "true means don't show
// it" we need to invert the result that we return
return !(visibleFlag && folderFlag);
}
#endif
wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
const wxString& defaultPath, const wxString& defaultPath,
long style, const wxPoint& pos) long style, const wxPoint& pos)
{ {
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message; m_message = message;
m_dialogStyle = style; m_dialogStyle = style;
m_parent = parent; m_parent = parent;
@@ -455,145 +45,98 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
int wxDirDialog::ShowModal() int wxDirDialog::ShowModal()
{ {
#if !TARGET_CARBON NavDialogOptions mNavOptions;
if ( !gUseNavServices ) NavObjectFilterUPP mNavFilterUPP = NULL;
{ NavPreviewUPP mNavPreviewUPP = NULL ;
Str255 prompt ; NavReplyRecord mNavReply;
Str255 path ; AEDesc* mDefaultLocation = NULL ;
bool mSelectDefault = false ;
#if TARGET_CARBON
c2pstrcpy((StringPtr)prompt, m_message) ;
#else
strcpy((char *)prompt, m_message) ;
c2pstr((char *)prompt ) ;
#endif
#if TARGET_CARBON
c2pstrcpy((StringPtr)path, m_path ) ;
#else
strcpy((char *)path, m_path ) ;
c2pstr((char *)path ) ;
#endif
StandardFileReply reply ;
FileFilterYDUPP invisiblesExcludedCustomFilterUPP = 0 ;
invisiblesExcludedCustomFilterUPP =
NewFileFilterYDProc(OnlyVisibleFoldersCustomFileFilter);
StandardGetFolder( prompt , path , invisiblesExcludedCustomFilterUPP, &reply);
::NavGetDefaultDialogOptions(&mNavOptions);
DisposeRoutineDescriptor(invisiblesExcludedCustomFilterUPP); mNavFilterUPP = nil;
mNavPreviewUPP = nil;
if ( reply.sfGood == false ) mSelectDefault = false;
{ mNavReply.validRecord = false;
m_path = "" ; mNavReply.replacing = false;
return wxID_CANCEL ; mNavReply.isStationery = false;
mNavReply.translationNeeded = false;
mNavReply.selection.descriptorType = typeNull;
mNavReply.selection.dataHandle = nil;
mNavReply.keyScript = smSystemScript;
mNavReply.fileTranslation = nil;
// Set default location, the location
// that's displayed when the dialog
// first appears
if ( mDefaultLocation ) {
if (mSelectDefault) {
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
} else {
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
} }
else
{
m_path = wxMacFSSpec2MacFilename( &reply.sfFile ) ;
return wxID_OK ;
}
return wxID_CANCEL;
} }
else
#endif
{
NavDialogOptions mNavOptions;
NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ;
NavReplyRecord mNavReply;
AEDesc* mDefaultLocation = NULL ;
bool mSelectDefault = false ;
::NavGetDefaultDialogOptions(&mNavOptions);
mNavFilterUPP = nil; OSErr err = ::NavChooseFolder(
mNavPreviewUPP = nil; mDefaultLocation,
mSelectDefault = false; &mNavReply,
mNavReply.validRecord = false; &mNavOptions,
mNavReply.replacing = false; NULL,
mNavReply.isStationery = false; mNavFilterUPP,
mNavReply.translationNeeded = false; 0L); // User Data
mNavReply.selection.descriptorType = typeNull;
mNavReply.selection.dataHandle = nil; if ( (err != noErr) && (err != userCanceledErr) ) {
mNavReply.keyScript = smSystemScript; m_path = "" ;
mNavReply.fileTranslation = nil; return wxID_CANCEL ;
}
if (mNavReply.validRecord) { // User chose a folder
FSSpec folderInfo;
FSSpec outFileSpec ;
AEDesc specDesc ;
// Set default location, the location OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
// that's displayed when the dialog if ( err != noErr ) {
// first appears
if ( mDefaultLocation ) {
if (mSelectDefault) {
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
} else {
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
}
}
OSErr err = ::NavChooseFolder(
mDefaultLocation,
&mNavReply,
&mNavOptions,
NULL,
mNavFilterUPP,
0L); // User Data
if ( (err != noErr) && (err != userCanceledErr) ) {
m_path = "" ; m_path = "" ;
return wxID_CANCEL ; return wxID_CANCEL ;
}
folderInfo = **(FSSpec**) specDesc.dataHandle;
if (specDesc.dataHandle != nil) {
::AEDisposeDesc(&specDesc);
} }
if (mNavReply.validRecord) { // User chose a folder
FSSpec folderInfo;
FSSpec outFileSpec ;
AEDesc specDesc ;
OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
if ( err != noErr ) {
m_path = "" ;
return wxID_CANCEL ;
}
folderInfo = **(FSSpec**) specDesc.dataHandle;
if (specDesc.dataHandle != nil) {
::AEDisposeDesc(&specDesc);
}
// mNavReply.GetFileSpec(folderInfo); // mNavReply.GetFileSpec(folderInfo);
// The FSSpec from NavChooseFolder is NOT the file spec // The FSSpec from NavChooseFolder is NOT the file spec
// for the folder. The parID field is actually the DirID // for the folder. The parID field is actually the DirID
// of the folder itself, not the folder's parent, and // of the folder itself, not the folder's parent, and
// the name field is empty. We must call PBGetCatInfo // the name field is empty. We must call PBGetCatInfo
// to get the parent DirID and folder name // to get the parent DirID and folder name
Str255 name; Str255 name;
CInfoPBRec thePB; // Directory Info Parameter Block CInfoPBRec thePB; // Directory Info Parameter Block
thePB.dirInfo.ioCompletion = nil; thePB.dirInfo.ioCompletion = nil;
thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right
thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID
thePB.dirInfo.ioNamePtr = name; thePB.dirInfo.ioNamePtr = name;
thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID
err = ::PBGetCatInfoSync(&thePB); err = ::PBGetCatInfoSync(&thePB);
if ( err != noErr ) { if ( err != noErr ) {
m_path = "" ; m_path = "" ;
return wxID_CANCEL ; return wxID_CANCEL ;
} }
// Create cannonical FSSpec // Create cannonical FSSpec
::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID, ::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,
name, &outFileSpec); name, &outFileSpec);
// outFolderDirID = thePB.dirInfo.ioDrDirID; // outFolderDirID = thePB.dirInfo.ioDrDirID;
m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
return wxID_OK ; return wxID_OK ;
}
return wxID_CANCEL;
} }
return wxID_CANCEL;
} }

View File

@@ -40,6 +40,8 @@
#include <windows.h> #include <windows.h>
#endif #endif
#include "wx/mac/private.h"
#include "MoreFiles.h" #include "MoreFiles.h"
#include "MoreFilesExtras.h" #include "MoreFilesExtras.h"

View File

@@ -22,6 +22,7 @@
#include "wx/toplevel.h" #include "wx/toplevel.h"
#include "wx/app.h" #include "wx/app.h"
#include "wx/gdicmn.h" #include "wx/gdicmn.h"
#include "wx/mac/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// global // global
@@ -104,17 +105,17 @@ bool wxDropTarget::CurrentDragHasSupportedFormat()
{ {
UInt16 items ; UInt16 items ;
OSErr result; OSErr result;
CountDragItems(m_currentDrag, &items); CountDragItems((DragReference)m_currentDrag, &items);
for (UInt16 index = 1; index <= items && supported == false ; ++index) for (UInt16 index = 1; index <= items && supported == false ; ++index)
{ {
ItemReference theItem; ItemReference theItem;
FlavorType theType ; FlavorType theType ;
UInt16 flavors = 0 ; UInt16 flavors = 0 ;
GetDragItemReferenceNumber(m_currentDrag, index, &theItem); GetDragItemReferenceNumber((DragReference)m_currentDrag, index, &theItem);
CountDragItemFlavors( m_currentDrag, theItem , &flavors ) ; CountDragItemFlavors( (DragReference)m_currentDrag, theItem , &flavors ) ;
for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor ) for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
{ {
result = GetFlavorType(m_currentDrag, theItem, flavor , &theType); result = GetFlavorType((DragReference)m_currentDrag, theItem, flavor , &theType);
if ( m_dataObject->IsSupportedFormat( wxDataFormat( theType ) ) ) if ( m_dataObject->IsSupportedFormat( wxDataFormat( theType ) ) )
{ {
supported = true ; supported = true ;
@@ -172,31 +173,31 @@ bool wxDropTarget::GetData()
{ {
UInt16 items ; UInt16 items ;
OSErr result; OSErr result;
CountDragItems(m_currentDrag, &items); CountDragItems((DragReference)m_currentDrag, &items);
for (UInt16 index = 1; index <= items; ++index) for (UInt16 index = 1; index <= items; ++index)
{ {
ItemReference theItem; ItemReference theItem;
FlavorType theType ; FlavorType theType ;
UInt16 flavors = 0 ; UInt16 flavors = 0 ;
GetDragItemReferenceNumber(m_currentDrag, index, &theItem); GetDragItemReferenceNumber((DragReference)m_currentDrag, index, &theItem);
CountDragItemFlavors( m_currentDrag, theItem , &flavors ) ; CountDragItemFlavors( (DragReference)m_currentDrag, theItem , &flavors ) ;
for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor ) for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
{ {
result = GetFlavorType(m_currentDrag, theItem, flavor , &theType); result = GetFlavorType((DragReference)m_currentDrag, theItem, flavor , &theType);
wxDataFormat format(theType) ; wxDataFormat format(theType) ;
if ( m_dataObject->IsSupportedFormat( format ) ) if ( m_dataObject->IsSupportedFormat( format ) )
{ {
FlavorFlags theFlags; FlavorFlags theFlags;
result = GetFlavorFlags(m_currentDrag, theItem, theType, &theFlags); result = GetFlavorFlags((DragReference)m_currentDrag, theItem, theType, &theFlags);
if (result == noErr) if (result == noErr)
{ {
Size dataSize ; Size dataSize ;
Ptr theData ; Ptr theData ;
GetFlavorDataSize(m_currentDrag, theItem, theType, &dataSize); GetFlavorDataSize((DragReference)m_currentDrag, theItem, theType, &dataSize);
if ( theType == 'TEXT' ) if ( theType == 'TEXT' )
dataSize++ ; dataSize++ ;
theData = new char[dataSize]; theData = new char[dataSize];
GetFlavorData(m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); GetFlavorData((DragReference)m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L);
if( theType == 'TEXT' ) if( theType == 'TEXT' )
{ {
theData[dataSize]=0 ; theData[dataSize]=0 ;
@@ -335,7 +336,7 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
dragRegion = NewRgn(); dragRegion = NewRgn();
RgnHandle tempRgn = NewRgn() ; RgnHandle tempRgn = NewRgn() ;
EventRecord* ev = wxTheApp->MacGetCurrentEvent() ; EventRecord* ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ;
const short dragRegionOuterBoundary = 10 ; const short dragRegionOuterBoundary = 10 ;
const short dragRegionInnerBoundary = 9 ; const short dragRegionInnerBoundary = 9 ;

View File

@@ -31,6 +31,8 @@ IMPLEMENT_CLASS(wxFileDialog, wxDialog)
// begin wxmac // begin wxmac
#include "wx/mac/private.h"
#include <Navigation.h> #include <Navigation.h>
#include "MoreFiles.h" #include "MoreFiles.h"
@@ -112,132 +114,6 @@ OSType gfiltersmac[] =
} ; } ;
#if !TARGET_CARBON
static void wxMacSetupStandardFile(short newVRefNum, long newDirID)
{
enum
{ SFSaveDisk = 0x214, CurDirStore = 0x398 };
*(short *) SFSaveDisk = -1 * newVRefNum;
*(long *) CurDirStore = newDirID;
}
static void wxMacSetupStandardFileFromPath( const char* s )
{
Str255 volume ;
Str255 path ;
short vRefNum ;
long dirRef ;
short i,j ;
Boolean isDirectory ;
for (i=0 ; (s[i]!=0) && (s[i]!=':') ;i++)
{
volume[i]=s[i] ;
}
volume[i]=':' ;
volume[i+1]=0 ;
// then copy the rest of the filename
for (j=0;(s[i]!=0);i++,j++)
{
path[j]=s[i] ;
}
path[j]=0 ;
c2pstr((Ptr) volume) ;
c2pstr((Ptr) path) ;
SetVol(volume, 0) ;
GetVol( NULL, &vRefNum ) ;
GetDirectoryID( vRefNum , fsRtDirID , path , &dirRef , &isDirectory ) ;
wxMacSetupStandardFile(vRefNum, dirRef) ;
}
enum {
kSelectItem = 10, // select button item number
kSFGetFileDlgID = 251, // dialog resource number
kStrListID = 251, // our strings
kSelectStrNum = 1, // word 'Select: ' for button
kDesktopStrNum = 2, // word 'Desktop' for button
kSelectNoQuoteStrNum = 3, // word 'Select: ' for button
kUseQuotes = true, // parameter for SetButtonName
kDontUseQuotes = false
};
static void GetLabelString(StringPtr theStr, short stringNum)
{
GetIndString(theStr, kStrListID, stringNum);
}
static void CopyPStr(StringPtr src, StringPtr dest)
{
BlockMoveData(src, dest, 1 + src[0]);
}
static char GetSelectKey(void)
{
// this is the key used to trigger the select button
// NOT INTERNATIONAL SAVVY; should at least grab it from resources
return 's';
}
// FlashButton briefly highlights the dialog button
// as feedback for key equivalents
static void FlashButton(DialogPtr theDlgPtr, short buttonID)
{
short buttonType;
Handle buttonHandle;
Rect buttonRect;
unsigned long finalTicks;
GetDialogItem(theDlgPtr, buttonID, &buttonType, &buttonHandle, &buttonRect);
HiliteControl((ControlHandle) buttonHandle, kControlButtonPart);
Delay(10, &finalTicks);
HiliteControl((ControlHandle) buttonHandle, 0);
}
static Boolean SameFSSpec(FSSpecPtr spec1, FSSpecPtr spec2)
{
return (spec1->vRefNum == spec2->vRefNum
&& spec1->parID == spec2->parID
&& EqualString(spec1->name, spec2->name, false, false));
}
// MyModalDialogFilter maps a key to the Select button, and handles
// flashing of the button when the key is hit
static pascal Boolean SFGetFolderModalDialogFilter(DialogPtr theDlgPtr, EventRecord *eventRec,
short *item, void *dataPtr)
{
#pragma unused (dataPtr)
// make certain the proper dialog is showing, 'cause standard file
// can nest dialogs but calls the same filter for each
if (((WindowPeek) theDlgPtr)->refCon == sfMainDialogRefCon)
{
// check if the select button was hit
/*
if ((eventRec->what == keyDown)
&& (eventRec->modifiers & cmdKey)
&& ((eventRec->message & charCodeMask) == GetSelectKey()))
{
*item = kSelectItem;
FlashButton(theDlgPtr, kSelectItem);
return true;
}
*/
}
return false;
}
#endif !TARGET_CARBON
void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
{ {
@@ -300,113 +176,6 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
} }
#ifndef __DARWIN__
void ExtendedOpenFile( ConstStr255Param message , ConstStr255Param path , const char *filter , FileFilterYDUPP fileFilter, StandardFileReply *theSFR )
{
Point thePt;
OpenUserDataRec myData;
FSSpec tempSpec;
Boolean folderFlag;
Boolean wasAliasedFlag;
DlgHookYDUPP dlgHookUPP;
ModalFilterYDUPP myModalFilterUPP;
OSErr err;
SFTypeList types ;
// presumably we're running System 7 or later so CustomGetFile is
// available
// set initial contents of Select button to a space
memcpy( theSFR->sfFile.name , "\p " , 2 ) ;
// point the user data parameter at the reply record so we can get to it later
MakeUserDataRec( &myData , filter ) ;
// display the dialog
#if !TARGET_CARBON
dlgHookUPP = NULL ;
// dlgHookUPP = NewDlgHookYDProc(SFGetFolderDialogHook);
myModalFilterUPP = NewModalFilterYDProc(SFGetFolderModalDialogFilter);
thePt.h = thePt.v = -1; // center dialog
ParamText( message , NULL , NULL , NULL ) ;
CustomGetFile( fileFilter,
-1, // show all types
NULL,
theSFR,
kSFGetFileDlgID,
thePt, // top left point
dlgHookUPP,
myModalFilterUPP,
nil, // activate list
nil, // activate proc
&myData);
DisposeRoutineDescriptor(dlgHookUPP);
DisposeRoutineDescriptor(myModalFilterUPP);
#else
#endif
// if cancel wasn't pressed and no fatal error occurred...
if (theSFR->sfGood)
{
// if no name is in the reply record file spec,
// use the file spec of the parent folder
if (theSFR->sfFile.name[0] == '\0')
{
err = FSMakeFSSpec(theSFR->sfFile.vRefNum, theSFR->sfFile.parID,
"\p", &tempSpec);
if (err == noErr)
{
theSFR->sfFile = tempSpec;
}
else
{
// no name to return, forget it
theSFR->sfGood = false;
}
}
// if there is now a name in the file spec, check if it's
// for a folder or a volume
if (theSFR->sfFile.name[0] != '\0')
{
// the parID of the root of a disk is always fsRtParID == 1
if (theSFR->sfFile.parID == fsRtParID)
{
theSFR->sfIsVolume = true;
theSFR->sfIsFolder = false; // it would be reasonable for this to be true, too
}
// we have a valid FSSpec, now let's make sure it's not for an alias file
err = ResolveAliasFile(&theSFR->sfFile, true, &folderFlag, &wasAliasedFlag);
if (err != noErr)
{
theSFR->sfGood = false;
}
// did the alias resolve to a folder?
if (folderFlag && ! theSFR->sfIsVolume)
{
theSFR->sfIsFolder = true;
}
}
}
}
#endif
static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data) static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data)
{ {
Str255 filename ; Str255 filename ;
@@ -541,6 +310,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
long style, const wxPoint& pos) long style, const wxPoint& pos)
{ {
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message; m_message = message;
m_dialogStyle = style; m_dialogStyle = style;
m_parent = parent; m_parent = parent;
@@ -578,70 +348,6 @@ pascal Boolean CrossPlatformFilterCallback (
int wxFileDialog::ShowModal() int wxFileDialog::ShowModal()
{ {
#if !TARGET_CARBON
if ( !gUseNavServices )
{
if ( m_dialogStyle & wxSAVE )
{
StandardFileReply reply ;
Str255 prompt ;
Str255 filename ;
strcpy((char *)prompt, m_message) ;
c2pstr((char *)prompt ) ;
strcpy((char *)filename, m_fileName) ;
c2pstr((char *)filename ) ;
StandardPutFile( prompt , filename , &reply ) ;
if ( reply.sfGood == false )
{
m_path = "" ;
return wxID_CANCEL ;
}
else
{
m_path = wxMacFSSpec2MacFilename( &reply.sfFile ) ;
return wxID_OK ;
}
}
else
{
OSType types = '????' ;
Str255 prompt ;
Str255 path ;
strcpy((char *)prompt, m_message) ;
c2pstr((char *)prompt ) ;
strcpy((char *)path, m_dir ) ;
c2pstr((char *)path ) ;
StandardFileReply reply ;
FileFilterYDUPP crossPlatformFileFilterUPP = 0 ;
#if !TARGET_CARBON
crossPlatformFileFilterUPP =
NewFileFilterYDProc(CrossPlatformFileFilter);
#endif
ExtendedOpenFile( prompt , path , m_wildCard , crossPlatformFileFilterUPP, &reply);
#if !TARGET_CARBON
DisposeFileFilterYDUPP(crossPlatformFileFilterUPP);
#endif
if ( reply.sfGood == false )
{
m_path = "" ;
return wxID_CANCEL ;
}
else
{
m_path = wxMacFSSpec2UnixFilename( &reply.sfFile ) ;
return wxID_OK ;
}
}
return wxID_CANCEL;
}
else
#endif
{
NavDialogOptions mNavOptions; NavDialogOptions mNavOptions;
NavObjectFilterUPP mNavFilterUPP = NULL; NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ; NavPreviewUPP mNavPreviewUPP = NULL ;
@@ -800,7 +506,6 @@ int wxFileDialog::ShowModal()
return wxID_OK ; return wxID_OK ;
} }
return wxID_CANCEL; return wxID_CANCEL;
}
} }
// Generic file load/save dialog // Generic file load/save dialog

View File

@@ -22,6 +22,9 @@
#include "wx/fontutil.h" #include "wx/fontutil.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
#endif #endif

View File

@@ -37,6 +37,8 @@
#include "wx/fontmap.h" #include "wx/fontmap.h"
#include "wx/fontutil.h" #include "wx/fontutil.h"
#include "wx/mac/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// private classes // private classes
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -41,7 +41,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , range, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , range,
kControlProgressBarProc , (long) this ) ; kControlProgressBarProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -60,13 +60,13 @@ void wxGauge::SetBezelFace(int w)
void wxGauge::SetRange(int r) void wxGauge::SetRange(int r)
{ {
m_rangeMax = r; m_rangeMax = r;
::SetControlMaximum( m_macControl , m_rangeMax ) ; ::SetControlMaximum( (ControlHandle) m_macControl , m_rangeMax ) ;
} }
void wxGauge::SetValue(int pos) void wxGauge::SetValue(int pos)
{ {
m_gaugePos = pos; m_gaugePos = pos;
::SetControlValue( m_macControl , m_gaugePos ) ; ::SetControlValue( (ControlHandle) m_macControl , m_gaugePos ) ;
} }
int wxGauge::GetShadowWidth() const int wxGauge::GetShadowWidth() const

View File

@@ -45,7 +45,7 @@ wxGLContext::wxGLContext(
{ {
m_window = win; m_window = win;
m_drawable = (AGLDrawable) UMAGetWindowPort(win->MacGetRootWindow()); m_drawable = (AGLDrawable) UMAGetWindowPort(MAC_WXHWND(win->MacGetRootWindow()));
m_glContext = aglCreateContext(fmt, other ? other->m_glContext : NULL); m_glContext = aglCreateContext(fmt, other ? other->m_glContext : NULL);
wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") ); wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") );
@@ -251,7 +251,7 @@ void wxGLCanvas::SetViewport()
int width, height; int width, height;
GetClientSize(& width, & height); GetClientSize(& width, & height);
Rect bounds ; Rect bounds ;
GetWindowPortBounds( MacGetRootWindow() , &bounds ) ; GetWindowPortBounds( MAC_WXHWND(MacGetRootWindow()) , &bounds ) ;
GLint parms[4] ; GLint parms[4] ;
parms[0] = x ; parms[0] = x ;
parms[1] = bounds.bottom - bounds.top - ( y + height ) ; parms[1] = bounds.bottom - bounds.top - ( y + height ) ;

View File

@@ -29,6 +29,7 @@
#define TRUE 1 #define TRUE 1
#endif #endif
#else #else
#include <MacHeaders.c>
#define OTUNIXERRORS 1 #define OTUNIXERRORS 1
#include <OpenTransport.h> #include <OpenTransport.h>
#include <OpenTransportProviders.h> #include <OpenTransportProviders.h>

View File

@@ -19,6 +19,9 @@
IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
#endif #endif
#include "wx/mac/private.h"
/* /*
* Icons * Icons
*/ */
@@ -43,18 +46,18 @@ wxIcon::wxIcon( char **bits ) :
{ {
} }
wxIcon::wxIcon(const wxString& icon_file, long flags, wxIcon::wxIcon(const wxString& icon_file, int flags,
int desiredWidth, int desiredHeight) int desiredWidth, int desiredHeight)
{ {
LoadFile(icon_file, flags, desiredWidth, desiredHeight); LoadFile(icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight);
} }
wxIcon::~wxIcon() wxIcon::~wxIcon()
{ {
} }
bool wxIcon::LoadFile(const wxString& filename, long type, bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
int desiredWidth, int desiredHeight) int desiredWidth, int desiredHeight)
{ {
UnRef(); UnRef();

View File

@@ -93,10 +93,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
if( isSelected ) { if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
} }
// Restore the saved clip region. // Restore the saved clip region.
@@ -111,10 +111,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
GetPort( &grafPtr ); GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr)grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
break; break;
default : default :
break ; break ;
@@ -171,36 +171,36 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true, CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, &m_macControl ); kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag, GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize); sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this); SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false); SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else #else
long result ; long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0, kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ; kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ; sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ; HLock( (Handle) m_macList ) ;
ldefHandle ldef ; ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ; ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL ) if ( (**(ListHandle)m_macList).listDefProc != NULL )
{ {
(**ldef).instruction = 0x4EF9; /* JMP instruction */ (**ldef).instruction = 0x4EF9; /* JMP instruction */
(**ldef).function = (void(*)()) listDef.u.userProc; (**ldef).function = (void(*)()) listDef.u.userProc;
(**m_macList).listDefProc = (Handle) ldef ; (**(ListHandle)m_macList).listDefProc = (Handle) ldef ;
} }
Point pt = (**m_macList).cellSize ; Point pt = (**(ListHandle)m_macList).cellSize ;
pt.v = kwxMacListItemHeight ; pt.v = kwxMacListItemHeight ;
LCellSize( pt , m_macList ) ; LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ; LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif #endif
OptionBits options = 0; OptionBits options = 0;
if ( style & wxLB_MULTIPLE ) if ( style & wxLB_MULTIPLE )
@@ -215,7 +215,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
{ {
options = lOnlyOne ; options = lOnlyOne ;
} }
SetListSelectionFlags(m_macList, options); SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -224,7 +224,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
Append( choices[i] ) ; Append( choices[i] ) ;
} }
LSetDrawingMode( true , m_macList ) ; LSetDrawingMode( true , (ListHandle)m_macList ) ;
return TRUE; return TRUE;
} }
@@ -235,8 +235,8 @@ wxListBox::~wxListBox()
if ( m_macList ) if ( m_macList )
{ {
#if !TARGET_CARBON #if !TARGET_CARBON
DisposeHandle( (**m_macList).listDefProc ) ; DisposeHandle( (**(ListHandle)m_macList).listDefProc ) ;
(**m_macList).listDefProc = NULL ; (**(ListHandle)m_macList).listDefProc = NULL ;
#endif #endif
m_macList = NULL ; m_macList = NULL ;
} }
@@ -272,7 +272,7 @@ void wxListBox::DoSetSize(int x, int y,
wxControl::DoSetSize( x , y , width , height , sizeFlags ) ; wxControl::DoSetSize( x , y , width , height , sizeFlags ) ;
#if TARGET_CARBON #if TARGET_CARBON
Rect bounds ; Rect bounds ;
GetControlBounds( m_macControl , &bounds ) ; GetControlBounds( (ControlHandle) m_macControl , &bounds ) ;
ControlRef control = GetListVerticalScrollBar( m_macList ) ; ControlRef control = GetListVerticalScrollBar( m_macList ) ;
if ( control ) if ( control )
{ {
@@ -633,7 +633,7 @@ void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refC
void wxListBox::MacDelete( int N ) void wxListBox::MacDelete( int N )
{ {
LDelRow( 1 , N , m_macList) ; LDelRow( 1 , N , (ListHandle)m_macList) ;
Refresh(); Refresh();
} }
@@ -641,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text)
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
@@ -649,15 +649,15 @@ void wxListBox::MacInsert( int n , const char * text)
void wxListBox::MacAppend( const char * text) void wxListBox::MacAppend( const char * text)
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = (**m_macList).dataBounds.bottom ; cell.v = (**(ListHandle)m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
void wxListBox::MacClear() void wxListBox::MacClear()
{ {
LDelRow( (**m_macList).dataBounds.bottom , 0 , m_macList ) ; LDelRow( (**(ListHandle)m_macList).dataBounds.bottom , 0 ,(ListHandle) m_macList ) ;
Refresh(); Refresh();
} }
@@ -666,15 +666,15 @@ void wxListBox::MacSetSelection( int n , bool select )
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
if ( ! (m_windowStyle & wxLB_MULTIPLE) ) if ( ! (m_windowStyle & wxLB_MULTIPLE) )
{ {
if ( LGetSelect( true , &cell , m_macList ) ) if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
{ {
LSetSelect( false , cell , m_macList ) ; LSetSelect( false , cell , (ListHandle)m_macList ) ;
} }
} }
cell.v = n ; cell.v = n ;
LSetSelect( select , cell , m_macList ) ; LSetSelect( select , cell , (ListHandle)m_macList ) ;
LAutoScroll( m_macList ) ; LAutoScroll( (ListHandle)m_macList ) ;
Refresh(); Refresh();
} }
@@ -682,7 +682,7 @@ bool wxListBox::MacIsSelected( int n ) const
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
return LGetSelect( false , &cell , m_macList ) ; return LGetSelect( false , &cell , (ListHandle)m_macList ) ;
} }
void wxListBox::MacDestroy() void wxListBox::MacDestroy()
@@ -693,7 +693,7 @@ void wxListBox::MacDestroy()
int wxListBox::MacGetSelection() const int wxListBox::MacGetSelection() const
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
if ( LGetSelect( true , &cell , m_macList ) ) if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
return cell.v ; return cell.v ;
else else
return -1 ; return -1 ;
@@ -708,7 +708,7 @@ int wxListBox::MacGetSelections( wxArrayInt& aSelections ) const
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = 0 ; cell.v = 0 ;
while ( LGetSelect( true , &cell , m_macList ) ) while ( LGetSelect( true , &cell ,(ListHandle) m_macList ) )
{ {
aSelections.Add( cell.v ) ; aSelections.Add( cell.v ) ;
no_sel++ ; no_sel++ ;
@@ -739,18 +739,18 @@ void wxListBox::OnSize( const wxSizeEvent &event)
#if TARGET_CARBON #if TARGET_CARBON
GetListCellSize(m_macList, &pt); GetListCellSize(m_macList, &pt);
#else #else
pt = (**m_macList).cellSize ; pt = (**(ListHandle)m_macList).cellSize ;
#endif #endif
pt.h = m_width - 15 ; pt.h = m_width - 15 ;
LCellSize( pt , m_macList ) ; LCellSize( pt , (ListHandle)m_macList ) ;
} }
void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
Boolean wasDoubleClick = false ; Boolean wasDoubleClick = false ;
long result ; long result ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ; ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ;
if ( !wasDoubleClick ) if ( !wasDoubleClick )
{ {
MacDoClick() ; MacDoClick() ;
@@ -763,7 +763,7 @@ void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpar
void wxListBox::MacSetRedraw( bool doDraw ) void wxListBox::MacSetRedraw( bool doDraw )
{ {
LSetDrawingMode( doDraw , m_macList ) ; LSetDrawingMode( doDraw , (ListHandle)m_macList ) ;
} }

View File

@@ -8,6 +8,9 @@
*/ */
#include "wx/wx.h" #include "wx/wx.h"
#include "wx/mac/private.h"
#include "wx/mac/macnotfy.h" #include "wx/mac/macnotfy.h"
const short kMaxEvents = 1000 ; const short kMaxEvents = 1000 ;
@@ -74,6 +77,7 @@ void wxMacAddEvent(
short wakeUp ) short wakeUp )
{ {
wxMacNotificationEvents *e = (wxMacNotificationEvents *) table ; wxMacNotificationEvents *e = (wxMacNotificationEvents *) table ;
wxASSERT_MSG( handler != NULL , "illegal notification proc ptr" ) ;
/* this should be protected eventually */ /* this should be protected eventually */
short index = e->top++ ; short index = e->top++ ;
@@ -125,7 +129,8 @@ void wxMacProcessNotifierEvents()
gMacNotificationEvents.events[index] = NULL ; gMacNotificationEvents.events[index] = NULL ;
gMacNotificationEvents.proc[index] = NULL ; gMacNotificationEvents.proc[index] = NULL ;
handler( event , data ) ; if ( handler )
handler( event , data ) ;
} }
gInProcessing = false ; gInProcessing = false ;
} }

View File

@@ -17,6 +17,8 @@
#include "wx/menu.h" #include "wx/menu.h"
#include "wx/settings.h" #include "wx/settings.h"
#include "wx/mac/private.h"
extern wxWindowList wxModelessWindows; extern wxWindowList wxModelessWindows;
#if !USE_SHARED_LIBRARY #if !USE_SHARED_LIBRARY

View File

@@ -88,8 +88,8 @@ void wxMenu::Init()
wxMenu::~wxMenu() wxMenu::~wxMenu()
{ {
if (m_hMenu) if (MAC_WXHMENU(m_hMenu))
::DisposeMenu(m_hMenu); ::DisposeMenu(MAC_WXHMENU(m_hMenu));
#if wxUSE_ACCEL #if wxUSE_ACCEL
// delete accels // delete accels
@@ -164,11 +164,11 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
{ {
if ( pos == (size_t)-1 ) if ( pos == (size_t)-1 )
{ {
MacAppendMenu(m_hMenu, "\p-"); MacAppendMenu(MAC_WXHMENU(m_hMenu), "\p-");
} }
else else
{ {
MacInsertMenuItem(m_hMenu, "\p-" , pos); MacInsertMenuItem(MAC_WXHMENU(m_hMenu), "\p-" , pos);
} }
} }
else else
@@ -183,16 +183,16 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar) if (wxMenuBar::MacGetInstalledMenuBar() == m_menuBar)
{ {
::InsertMenu( pSubMenu->m_hMenu , -1 ) ; ::InsertMenu( MAC_WXHMENU( pSubMenu->m_hMenu ) , -1 ) ;
} }
if ( pos == (size_t)-1 ) if ( pos == (size_t)-1 )
{ {
UMAAppendSubMenuItem(m_hMenu, label, pSubMenu->m_macMenuId); UMAAppendSubMenuItem(MAC_WXHMENU(m_hMenu), label, pSubMenu->m_macMenuId);
} }
else else
{ {
UMAInsertSubMenuItem(m_hMenu, label , pos, pSubMenu->m_macMenuId); UMAInsertSubMenuItem(MAC_WXHMENU(m_hMenu), label , pos, pSubMenu->m_macMenuId);
} }
} }
else else
@@ -209,21 +209,21 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos)
} }
if ( pos == (size_t)-1 ) if ( pos == (size_t)-1 )
{ {
UMAAppendMenuItem(m_hMenu, label,key,modifiers); UMAAppendMenuItem(MAC_WXHMENU(m_hMenu), label,key,modifiers);
} }
else else
{ {
UMAInsertMenuItem(m_hMenu, label , pos,key,modifiers); UMAInsertMenuItem(MAC_WXHMENU(m_hMenu), label , pos,key,modifiers);
} }
if ( pItem->GetId() == idMenuTitle ) if ( pItem->GetId() == idMenuTitle )
{ {
if ( pos == (size_t)-1 ) if ( pos == (size_t)-1 )
{ {
UMADisableMenuItem( m_hMenu , CountMenuItems( m_hMenu ) ) ; UMADisableMenuItem(MAC_WXHMENU(m_hMenu) , CountMenuItems(MAC_WXHMENU(m_hMenu) ) ) ;
} }
else else
{ {
UMADisableMenuItem( m_hMenu , pos + 1 ) ; UMADisableMenuItem(MAC_WXHMENU(m_hMenu) , pos + 1 ) ;
} }
} }
} }
@@ -274,7 +274,7 @@ wxMenuItem *wxMenu::DoRemove(wxMenuItem *item)
//else: this item doesn't have an accel, nothing to do //else: this item doesn't have an accel, nothing to do
#endif // wxUSE_ACCEL #endif // wxUSE_ACCEL
::DeleteMenuItem( m_hMenu , pos + 1); ::DeleteMenuItem(MAC_WXHMENU(m_hMenu) , pos + 1);
if ( IsAttached() ) if ( IsAttached() )
{ {
@@ -312,7 +312,7 @@ void wxMenu::SetTitle(const wxString& label)
Str255 title ; Str255 title ;
m_title = label ; m_title = label ;
wxMenuItem::MacBuildMenuString( title, NULL , NULL , label , false ); wxMenuItem::MacBuildMenuString( title, NULL , NULL , label , false );
UMASetMenuTitle( m_hMenu , title ) ; UMASetMenuTitle(MAC_WXHMENU(m_hMenu) , title ) ;
} }
bool wxMenu::ProcessCommand(wxCommandEvent & event) bool wxMenu::ProcessCommand(wxCommandEvent & event)
{ {
@@ -399,9 +399,9 @@ int wxMenu::MacGetIndexFromItem( wxMenuItem *pItem )
void wxMenu::MacEnableMenu( bool bDoEnable ) void wxMenu::MacEnableMenu( bool bDoEnable )
{ {
if ( bDoEnable ) if ( bDoEnable )
UMAEnableMenuItem( m_hMenu , 0 ) ; UMAEnableMenuItem(MAC_WXHMENU(m_hMenu) , 0 ) ;
else else
UMADisableMenuItem( m_hMenu , 0 ) ; UMADisableMenuItem(MAC_WXHMENU(m_hMenu) , 0 ) ;
::DrawMenuBar() ; ::DrawMenuBar() ;
} }
@@ -691,7 +691,7 @@ void wxMenuBar::MacInstallMenuBar()
else else
{ {
wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false ); wxMenuItem::MacBuildMenuString( label, NULL , NULL , m_titles[i] , false );
UMASetMenuTitle( menu->GetHMenu() , label ) ; UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , label ) ;
wxArrayPtrVoid submenus ; wxArrayPtrVoid submenus ;
for (pos = 0, node = menu->GetMenuItems().First(); node; node = node->Next(), pos++) for (pos = 0, node = menu->GetMenuItems().First(); node; node = node->Next(), pos++)
@@ -703,7 +703,7 @@ void wxMenuBar::MacInstallMenuBar()
submenus.Add(subMenu) ; submenus.Add(subMenu) ;
} }
} }
::InsertMenu(m_menus[i]->GetHMenu(), 0); ::InsertMenu(MAC_WXHMENU(m_menus[i]->GetHMenu()), 0);
for ( int i = 0 ; i < submenus.GetCount() ; ++i ) for ( int i = 0 ; i < submenus.GetCount() ; ++i )
{ {
wxMenu* submenu = (wxMenu*) submenus[i] ; wxMenu* submenu = (wxMenu*) submenus[i] ;
@@ -719,7 +719,7 @@ void wxMenuBar::MacInstallMenuBar()
submenus.Add(itsSubMenu) ; submenus.Add(itsSubMenu) ;
} }
} }
::InsertMenu( submenu->GetHMenu() , -1 ) ; ::InsertMenu( MAC_WXHMENU(submenu->GetHMenu()) , -1 ) ;
} }
} }
} }
@@ -802,14 +802,14 @@ wxMenu *wxMenuBar::Replace(size_t pos, wxMenu *menu, const wxString& title)
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label, NULL , NULL , title , false ); wxMenuItem::MacBuildMenuString( label, NULL , NULL , title , false );
UMASetMenuTitle( menu->GetHMenu() , label ) ; UMASetMenuTitle( MAC_WXHMENU(menu->GetHMenu()) , label ) ;
if ( pos == m_menus.GetCount() - 1) if ( pos == m_menus.GetCount() - 1)
{ {
::InsertMenu( menu->GetHMenu() , 0 ) ; ::InsertMenu( MAC_WXHMENU(menu->GetHMenu()) , 0 ) ;
} }
else else
{ {
::InsertMenu( menu->GetHMenu() , m_menus[pos+1]->MacGetMenuId() ) ; ::InsertMenu( MAC_WXHMENU(menu->GetHMenu()) , m_menus[pos+1]->MacGetMenuId() ) ;
} }
} }
} }
@@ -842,11 +842,11 @@ bool wxMenuBar::Insert(size_t pos, wxMenu *menu, const wxString& title)
{ {
if ( pos == (size_t) -1 ) if ( pos == (size_t) -1 )
{ {
::InsertMenu( menu->GetHMenu() , 0 ) ; ::InsertMenu( MAC_WXHMENU(menu->GetHMenu()) , 0 ) ;
} }
else else
{ {
::InsertMenu( menu->GetHMenu() , m_menus[pos+1]->MacGetMenuId() ) ; ::InsertMenu( MAC_WXHMENU(menu->GetHMenu()) , m_menus[pos+1]->MacGetMenuId() ) ;
} }
#if wxUSE_ACCEL #if wxUSE_ACCEL
@@ -951,7 +951,7 @@ bool wxMenuBar::Append(wxMenu *menu, const wxString& title)
{ {
if (s_macInstalledMenuBar == this) if (s_macInstalledMenuBar == this)
{ {
::InsertMenu( menu->GetHMenu() , 0 ) ; ::InsertMenu( MAC_WXHMENU(menu->GetHMenu()) , 0 ) ;
} }
#if wxUSE_ACCEL #if wxUSE_ACCEL

View File

@@ -249,30 +249,30 @@ void wxMenuItem::Enable(bool bDoEnable)
if ( m_subMenu == NULL ) if ( m_subMenu == NULL )
{ {
// normal menu item // normal menu item
if ( m_parentMenu->GetHMenu() ) if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{ {
int index = m_parentMenu->MacGetIndexFromItem( this ) ; int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 ) if ( index >= 1 )
{ {
if ( bDoEnable ) if ( bDoEnable )
UMAEnableMenuItem( m_parentMenu->GetHMenu() , index ) ; UMAEnableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
else else
UMADisableMenuItem( m_parentMenu->GetHMenu() , index ) ; UMADisableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
} }
} }
} }
else else
{ {
// submenu // submenu
if ( m_parentMenu->GetHMenu() ) if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{ {
int index = m_parentMenu->MacGetIndexFromItem( this ) ; int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 ) if ( index >= 1 )
{ {
if ( bDoEnable ) if ( bDoEnable )
UMAEnableMenuItem( m_parentMenu->GetHMenu() , index ) ; UMAEnableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
else else
UMADisableMenuItem( m_parentMenu->GetHMenu() , index ) ; UMADisableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
} }
} }
} }
@@ -288,15 +288,15 @@ void wxMenuItem::Check(bool bDoCheck)
if ( m_isChecked != bDoCheck ) if ( m_isChecked != bDoCheck )
{ {
m_isChecked = bDoCheck; m_isChecked = bDoCheck;
if ( m_parentMenu->GetHMenu() ) if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{ {
int index = m_parentMenu->MacGetIndexFromItem( this ) ; int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 ) if ( index >= 1 )
{ {
if ( bDoCheck ) if ( bDoCheck )
::SetItemMark( m_parentMenu->GetHMenu() , index , 0x12 ) ; // checkmark ::SetItemMark( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index , 0x12 ) ; // checkmark
else else
::SetItemMark( m_parentMenu->GetHMenu() , index , 0 ) ; // no mark ::SetItemMark( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index , 0 ) ; // no mark
} }
} }
} }
@@ -312,14 +312,14 @@ void wxMenuItem::SetText(const wxString& text)
// OWNER_DRAWN_ONLY( wxOwnerDrawn::SetName(text) ); // OWNER_DRAWN_ONLY( wxOwnerDrawn::SetName(text) );
wxCHECK_RET( m_parentMenu && m_parentMenu->GetHMenu(), wxT("menuitem without menu") ); wxCHECK_RET( m_parentMenu && m_parentMenu->GetHMenu(), wxT("menuitem without menu") );
if ( m_parentMenu->GetHMenu() ) if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{ {
int index = m_parentMenu->MacGetIndexFromItem( this ) ; int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 ) if ( index >= 1 )
{ {
Str255 label; Str255 label;
MacBuildMenuString( label , NULL , NULL , text ,false); MacBuildMenuString( label , NULL , NULL , text ,false);
::SetMenuItemText( m_parentMenu->GetHMenu() , index , label ) ; // checkmark ::SetMenuItemText( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index , label ) ; // checkmark
} }
} }

View File

@@ -34,6 +34,8 @@
#include "wx/metafile.h" #include "wx/metafile.h"
#include "wx/clipbrd.h" #include "wx/clipbrd.h"
#include "wx/mac/private.h"
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@@ -59,7 +61,7 @@ wxMetafileRefData::~wxMetafileRefData(void)
{ {
if (m_metafile) if (m_metafile)
{ {
KillPicture( m_metafile ) ; KillPicture( (PicHandle) m_metafile ) ;
m_metafile = 0; m_metafile = 0;
} }
} }
@@ -104,7 +106,7 @@ bool wxMetaFile::SetClipboard(int width, int height)
return TRUE ; return TRUE ;
} }
void wxMetafile::SetHMETAFILE(PicHandle mf) void wxMetafile::SetHMETAFILE(WXHMETAFILE mf)
{ {
if (!m_refData) if (!m_refData)
m_refData = new wxMetafileRefData; m_refData = new wxMetafileRefData;
@@ -122,7 +124,7 @@ bool wxMetaFile::Play(wxDC *dc)
{ {
wxMacPortSetter helper( dc ) ; wxMacPortSetter helper( dc ) ;
PicHandle pict = GetHMETAFILE() ; PicHandle pict = (PicHandle) GetHMETAFILE() ;
DrawPicture( pict , &(**pict).picFrame ) ; DrawPicture( pict , &(**pict).picFrame ) ;
} }
return TRUE; return TRUE;
@@ -149,7 +151,7 @@ wxMetaFileDC::wxMetaFileDC(const wxString& file)
Rect r={0,0,1000,1000} ; Rect r={0,0,1000,1000} ;
m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ; m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ;
::GetPort( &m_macPort ) ; ::GetPort( (GrafPtr*) &m_macPort ) ;
m_ok = TRUE ; m_ok = TRUE ;
SetMapMode(wxMM_TEXT); SetMapMode(wxMM_TEXT);
@@ -171,7 +173,7 @@ wxMetaFileDC::wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, i
Rect r={yorg,xorg,yorg+yext,xorg+xext} ; Rect r={yorg,xorg,yorg+yext,xorg+xext} ;
m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ; m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ;
::GetPort( &m_macPort ) ; ::GetPort( (GrafPtr*) &m_macPort ) ;
m_ok = TRUE ; m_ok = TRUE ;
SetMapMode(wxMM_TEXT); SetMapMode(wxMM_TEXT);
@@ -195,7 +197,7 @@ size_t wxMetafileDataObject::GetDataSize() const
bool wxMetafileDataObject::GetDataHere(void *buf) const bool wxMetafileDataObject::GetDataHere(void *buf) const
{ {
memcpy( buf , (*(*((wxMetafile*)&m_metafile)).GetHMETAFILE()) , memcpy( buf , (*(PicHandle)(*((wxMetafile*)&m_metafile)).GetHMETAFILE()) ,
GetHandleSize( (Handle) (*((wxMetafile*)&m_metafile)).GetHMETAFILE() ) ) ; GetHandleSize( (Handle) (*((wxMetafile*)&m_metafile)).GetHMETAFILE() ) ) ;
return true ; return true ;
} }

View File

@@ -130,7 +130,7 @@ bool wxNotebook::Create(wxWindow *parent,
MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlTabSmallProc , (long) this ) ; kControlTabSmallProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -168,7 +168,7 @@ int wxNotebook::SetSelection(int nPage)
return m_nSelection ; return m_nSelection ;
ChangePage(m_nSelection, nPage); ChangePage(m_nSelection, nPage);
SetControlValue( m_macControl , m_nSelection + 1 ) ; SetControlValue( (ControlHandle) m_macControl , m_nSelection + 1 ) ;
return m_nSelection; return m_nSelection;
} }
@@ -291,7 +291,7 @@ bool wxNotebook::InsertPage(int nPage,
*/ */
void wxNotebook::MacSetupTabs() void wxNotebook::MacSetupTabs()
{ {
SetControlMaximum( m_macControl , GetPageCount() ) ; SetControlMaximum( (ControlHandle) m_macControl , GetPageCount() ) ;
wxNotebookPage *page; wxNotebookPage *page;
ControlTabInfoRec info; ControlTabInfoRec info;
@@ -307,14 +307,14 @@ void wxNotebook::MacSetupTabs()
strcpy( (char *) info.name , page->GetLabel() ) ; strcpy( (char *) info.name , page->GetLabel() ) ;
c2pstr( (char *) info.name ) ; c2pstr( (char *) info.name ) ;
#endif #endif
SetControlData( m_macControl, ii+1, kControlTabInfoTag, SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabInfoTag,
sizeof( ControlTabInfoRec) , (char*) &info ) ; sizeof( ControlTabInfoRec) , (char*) &info ) ;
SetControlData( m_macControl, ii+1, kControlTabEnabledFlagTag, SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabEnabledFlagTag,
sizeof( Boolean ), (Ptr)&enabled ); sizeof( Boolean ), (Ptr)&enabled );
} }
Rect bounds; Rect bounds;
GetControlBounds(m_macControl, &bounds); GetControlBounds((ControlHandle)m_macControl, &bounds);
InvalWindowRect(MacGetRootWindow(), &bounds); InvalWindowRect((WindowRef)MacGetRootWindow(), &bounds);
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -436,9 +436,9 @@ void wxNotebook::ChangePage(int nOldSel, int nSel)
m_nSelection = nSel; m_nSelection = nSel;
} }
void wxNotebook::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxNotebook::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId , ::GetControlValue(m_macControl) - 1, m_nSelection); wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId , ::GetControlValue((ControlHandle)m_macControl) - 1, m_nSelection);
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);

View File

@@ -76,7 +76,7 @@ int wxPrintDialog::ShowModal()
if ( err == noErr ) if ( err == noErr )
{ {
m_printDialogData.ConvertToNative() ; m_printDialogData.ConvertToNative() ;
if ( ::PrJobDialog( m_printDialogData.GetPrintData().m_macPrintInfo ) ) if ( ::PrJobDialog( (THPrint) m_printDialogData.GetPrintData().m_macPrintInfo ) )
{ {
m_printDialogData.ConvertFromNative() ; m_printDialogData.ConvertFromNative() ;
result = wxID_OK ; result = wxID_OK ;
@@ -228,7 +228,7 @@ int wxPageSetupDialog::ShowModal()
if ( err == noErr ) if ( err == noErr )
{ {
m_pageSetupData.ConvertToNative() ; m_pageSetupData.ConvertToNative() ;
if ( ::PrStlDialog( m_pageSetupData.GetPrintData().m_macPrintInfo ) ) if ( ::PrStlDialog( (THPrint) m_pageSetupData.GetPrintData().m_macPrintInfo ) )
{ {
m_pageSetupData.ConvertFromNative() ; m_pageSetupData.ConvertFromNative() ;
result = wxID_OK ; result = wxID_OK ;

View File

@@ -29,6 +29,8 @@
#include "wx/msgdlg.h" #include "wx/msgdlg.h"
#endif #endif
#include "wx/mac/private.h"
#include "wx/mac/printmac.h" #include "wx/mac/printmac.h"
#include "wx/dcprint.h" #include "wx/dcprint.h"
#include "wx/printdlg.h" #include "wx/printdlg.h"

View File

@@ -117,7 +117,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
MacPreControlCreate( parent , id , label , pos , size ,style, val , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, val , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlGroupBoxTextTitleProc , (long) this ) ; kControlGroupBoxTextTitleProc , (long) this ) ;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)

View File

@@ -35,7 +35,7 @@ bool wxRadioButton::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlRadioButtonProc , (long) this ) ; kControlRadioButtonProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -70,10 +70,10 @@ void wxRadioButton::SetValue(bool val)
{ {
int i; int i;
wxRadioButton *cycle; wxRadioButton *cycle;
if ( GetControlValue( m_macControl ) == val ) if ( GetControlValue( (ControlHandle) m_macControl ) == val )
return ; return ;
::SetControlValue( m_macControl , val ) ; ::SetControlValue( (ControlHandle) m_macControl , val ) ;
if (val) if (val)
{ {
cycle=this->NextInCycle(); cycle=this->NextInCycle();
@@ -89,7 +89,7 @@ void wxRadioButton::SetValue(bool val)
bool wxRadioButton::GetValue() const bool wxRadioButton::GetValue() const
{ {
return ::GetControlValue( m_macControl ) ; return ::GetControlValue( (ControlHandle) m_macControl ) ;
} }
void wxRadioButton::Command (wxCommandEvent & event) void wxRadioButton::Command (wxCommandEvent & event)
@@ -98,7 +98,7 @@ void wxRadioButton::Command (wxCommandEvent & event)
ProcessCommand (event); ProcessCommand (event);
} }
void wxRadioButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxRadioButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
if ( GetValue() ) if ( GetValue() )
return ; return ;

View File

@@ -63,25 +63,25 @@ wxRegion::wxRegion()
wxRegion::wxRegion(WXHRGN hRegion ) wxRegion::wxRegion(WXHRGN hRegion )
{ {
m_refData = new wxRegionRefData; m_refData = new wxRegionRefData;
CopyRgn( hRegion , M_REGION ) ; CopyRgn( (RgnHandle) hRegion , (RgnHandle) M_REGION ) ;
} }
wxRegion::wxRegion(long x, long y, long w, long h) wxRegion::wxRegion(long x, long y, long w, long h)
{ {
m_refData = new wxRegionRefData; m_refData = new wxRegionRefData;
SetRectRgn( M_REGION , x , y , x+w , y+h ) ; SetRectRgn( (RgnHandle) M_REGION , x , y , x+w , y+h ) ;
} }
wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight)
{ {
m_refData = new wxRegionRefData; m_refData = new wxRegionRefData;
SetRectRgn( M_REGION , topLeft.x , topLeft.y , bottomRight.x , bottomRight.y ) ; SetRectRgn( (RgnHandle) M_REGION , topLeft.x , topLeft.y , bottomRight.x , bottomRight.y ) ;
} }
wxRegion::wxRegion(const wxRect& rect) wxRegion::wxRegion(const wxRect& rect)
{ {
m_refData = new wxRegionRefData; m_refData = new wxRegionRefData;
SetRectRgn( M_REGION , rect.x , rect.y , rect.x+rect.width , rect.y+rect.height ) ; SetRectRgn( (RgnHandle) M_REGION , rect.x , rect.y , rect.x+rect.width , rect.y+rect.height ) ;
} }
/*! /*!

View File

@@ -43,12 +43,12 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , true , 0 , 0 , 100, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , true , 0 , 0 , 100,
kControlScrollBarLiveProc , (long) this ) ; kControlScrollBarLiveProc , (long) this ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
::SetControlAction( m_macControl , wxMacLiveScrollbarActionUPP ) ; ::SetControlAction( (ControlHandle) m_macControl , wxMacLiveScrollbarActionUPP ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -61,12 +61,12 @@ wxScrollBar::~wxScrollBar()
void wxScrollBar::SetThumbPosition(int viewStart) void wxScrollBar::SetThumbPosition(int viewStart)
{ {
::SetControlValue( m_macControl , viewStart ) ; ::SetControlValue( (ControlHandle) m_macControl , viewStart ) ;
} }
int wxScrollBar::GetThumbPosition() const int wxScrollBar::GetThumbPosition() const
{ {
return ::GetControlValue( m_macControl ) ; return ::GetControlValue( (ControlHandle) m_macControl ) ;
} }
void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize,
@@ -78,15 +78,15 @@ void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageS
int range1 = wxMax((m_objectSize - m_pageSize), 0) ; int range1 = wxMax((m_objectSize - m_pageSize), 0) ;
SetControlMaximum( m_macControl , range1 ) ; SetControlMaximum( (ControlHandle) m_macControl , range1 ) ;
SetControlMinimum( m_macControl , 0 ) ; SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlValue( m_macControl , position ) ; SetControlValue( (ControlHandle) m_macControl , position ) ;
if ( UMAGetAppearanceVersion() >= 0x0110 ) if ( UMAGetAppearanceVersion() >= 0x0110 )
{ {
if ( SetControlViewSize != (void*) kUnresolvedCFragSymbolAddress ) if ( SetControlViewSize != (void*) kUnresolvedCFragSymbolAddress )
{ {
SetControlViewSize( m_macControl , m_pageSize ) ; SetControlViewSize( (ControlHandle) m_macControl , m_pageSize ) ;
} }
} }
Refresh() ; Refresh() ;
@@ -99,14 +99,14 @@ void wxScrollBar::Command(wxCommandEvent& event)
ProcessCommand(event); ProcessCommand(event);
} }
void wxScrollBar::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxScrollBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
return ; return ;
int position = GetControlValue( m_macControl) ; int position = GetControlValue( (ControlHandle) m_macControl) ;
int minPos = GetControlMinimum( m_macControl) ; int minPos = GetControlMinimum( (ControlHandle) m_macControl) ;
int maxPos = GetControlMaximum( m_macControl) ; int maxPos = GetControlMaximum( (ControlHandle) m_macControl) ;
wxEventType scrollEvent = wxEVT_NULL; wxEventType scrollEvent = wxEVT_NULL;
int nScrollInc; int nScrollInc;

View File

@@ -17,6 +17,8 @@
#include "wx/gdicmn.h" #include "wx/gdicmn.h"
#include "wx/utils.h" #include "wx/utils.h"
#include "wx/mac/uma.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxSystemSettingsNative // wxSystemSettingsNative
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -84,12 +84,12 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
} }
m_macControl = ::NewControl( parent->MacGetRootWindow(), &bounds, title, false, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()), &bounds, title, false,
value, minValue, maxValue, procID, (long) this); value, minValue, maxValue, procID, (long) this);
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
::SetControlAction( m_macControl , wxMacLiveScrollbarActionUPP ) ; ::SetControlAction( (ControlHandle) m_macControl , wxMacLiveScrollbarActionUPP ) ;
if(style & wxSL_LABELS) if(style & wxSL_LABELS)
{ {
@@ -127,7 +127,7 @@ wxSlider::~wxSlider()
int wxSlider::GetValue() const int wxSlider::GetValue() const
{ {
return GetControlValue( m_macControl) ; return GetControlValue( (ControlHandle) m_macControl) ;
} }
void wxSlider::SetValue(int value) void wxSlider::SetValue(int value)
@@ -136,7 +136,7 @@ void wxSlider::SetValue(int value)
valuestring.Printf( "%d" , value ) ; valuestring.Printf( "%d" , value ) ;
if ( m_macValueStatic ) if ( m_macValueStatic )
m_macValueStatic->SetLabel( valuestring ) ; m_macValueStatic->SetLabel( valuestring ) ;
SetControlValue( m_macControl , value ) ; SetControlValue( (ControlHandle) m_macControl , value ) ;
} }
void wxSlider::SetRange(int minValue, int maxValue) void wxSlider::SetRange(int minValue, int maxValue)
@@ -146,8 +146,8 @@ void wxSlider::SetRange(int minValue, int maxValue)
m_rangeMin = minValue; m_rangeMin = minValue;
m_rangeMax = maxValue; m_rangeMax = maxValue;
SetControlMinimum(m_macControl, m_rangeMin); SetControlMinimum( (ControlHandle) m_macControl, m_rangeMin);
SetControlMaximum(m_macControl, m_rangeMax); SetControlMaximum( (ControlHandle) m_macControl, m_rangeMax);
if(m_macMinimumStatic) { if(m_macMinimumStatic) {
value.Printf("%d", m_rangeMin); value.Printf("%d", m_rangeMin);
@@ -239,9 +239,9 @@ void wxSlider::Command (wxCommandEvent & event)
ProcessCommand (event); ProcessCommand (event);
} }
void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxSlider::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
SInt16 value = ::GetControlValue( m_macControl ) ; SInt16 value = ::GetControlValue( (ControlHandle) m_macControl ) ;
SetValue( value ) ; SetValue( value ) ;
@@ -372,7 +372,7 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
GetParent()->MacClientToRootWindow(&mac_x, &mac_y); GetParent()->MacClientToRootWindow(&mac_x, &mac_y);
} }
GetControlBounds(m_macControl, &oldbounds); GetControlBounds( (ControlHandle) m_macControl, &oldbounds);
oldbounds.right = oldbounds.left + m_width; oldbounds.right = oldbounds.left + m_width;
oldbounds.bottom = oldbounds.top + m_height; oldbounds.bottom = oldbounds.top + m_height;
@@ -408,7 +408,7 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
// Update window at old and new positions // Update window at old and new positions
SetRect(&newbounds, m_x, m_y, m_x + m_width, m_y + m_height); SetRect(&newbounds, m_x, m_y, m_x + m_width, m_y + m_height);
WindowRef rootwindow = MacGetRootWindow(); WindowRef rootwindow = (WindowRef) MacGetRootWindow();
InvalWindowRect( rootwindow , &oldbounds ); InvalWindowRect( rootwindow , &oldbounds );
InvalWindowRect( rootwindow , &newbounds ); InvalWindowRect( rootwindow , &newbounds );
@@ -485,6 +485,6 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
if(GetParent()) { if(GetParent()) {
GetParent()->MacClientToRootWindow(&x, &y); GetParent()->MacClientToRootWindow(&x, &y);
} }
UMAMoveControl(m_macControl, x, y); UMAMoveControl( (ControlHandle) m_macControl, x, y);
UMASizeControl(m_macControl, width - xborder, height - yborder); UMASizeControl( (ControlHandle) m_macControl, width - xborder, height - yborder);
} }

View File

@@ -49,10 +49,10 @@ bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, c
MacPreControlCreate( parent , id , "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style,*( (wxValidator*) NULL ) , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 100, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 100,
kControlLittleArrowsProc , (long) this ) ; kControlLittleArrowsProc , (long) this ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -90,13 +90,13 @@ void wxSpinButton::SetRange(int minVal, int maxVal)
{ {
m_min = minVal; m_min = minVal;
m_max = maxVal; m_max = maxVal;
SetControlMaximum( m_macControl , maxVal ) ; SetControlMaximum( (ControlHandle) m_macControl , maxVal ) ;
SetControlMinimum( m_macControl , minVal ) ; SetControlMinimum((ControlHandle) m_macControl , minVal ) ;
} }
void wxSpinButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxSpinButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
return ; return ;
int oldValue = m_value ; int oldValue = m_value ;
@@ -142,7 +142,7 @@ void wxSpinButton::MacHandleControlClick( ControlHandle control , SInt16 control
{ {
m_value = oldValue ; m_value = oldValue ;
} }
SetControlValue( m_macControl , m_value ) ; SetControlValue( (ControlHandle) m_macControl , m_value ) ;
/* always send a thumbtrack event */ /* always send a thumbtrack event */
if (scrollEvent != wxEVT_SCROLL_THUMBTRACK) if (scrollEvent != wxEVT_SCROLL_THUMBTRACK)

View File

@@ -43,7 +43,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , label , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlGroupBoxTextTitleProc , (long) this ) ; kControlGroupBoxTextTitleProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;

View File

@@ -25,6 +25,10 @@ BEGIN_EVENT_TABLE(wxStatusBarMac, wxStatusBarGeneric)
EVT_PAINT(wxStatusBarMac::OnPaint) EVT_PAINT(wxStatusBarMac::OnPaint)
END_EVENT_TABLE() END_EVENT_TABLE()
#ifdef __WXMAC__
#include "wx/mac/private.h"
#endif
// ============================================================================ // ============================================================================
// implementation // implementation
// ============================================================================ // ============================================================================
@@ -56,7 +60,7 @@ void wxStatusBarMac::DrawFieldText(wxDC& dc, int i)
wxRect rect; wxRect rect;
GetFieldRect(i, rect); GetFieldRect(i, rect);
if ( !IsWindowHilited( MacGetRootWindow() ) ) if ( !IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) )
{ {
dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ; dc.SetTextForeground( wxColour( 0x80 , 0x80 , 0x80 ) ) ;
} }
@@ -107,7 +111,7 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event) )
{ {
wxPaintDC dc(this); wxPaintDC dc(this);
if ( IsWindowHilited( MacGetRootWindow() ) ) if ( IsWindowHilited( MAC_WXHWND( MacGetRootWindow() ) ) )
{ {
wxPen black( wxBLACK , 1 , wxSOLID ) ; wxPen black( wxBLACK , 1 , wxSOLID ) ;
wxPen white( wxWHITE , 1 , wxSOLID ) ; wxPen white( wxWHITE , 1 , wxSOLID ) ;

View File

@@ -54,7 +54,7 @@ bool wxStaticLine::Create( wxWindow *parent,
MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlSeparatorLineProc , (long) this ) ; kControlSeparatorLineProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;

View File

@@ -129,7 +129,7 @@ void wxStaticText::OnDraw( wxDC &dc )
if (m_width <= 0 || m_height <= 0) if (m_width <= 0 || m_height <= 0)
return; return;
if ( !IsWindowHilited( MacGetRootWindow() ) && if ( !IsWindowHilited( (WindowRef) MacGetRootWindow() ) &&
( GetBackgroundColour() == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE ) ( GetBackgroundColour() == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE )
|| GetBackgroundColour() == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) ) ) || GetBackgroundColour() == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE) ) )
{ {

View File

@@ -41,7 +41,7 @@ bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlTabSmallProc , (long) this ) ; kControlTabSmallProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;

View File

@@ -124,7 +124,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
} }
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , true , 0 , 0 , 1,
( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ; ( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -134,7 +134,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
(*teH)->lineHeight = -1 ; (*teH)->lineHeight = -1 ;
} }
@@ -142,7 +142,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
value = wxMacMakeMacStringFromPC( st ) ; value = wxMacMakeMacStringFromPC( st ) ;
else else
value = st ; value = st ;
::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
return TRUE; return TRUE;
} }
@@ -150,7 +150,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
wxString wxTextCtrl::GetValue() const wxString wxTextCtrl::GetValue() const
{ {
Size actualsize; Size actualsize;
::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ;
wxBuffer[actualsize] = 0 ; wxBuffer[actualsize] = 0 ;
if( wxApp::s_macDefaultEncodingIsPC ) if( wxApp::s_macDefaultEncodingIsPC )
return wxMacMakePCStringFromMac( wxBuffer ) ; return wxMacMakePCStringFromMac( wxBuffer ) ;
@@ -164,7 +164,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
*from = (**teH).selStart; *from = (**teH).selStart;
*to = (**teH).selEnd; *to = (**teH).selEnd;
@@ -178,7 +178,7 @@ void wxTextCtrl::SetValue(const wxString& st)
value = wxMacMakeMacStringFromPC( st ) ; value = wxMacMakeMacStringFromPC( st ) ;
else else
value = st ; value = st ;
::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
MacRedrawControl() ; MacRedrawControl() ;
} }
@@ -190,7 +190,7 @@ void wxTextCtrl::Copy()
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TECopy( teH ) ; TECopy( teH ) ;
ClearCurrentScrap(); ClearCurrentScrap();
TEToScrap() ; TEToScrap() ;
@@ -204,7 +204,7 @@ void wxTextCtrl::Cut()
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TECut( teH ) ; TECut( teH ) ;
ClearCurrentScrap(); ClearCurrentScrap();
TEToScrap() ; TEToScrap() ;
@@ -219,7 +219,7 @@ void wxTextCtrl::Paste()
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEFromScrap() ; TEFromScrap() ;
TEPaste( teH ) ; TEPaste( teH ) ;
MacRedrawControl() ; MacRedrawControl() ;
@@ -280,9 +280,9 @@ bool wxTextCtrl::CanPaste() const
void wxTextCtrl::SetEditable(bool editable) void wxTextCtrl::SetEditable(bool editable)
{ {
if ( editable ) if ( editable )
UMAActivateControl( m_macControl ) ; UMAActivateControl( (ControlHandle) m_macControl ) ;
else else
UMADeactivateControl( m_macControl ) ; UMADeactivateControl( (ControlHandle) m_macControl ) ;
} }
void wxTextCtrl::SetInsertionPoint(long pos) void wxTextCtrl::SetInsertionPoint(long pos)
@@ -302,8 +302,8 @@ long wxTextCtrl::GetInsertionPoint() const
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; // ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ;
return (**teH).selStart ; return (**teH).selStart ;
} }
@@ -313,9 +313,9 @@ long wxTextCtrl::GetLastPosition() const
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; // ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ;
return (**teH).teLength ; return (**teH).teLength ;
} }
@@ -328,8 +328,8 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TESetSelect( from , to , teH ) ; TESetSelect( from , to , teH ) ;
TEDelete( teH ) ; TEDelete( teH ) ;
TEInsert( value , value.Length() , teH ) ; TEInsert( value , value.Length() , teH ) ;
@@ -345,8 +345,8 @@ void wxTextCtrl::Remove(long from, long to)
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEDelete( teH ) ; TEDelete( teH ) ;
Refresh() ; Refresh() ;
} }
@@ -357,12 +357,12 @@ void wxTextCtrl::SetSelection(long from, long to)
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
TESetSelect( selection.selStart , selection.selEnd , teH ) ; TESetSelect( selection.selStart , selection.selEnd , teH ) ;
} }
@@ -385,7 +385,7 @@ void wxTextCtrl::WriteText(const wxString& text)
wxBuffer[text.Length() ] = 0 ; wxBuffer[text.Length() ] = 0 ;
// wxMacConvertNewlines( wxBuffer , wxBuffer ) ; // wxMacConvertNewlines( wxBuffer , wxBuffer ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEInsert( wxBuffer , strlen( wxBuffer) , teH ) ; TEInsert( wxBuffer , strlen( wxBuffer) , teH ) ;
Refresh() ; Refresh() ;
@@ -399,7 +399,7 @@ void wxTextCtrl::AppendText(const wxString& text)
void wxTextCtrl::Clear() void wxTextCtrl::Clear()
{ {
::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ;
Refresh() ; Refresh() ;
} }
@@ -484,7 +484,7 @@ void wxTextCtrl::DiscardEdits()
int wxTextCtrl::GetNumberOfLines() const int wxTextCtrl::GetNumberOfLines() const
{ {
Size actualsize; Size actualsize;
::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ;
int count = 1; int count = 1;
for (int i = 0; i < actualsize; i++) for (int i = 0; i < actualsize; i++)
@@ -514,7 +514,7 @@ void wxTextCtrl::ShowPosition(long pos)
int wxTextCtrl::GetLineLength(long lineNo) const int wxTextCtrl::GetLineLength(long lineNo) const
{ {
Size actualsize; Size actualsize;
::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ;
// Find line first // Find line first
int count = 0; int count = 0;
@@ -541,7 +541,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const
wxString wxTextCtrl::GetLineText(long lineNo) const wxString wxTextCtrl::GetLineText(long lineNo) const
{ {
Size actualsize; Size actualsize;
::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ;
// Find line first // Find line first
int count = 0; int count = 0;
@@ -649,12 +649,12 @@ void wxTextCtrl::OnChar(wxKeyEvent& key_event)
break; break;
} }
EventRecord *ev = wxTheApp->MacGetCurrentEvent(); EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent();
short keychar = short(ev->message & charCodeMask); short keychar = short(ev->message & charCodeMask);
if (!eat_key) if (!eat_key)
{ {
short keycode = short(ev->message & keyCodeMask) >> 8 ; short keycode = short(ev->message & keyCodeMask) >> 8 ;
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ); ::HandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers );
} }
if ( keychar >= 0x20 || if ( keychar >= 0x20 ||
key_event.KeyCode() == WXK_RETURN || key_event.KeyCode() == WXK_RETURN ||
@@ -1706,7 +1706,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
if ( style & wxTE_PASSWORD ) if ( style & wxTE_PASSWORD )
{ {
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , "\p" , true , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , true , 0 , 0 , 1,
kControlEditTextPasswordProc , (long) this ) ; kControlEditTextPasswordProc , (long) this ) ;
} }
else else
@@ -1725,13 +1725,13 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
if ( style & wxTE_PASSWORD ) if ( style & wxTE_PASSWORD )
{ {
::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
} }
else else
{ {
STPTextPaneVars **tpvars; STPTextPaneVars **tpvars;
/* set up locals */ /* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* set the text in the record */ /* set the text in the record */
TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(),
kTXNStartOffset, kTXNEndOffset); kTXNStartOffset, kTXNEndOffset);
@@ -1745,14 +1745,14 @@ wxString wxTextCtrl::GetValue() const
Size actualsize; Size actualsize;
if ( m_windowStyle & wxTE_PASSWORD ) if ( m_windowStyle & wxTE_PASSWORD )
{ {
::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ; ::GetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ;
} }
else else
{ {
STPTextPaneVars **tpvars; STPTextPaneVars **tpvars;
OSStatus err; OSStatus err;
/* set up locals */ /* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* extract the text from the record */ /* extract the text from the record */
Handle theText ; Handle theText ;
err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData ); err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
@@ -1783,7 +1783,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
*from = (**teH).selStart; *from = (**teH).selStart;
*to = (**teH).selEnd; *to = (**teH).selEnd;
@@ -1793,7 +1793,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
STPTextPaneVars **tpvars; STPTextPaneVars **tpvars;
/* set up locals */ /* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
TXNGetSelection( (**tpvars).fTXNRec , (TXNOffset*) from , (TXNOffset*) to ) ; TXNGetSelection( (**tpvars).fTXNRec , (TXNOffset*) from , (TXNOffset*) to ) ;
@@ -1810,13 +1810,13 @@ void wxTextCtrl::SetValue(const wxString& st)
value = st ; value = st ;
if ( m_windowStyle & wxTE_PASSWORD ) if ( m_windowStyle & wxTE_PASSWORD )
{ {
::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
} }
else else
{ {
STPTextPaneVars **tpvars; STPTextPaneVars **tpvars;
/* set up locals */ /* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* set the text in the record */ /* set the text in the record */
TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(),
kTXNStartOffset, kTXNEndOffset); kTXNStartOffset, kTXNEndOffset);
@@ -1834,14 +1834,14 @@ void wxTextCtrl::Copy()
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TECopy( teH ) ; TECopy( teH ) ;
ClearCurrentScrap(); ClearCurrentScrap();
TEToScrap() ; TEToScrap() ;
} }
else else
{ {
mUPDoEditCommand( m_macControl , kmUPCopy ) ; mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCopy ) ;
} }
} }
} }
@@ -1855,7 +1855,7 @@ void wxTextCtrl::Cut()
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TECut( teH ) ; TECut( teH ) ;
ClearCurrentScrap(); ClearCurrentScrap();
TEToScrap() ; TEToScrap() ;
@@ -1863,7 +1863,7 @@ void wxTextCtrl::Cut()
} }
else else
{ {
mUPDoEditCommand( m_macControl , kmUPCut ) ; mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCut ) ;
} }
} }
} }
@@ -1877,14 +1877,14 @@ void wxTextCtrl::Paste()
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEFromScrap() ; TEFromScrap() ;
TEPaste( teH ) ; TEPaste( teH ) ;
MacRedrawControl() ; MacRedrawControl() ;
} }
else else
{ {
mUPDoEditCommand( m_macControl , kmUPPaste ) ; mUPDoEditCommand( (ControlHandle) m_macControl , kmUPPaste ) ;
} }
} }
} }
@@ -1943,9 +1943,9 @@ bool wxTextCtrl::CanPaste() const
void wxTextCtrl::SetEditable(bool editable) void wxTextCtrl::SetEditable(bool editable)
{ {
if ( editable ) if ( editable )
UMAActivateControl( m_macControl ) ; UMAActivateControl( (ControlHandle) m_macControl ) ;
else else
UMADeactivateControl( m_macControl ) ; UMADeactivateControl( (ControlHandle) m_macControl ) ;
} }
void wxTextCtrl::SetInsertionPoint(long pos) void wxTextCtrl::SetInsertionPoint(long pos)
@@ -1975,14 +1975,14 @@ long wxTextCtrl::GetLastPosition() const
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ; // ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ;
return (**teH).teLength ; return (**teH).teLength ;
} }
else else
{ {
STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
int actualsize = 0 ; int actualsize = 0 ;
Handle theText ; Handle theText ;
@@ -2012,8 +2012,8 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TESetSelect( from , to , teH ) ; TESetSelect( from , to , teH ) ;
TEDelete( teH ) ; TEDelete( teH ) ;
TEInsert( value , value.Length() , teH ) ; TEInsert( value , value.Length() , teH ) ;
@@ -2036,8 +2036,8 @@ void wxTextCtrl::Remove(long from, long to)
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEDelete( teH ) ; TEDelete( teH ) ;
} }
else else
@@ -2055,19 +2055,19 @@ void wxTextCtrl::SetSelection(long from, long to)
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
TESetSelect( selection.selStart , selection.selEnd , teH ) ; TESetSelect( selection.selStart , selection.selEnd , teH ) ;
} }
else else
{ {
STPTextPaneVars **tpvars; STPTextPaneVars **tpvars;
/* set up our locals */ /* set up our locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* and our drawing environment as the operation /* and our drawing environment as the operation
may force a redraw in the text area. */ may force a redraw in the text area. */
SetPort((**tpvars).fDrawingEnvironment); SetPort((**tpvars).fDrawingEnvironment);
@@ -2098,14 +2098,14 @@ void wxTextCtrl::WriteText(const wxString& text)
TEHandle teH ; TEHandle teH ;
long size ; long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ; ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEInsert( value , value.Length() , teH ) ; TEInsert( value , value.Length() , teH ) ;
} }
else else
{ {
STPTextPaneVars **tpvars; STPTextPaneVars **tpvars;
/* set up locals */ /* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl); tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* set the text in the record */ /* set the text in the record */
TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(), TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(),
kTXNUseCurrentSelection, kTXNUseCurrentSelection); kTXNUseCurrentSelection, kTXNUseCurrentSelection);
@@ -2124,11 +2124,11 @@ void wxTextCtrl::Clear()
if ( m_windowStyle & wxTE_PASSWORD ) if ( m_windowStyle & wxTE_PASSWORD )
{ {
::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ; ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ;
} }
else else
{ {
mUPDoEditCommand( m_macControl , kmUPClear) ; mUPDoEditCommand( (ControlHandle) m_macControl , kmUPClear) ;
} }
Refresh() ; Refresh() ;
} }
@@ -2374,7 +2374,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
short keychar ; short keychar ;
keychar = short(ev->message & charCodeMask); keychar = short(ev->message & charCodeMask);
keycode = short(ev->message & keyCodeMask) >> 8 ; keycode = short(ev->message & keyCodeMask) >> 8 ;
UMAHandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; UMAHandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers ) ;
if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK) if ( keychar >= 0x20 || event.KeyCode() == WXK_RETURN || event.KeyCode() == WXK_DELETE || event.KeyCode() == WXK_BACK)
{ {
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);

View File

@@ -34,6 +34,10 @@
#include "wx/module.h" #include "wx/module.h"
#include "wx/thread.h" #include "wx/thread.h"
#ifdef __WXMAC__
#include "wx/mac/private.h"
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// constants // constants
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -19,6 +19,17 @@
IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
#endif #endif
#ifdef __WXMAC__
#include "wx/mac/private.h"
#endif
typedef struct MacTimerInfo
{
TMTask m_task;
wxMacNotifierTableRef m_table ;
wxTimer* m_timer ;
} ;
static void wxProcessTimer( unsigned long event , void *data ) ; static void wxProcessTimer( unsigned long event , void *data ) ;
static pascal void MacTimerProc( TMTask * t ) static pascal void MacTimerProc( TMTask * t )
@@ -38,30 +49,33 @@ static void wxProcessTimer( unsigned long event , void *data )
timer->Notify(); timer->Notify();
if ( timer->m_info.m_task.tmAddr && !timer->IsOneShot() ) if ( timer->m_info->m_task.tmAddr && !timer->IsOneShot() )
{ {
PrimeTime( (QElemPtr) &timer->m_info.m_task , timer->GetInterval() ) ; PrimeTime( (QElemPtr) &timer->m_info->m_task , timer->GetInterval() ) ;
} }
} }
void wxTimer::Init() void wxTimer::Init()
{ {
m_info.m_task.tmAddr = NULL ; m_info = new MacTimerInfo() ;
m_info.m_task.tmWakeUp = 0 ; m_info->m_task.tmAddr = NULL ;
m_info.m_task.tmReserved = 0 ; m_info->m_task.tmWakeUp = 0 ;
m_info.m_task.qType = 0 ; m_info->m_task.tmReserved = 0 ;
m_info.m_table = wxMacGetNotifierTable() ; m_info->m_task.qType = 0 ;
m_info.m_timer = this ; m_info->m_table = wxMacGetNotifierTable() ;
m_info->m_timer = this ;
} }
bool wxTimer::IsRunning() const bool wxTimer::IsRunning() const
{ {
return ( m_info.m_task.qType & kTMTaskActive ) ; return ( m_info->m_task.qType & kTMTaskActive ) ;
} }
wxTimer::~wxTimer() wxTimer::~wxTimer()
{ {
Stop(); Stop();
delete m_info ;
m_info = NULL ;
} }
bool wxTimer::Start(int milliseconds,bool mode) bool wxTimer::Start(int milliseconds,bool mode)
@@ -69,31 +83,31 @@ bool wxTimer::Start(int milliseconds,bool mode)
(void)wxTimerBase::Start(milliseconds, mode); (void)wxTimerBase::Start(milliseconds, mode);
wxCHECK_MSG( m_milli > 0, FALSE, wxT("invalid value for timer timeour") ); wxCHECK_MSG( m_milli > 0, FALSE, wxT("invalid value for timer timeour") );
wxCHECK_MSG( m_info.m_task.tmAddr == NULL , FALSE, wxT("attempting to restart a timer") ); wxCHECK_MSG( m_info->m_task.tmAddr == NULL , FALSE, wxT("attempting to restart a timer") );
m_milli = milliseconds; m_milli = milliseconds;
#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340) #if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340)
m_info.m_task.tmAddr = NewTimerUPP( MacTimerProc ) ; m_info->m_task.tmAddr = NewTimerUPP( MacTimerProc ) ;
#else #else
m_info.m_task.tmAddr = NewTimerProc( MacTimerProc ) ; m_info->m_task.tmAddr = NewTimerProc( MacTimerProc ) ;
#endif #endif
m_info.m_task.tmWakeUp = 0 ; m_info->m_task.tmWakeUp = 0 ;
m_info.m_task.tmReserved = 0 ; m_info->m_task.tmReserved = 0 ;
m_info.m_task.qType = 0 ; m_info->m_task.qType = 0 ;
m_info.m_timer = this ; m_info->m_timer = this ;
InsXTime((QElemPtr) &m_info.m_task ) ; InsXTime((QElemPtr) &m_info->m_task ) ;
PrimeTime( (QElemPtr) &m_info.m_task , m_milli ) ; PrimeTime( (QElemPtr) &m_info->m_task , m_milli ) ;
return FALSE; return FALSE;
} }
void wxTimer::Stop() void wxTimer::Stop()
{ {
m_milli = 0 ; m_milli = 0 ;
if ( m_info.m_task.tmAddr ) if ( m_info->m_task.tmAddr )
{ {
RmvTime( (QElemPtr) &m_info.m_task ) ; RmvTime( (QElemPtr) &m_info->m_task ) ;
DisposeTimerUPP(m_info.m_task.tmAddr) ; DisposeTimerUPP(m_info->m_task.tmAddr) ;
m_info.m_task.tmAddr = NULL ; m_info->m_task.tmAddr = NULL ;
} }
wxMacRemoveAllNotifiersForData( wxMacGetNotifierTable() , this ) ; wxMacRemoveAllNotifiersForData( wxMacGetNotifierTable() , this ) ;
} }

View File

@@ -168,7 +168,7 @@ bool wxToolBar::Realize()
Point localOrigin ; Point localOrigin ;
Rect clipRect ; Rect clipRect ;
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
wxWindow *win ; wxWindow *win ;
int lx , ly ; int lx , ly ;
@@ -215,20 +215,20 @@ bool wxToolBar::Realize()
if ( bmap->m_bitmapType == kMacBitmapTypePict ) if ( bmap->m_bitmapType == kMacBitmapTypePict )
{ {
info.contentType = kControlContentPictHandle ; info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ; info.u.picture = MAC_WXHMETAFILE(bmap->m_hPict) ;
} }
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld ) else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{ {
if ( tool->GetBitmap1().GetMask() ) if ( tool->GetBitmap1().GetMask() )
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , tool->GetBitmap1().GetMask()->GetMaskBitmap() , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , MAC_WXHBITMAP(tool->GetBitmap1().GetMask()->GetMaskBitmap()) ,
8 , 16 ) ; 8 , 16 ) ;
} }
else else
{ {
info.contentType = kControlContentCIconHandle ; info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL , info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL ,
8 , 16 ) ; 8 , 16 ) ;
} }
} }
@@ -270,7 +270,7 @@ bool wxToolBar::Realize()
/* /*
::SetControlFontStyle( m_macToolHandle , &controlstyle ) ; ::SetControlFontStyle( m_macToolHandle , &controlstyle ) ;
*/ */
ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; ControlHandle container = (ControlHandle) GetParent()->MacGetContainerForEmbedding() ;
wxASSERT_MSG( container != NULL , "No valid mac container control" ) ; wxASSERT_MSG( container != NULL , "No valid mac container control" ) ;
::EmbedControl( m_macToolHandle , container ) ; ::EmbedControl( m_macToolHandle , container ) ;
@@ -346,7 +346,7 @@ wxSize wxToolBar::GetToolSize() const
return wxSize(m_defaultWidth + 4, m_defaultHeight + 4); return wxSize(m_defaultWidth + 4, m_defaultHeight + 4);
} }
void wxToolBar::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxToolBar::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
int index = 0 ; int index = 0 ;
for ( index = 0 ; index < m_macToolHandles.Count() ; ++index ) for ( index = 0 ; index < m_macToolHandles.Count() ; ++index )
@@ -356,7 +356,7 @@ void wxToolBar::MacHandleControlClick( ControlHandle control , SInt16 controlpar
wxToolBarTool *tool = (wxToolBarTool *)m_tools.Nth( index )->Data(); wxToolBarTool *tool = (wxToolBarTool *)m_tools.Nth( index )->Data();
if ( tool->CanBeToggled() ) if ( tool->CanBeToggled() )
{ {
tool->Toggle( GetControlValue( control ) ) ; tool->Toggle( GetControlValue( (ControlHandle) control ) ) ;
} }
OnLeftClick( tool->GetId() , tool -> IsToggled() ) ; OnLeftClick( tool->GetId() , tool -> IsToggled() ) ;
break ; break ;
@@ -410,7 +410,7 @@ void wxToolBar::MacSuperChangedPosition()
int maxHeight = 0 ; int maxHeight = 0 ;
int toolcount = 0 ; int toolcount = 0 ;
{ {
WindowRef rootwindow = MacGetRootWindow() ; WindowRef rootwindow = (WindowRef) MacGetRootWindow() ;
while (node) while (node)
{ {
wxToolBarTool *tool = (wxToolBarTool *)node->Data(); wxToolBarTool *tool = (wxToolBarTool *)node->Data();
@@ -611,7 +611,7 @@ void wxToolBar::OnMouse( wxMouseEvent &event )
Point localwhere ; Point localwhere ;
GrafPtr port ; GrafPtr port ;
SInt16 controlpart ; SInt16 controlpart ;
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
localwhere.h = x ; localwhere.h = x ;
localwhere.v = y ; localwhere.v = y ;

View File

@@ -21,13 +21,14 @@
#include "wx/tooltip.h" #include "wx/tooltip.h"
#include "wx/timer.h" #include "wx/timer.h"
#include "wx/geometry.h" #include "wx/geometry.h"
#include "wx/mac/aga.h"
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// global data // global data
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class wxMacToolTipTimer ;
class wxMacToolTip class wxMacToolTip
{ {
public : public :
@@ -48,6 +49,7 @@ class wxMacToolTip
PicHandle m_backpict ; PicHandle m_backpict ;
bool m_shown ; bool m_shown ;
long m_mark ; long m_mark ;
wxMacToolTipTimer* m_timer ;
} ; } ;
class wxMacToolTipTimer : wxTimer class wxMacToolTipTimer : wxTimer
@@ -60,7 +62,6 @@ public:
if ( m_mark == m_tip->GetMark() ) if ( m_mark == m_tip->GetMark() )
m_tip->Draw() ; m_tip->Draw() ;
delete this;
} }
protected: protected:
@@ -148,7 +149,7 @@ void wxToolTip::RelayEvent( wxWindow *win , wxMouseEvent &event )
s_ToolTipArea = wxRect2DInt( event.m_x - 2 , event.m_y - 2 , 4 , 4 ) ; s_ToolTipArea = wxRect2DInt( event.m_x - 2 , event.m_y - 2 , 4 , 4 ) ;
s_LastWindowEntered = win ; s_LastWindowEntered = win ;
WindowRef window = win->MacGetRootWindow() ; WindowRef window = MAC_WXHWND( win->MacGetRootWindow() ) ;
int x = event.m_x ; int x = event.m_x ;
int y = event.m_y ; int y = event.m_y ;
wxPoint local( x , y ) ; wxPoint local( x , y ) ;
@@ -179,6 +180,7 @@ wxMacToolTip::wxMacToolTip()
m_backpict = NULL ; m_backpict = NULL ;
m_mark = 0 ; m_mark = 0 ;
m_shown = false ; m_shown = false ;
m_timer = NULL ;
} }
void wxMacToolTip::Setup( WindowRef window , wxString text , wxPoint localPosition ) void wxMacToolTip::Setup( WindowRef window , wxString text , wxPoint localPosition )
@@ -190,11 +192,15 @@ void wxMacToolTip::Setup( WindowRef window , wxString text , wxPoint localPosit
m_window = window ; m_window = window ;
s_ToolTipWindowRef = window ; s_ToolTipWindowRef = window ;
m_backpict = NULL ; m_backpict = NULL ;
new wxMacToolTipTimer( this , s_ToolTipDelay ) ; if ( m_timer )
delete m_timer ;
m_timer = new wxMacToolTipTimer( this , s_ToolTipDelay ) ;
} }
wxMacToolTip::~wxMacToolTip() wxMacToolTip::~wxMacToolTip()
{ {
if ( m_timer )
delete m_timer ;
if ( m_backpict ) if ( m_backpict )
Clear() ; Clear() ;
} }
@@ -219,11 +225,8 @@ void wxMacToolTip::Draw()
*/ */
#endif #endif
{ {
#if TARGET_CARBON wxMacPortStateHelper help( GetWindowPort( m_window ) );
AGAPortHelper help( GetWindowPort( m_window ) );
#else
AGAPortHelper help( ( m_window ) );
#endif
m_shown = true ; m_shown = true ;
TextFont( kFontIDGeneva ) ; TextFont( kFontIDGeneva ) ;
@@ -309,7 +312,7 @@ void wxMacToolTip::Draw()
} }
} }
void wxToolTip::NotifyWindowDelete( WindowRef win ) void wxToolTip::NotifyWindowDelete( WXHWND win )
{ {
if ( win == s_ToolTipWindowRef ) if ( win == s_ToolTipWindowRef )
{ {
@@ -325,11 +328,8 @@ void wxMacToolTip::Clear()
if ( m_window == s_ToolTipWindowRef && m_backpict ) if ( m_window == s_ToolTipWindowRef && m_backpict )
{ {
#if TARGET_CARBON wxMacPortStateHelper help( GetWindowPort(m_window) ) ;
AGAPortHelper help( GetWindowPort(m_window) ) ;
#else
AGAPortHelper help( (m_window) ) ;
#endif
m_shown = false ; m_shown = false ;
BackColor( whiteColor ) ; BackColor( whiteColor ) ;

View File

@@ -65,7 +65,7 @@ wxWindowList wxModelessWindows;
// Find an item given the Macintosh Window Reference // Find an item given the Macintosh Window Reference
wxList *wxWinMacWindowList = NULL; wxList *wxWinMacWindowList = NULL;
wxTopLevelWindowMac *wxFindWinFromMacWindow(WindowRef inWindowRef) wxTopLevelWindowMac *wxFindWinFromMacWindow(WXWindow inWindowRef)
{ {
wxNode *node = wxWinMacWindowList->Find((long)inWindowRef); wxNode *node = wxWinMacWindowList->Find((long)inWindowRef);
if (!node) if (!node)
@@ -73,7 +73,7 @@ wxTopLevelWindowMac *wxFindWinFromMacWindow(WindowRef inWindowRef)
return (wxTopLevelWindowMac *)node->Data(); return (wxTopLevelWindowMac *)node->Data();
} }
void wxAssociateWinWithMacWindow(WindowRef inWindowRef, wxTopLevelWindowMac *win) void wxAssociateWinWithMacWindow(WXWindow inWindowRef, wxTopLevelWindowMac *win)
{ {
// adding NULL WindowRef is (first) surely a result of an error and // adding NULL WindowRef is (first) surely a result of an error and
// (secondly) breaks menu command processing // (secondly) breaks menu command processing
@@ -93,7 +93,7 @@ void wxRemoveMacWindowAssociation(wxTopLevelWindowMac *win)
// wxTopLevelWindowMac creation // wxTopLevelWindowMac creation
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
WindowRef wxTopLevelWindowMac::s_macWindowInUpdate = NULL; WXHWND wxTopLevelWindowMac::s_macWindowInUpdate = NULL;
void wxTopLevelWindowMac::Init() void wxTopLevelWindowMac::Init()
{ {
@@ -131,7 +131,7 @@ bool wxTopLevelWindowMac::Create(wxWindow *parent,
wxTopLevelWindowMac::~wxTopLevelWindowMac() wxTopLevelWindowMac::~wxTopLevelWindowMac()
{ {
wxToolTip::NotifyWindowDelete(m_macWindow) ; wxToolTip::NotifyWindowDelete(m_macWindow) ;
UMADisposeWindow( m_macWindow ) ; UMADisposeWindow( (WindowRef) m_macWindow ) ;
wxRemoveMacWindowAssociation( this ) ; wxRemoveMacWindowAssociation( this ) ;
@@ -150,7 +150,7 @@ wxTopLevelWindowMac::~wxTopLevelWindowMac()
wxTheApp->ExitMainLoop() ; wxTheApp->ExitMainLoop() ;
} }
} }
DisposeRgn( m_macNoEraseUpdateRgn ) ; DisposeRgn( (RgnHandle) m_macNoEraseUpdateRgn ) ;
} }
@@ -267,27 +267,27 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title,
attr |= kWindowCloseBoxAttribute ; attr |= kWindowCloseBoxAttribute ;
} }
::CreateNewWindow( wclass , attr , &theBoundsRect , &m_macWindow ) ; ::CreateNewWindow( wclass , attr , &theBoundsRect , (WindowRef*)&m_macWindow ) ;
wxAssociateWinWithMacWindow( m_macWindow , this ) ; wxAssociateWinWithMacWindow( m_macWindow , this ) ;
wxString label ; wxString label ;
if( wxApp::s_macDefaultEncodingIsPC ) if( wxApp::s_macDefaultEncodingIsPC )
label = wxMacMakeMacStringFromPC( title ) ; label = wxMacMakeMacStringFromPC( title ) ;
else else
label = title ; label = title ;
UMASetWTitleC( m_macWindow , label ) ; UMASetWTitleC( (WindowRef)m_macWindow , label ) ;
::CreateRootControl( m_macWindow , &m_macRootControl ) ; ::CreateRootControl( (WindowRef)m_macWindow , (ControlHandle*)&m_macRootControl ) ;
m_macFocus = NULL ; m_macFocus = NULL ;
} }
void wxTopLevelWindowMac::MacGetPortParams(Point* localOrigin, Rect* clipRect, WindowRef *window , wxWindowMac** rootwin) void wxTopLevelWindowMac::MacGetPortParams(WXPOINTPTR localOrigin, WXRECTPTR clipRect, WXHWND *window , wxWindowMac** rootwin)
{ {
localOrigin->h = 0; ((Point*)localOrigin)->h = 0;
localOrigin->v = 0; ((Point*)localOrigin)->v = 0;
clipRect->left = 0; ((Rect*)clipRect)->left = 0;
clipRect->top = 0; ((Rect*)clipRect)->top = 0;
clipRect->right = m_width; ((Rect*)clipRect)->right = m_width;
clipRect->bottom = m_height; ((Rect*)clipRect)->bottom = m_height;
*window = m_macWindow ; *window = m_macWindow ;
*rootwin = this ; *rootwin = this ;
} }
@@ -297,7 +297,7 @@ void wxTopLevelWindowMac::Clear()
wxWindow::Clear() ; wxWindow::Clear() ;
} }
ControlHandle wxTopLevelWindowMac::MacGetContainerForEmbedding() WXWidget wxTopLevelWindowMac::MacGetContainerForEmbedding()
{ {
return m_macRootControl ; return m_macRootControl ;
} }
@@ -305,19 +305,17 @@ ControlHandle wxTopLevelWindowMac::MacGetContainerForEmbedding()
void wxTopLevelWindowMac::MacUpdate( long timestamp) void wxTopLevelWindowMac::MacUpdate( long timestamp)
{ {
#if TARGET_CARBON
AGAPortHelper help( GetWindowPort(m_macWindow) ) ; wxMacPortStateHelper help( GetWindowPort( (WindowRef) m_macWindow) ) ;
#else
AGAPortHelper help( (m_macWindow) ) ; BeginUpdate( (WindowRef)m_macWindow ) ;
#endif
BeginUpdate( m_macWindow ) ;
RgnHandle updateRgn = NewRgn(); RgnHandle updateRgn = NewRgn();
RgnHandle diffRgn = NewRgn() ; RgnHandle diffRgn = NewRgn() ;
if ( updateRgn && diffRgn ) if ( updateRgn && diffRgn )
{ {
GetPortVisibleRegion( GetWindowPort( m_macWindow ), updateRgn ); GetPortVisibleRegion( GetWindowPort( (WindowRef)m_macWindow ), updateRgn );
DiffRgn( updateRgn , m_macNoEraseUpdateRgn , diffRgn ) ; DiffRgn( updateRgn , (RgnHandle) m_macNoEraseUpdateRgn , diffRgn ) ;
if ( !EmptyRgn( updateRgn ) ) if ( !EmptyRgn( updateRgn ) )
{ {
MacRedraw( updateRgn , timestamp , m_macNeedsErasing || !EmptyRgn( diffRgn ) ) ; MacRedraw( updateRgn , timestamp , m_macNeedsErasing || !EmptyRgn( diffRgn ) ) ;
@@ -327,8 +325,8 @@ void wxTopLevelWindowMac::MacUpdate( long timestamp)
DisposeRgn( updateRgn ); DisposeRgn( updateRgn );
if ( diffRgn ) if ( diffRgn )
DisposeRgn( diffRgn ); DisposeRgn( diffRgn );
EndUpdate( m_macWindow ) ; EndUpdate( (WindowRef)m_macWindow ) ;
SetEmptyRgn( m_macNoEraseUpdateRgn ) ; SetEmptyRgn( (RgnHandle) m_macNoEraseUpdateRgn ) ;
m_macNeedsErasing = false ; m_macNeedsErasing = false ;
} }
@@ -336,21 +334,22 @@ void wxTopLevelWindowMac::MacUpdate( long timestamp)
// Raise the window to the top of the Z order // Raise the window to the top of the Z order
void wxTopLevelWindowMac::Raise() void wxTopLevelWindowMac::Raise()
{ {
::BringToFront( m_macWindow ) ; ::BringToFront( (WindowRef)m_macWindow ) ;
} }
// Lower the window to the bottom of the Z order // Lower the window to the bottom of the Z order
void wxTopLevelWindowMac::Lower() void wxTopLevelWindowMac::Lower()
{ {
::SendBehind( m_macWindow , NULL ) ; ::SendBehind( (WindowRef)m_macWindow , NULL ) ;
} }
Point lastWhere ; Point lastWhere ;
long lastWhen = 0 ; long lastWhen = 0 ;
extern int wxBusyCursorCount ; extern int wxBusyCursorCount ;
void wxTopLevelWindowMac::MacFireMouseEvent( EventRecord *ev ) void wxTopLevelWindowMac::MacFireMouseEvent( WXEVENTREF evr )
{ {
EventRecord *ev = (EventRecord*) evr ;
wxMouseEvent event(wxEVT_LEFT_DOWN); wxMouseEvent event(wxEVT_LEFT_DOWN);
bool isDown = !(ev->modifiers & btnState) ; // 1 is for up bool isDown = !(ev->modifiers & btnState) ; // 1 is for up
bool controlDown = ev->modifiers & controlKey ; // for simulating right mouse bool controlDown = ev->modifiers & controlKey ; // for simulating right mouse
@@ -388,7 +387,7 @@ void wxTopLevelWindowMac::MacFireMouseEvent( EventRecord *ev )
GrafPtr port ; GrafPtr port ;
::GetPort( &port ) ; ::GetPort( &port ) ;
::SetPort( UMAGetWindowPort( m_macWindow ) ) ; ::SetPort( UMAGetWindowPort( (WindowRef)m_macWindow ) ) ;
::GlobalToLocal( &localwhere ) ; ::GlobalToLocal( &localwhere ) ;
::SetPort( port ) ; ::SetPort( port ) ;
@@ -449,12 +448,12 @@ void wxTopLevelWindowMac::MacFireMouseEvent( EventRecord *ev )
} }
} }
void wxTopLevelWindowMac::MacMouseDown( EventRecord *ev , short part) void wxTopLevelWindowMac::MacMouseDown( WXEVENTREF ev , short part)
{ {
MacFireMouseEvent( ev ) ; MacFireMouseEvent( ev ) ;
} }
void wxTopLevelWindowMac::MacMouseUp( EventRecord *ev , short part) void wxTopLevelWindowMac::MacMouseUp( WXEVENTREF ev , short part)
{ {
switch (part) switch (part)
{ {
@@ -466,7 +465,7 @@ void wxTopLevelWindowMac::MacMouseUp( EventRecord *ev , short part)
} }
} }
void wxTopLevelWindowMac::MacMouseMoved( EventRecord *ev , short part) void wxTopLevelWindowMac::MacMouseMoved( WXEVENTREF ev , short part)
{ {
switch (part) switch (part)
{ {
@@ -477,20 +476,20 @@ void wxTopLevelWindowMac::MacMouseMoved( EventRecord *ev , short part)
break ; break ;
} }
} }
void wxTopLevelWindowMac::MacActivate( EventRecord *ev , bool inIsActivating ) void wxTopLevelWindowMac::MacActivate( WXEVENTREF ev , bool inIsActivating )
{ {
wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId); wxActivateEvent event(wxEVT_ACTIVATE, inIsActivating , m_windowId);
event.m_timeStamp = ev->when ; event.m_timeStamp = ((EventRecord*)ev)->when ;
event.SetEventObject(this); event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent(event);
UMAHighlightAndActivateWindow( m_macWindow , inIsActivating ) ; UMAHighlightAndActivateWindow( (WindowRef)m_macWindow , inIsActivating ) ;
MacSuperEnabled( inIsActivating ) ; MacSuperEnabled( inIsActivating ) ;
} }
void wxTopLevelWindowMac::MacKeyDown( EventRecord *ev ) void wxTopLevelWindowMac::MacKeyDown( WXEVENTREF ev )
{ {
} }
@@ -505,7 +504,7 @@ void wxTopLevelWindowMac::SetTitle(const wxString& title)
else else
label = m_label ; label = m_label ;
UMASetWTitleC( m_macWindow , label ) ; UMASetWTitleC( (WindowRef)m_macWindow , label ) ;
} }
bool wxTopLevelWindowMac::Show(bool show) bool wxTopLevelWindowMac::Show(bool show)
@@ -515,8 +514,8 @@ bool wxTopLevelWindowMac::Show(bool show)
if (show) if (show)
{ {
::ShowWindow( m_macWindow ) ; ::ShowWindow( (WindowRef)m_macWindow ) ;
::SelectWindow( m_macWindow ) ; ::SelectWindow( (WindowRef)m_macWindow ) ;
// no need to generate events here, they will get them triggered by macos // no need to generate events here, they will get them triggered by macos
// actually they should be , but apparently they are not // actually they should be , but apparently they are not
wxSize size(m_width, m_height); wxSize size(m_width, m_height);
@@ -526,7 +525,7 @@ bool wxTopLevelWindowMac::Show(bool show)
} }
else else
{ {
::HideWindow( m_macWindow ) ; ::HideWindow( (WindowRef)m_macWindow ) ;
} }
if ( !show ) if ( !show )
@@ -581,10 +580,10 @@ void wxTopLevelWindowMac::DoMoveWindow(int x, int y, int width, int height)
m_height = actualHeight ; m_height = actualHeight ;
if ( doMove ) if ( doMove )
::MoveWindow(m_macWindow, m_x, m_y , false); // don't make frontmost ::MoveWindow((WindowRef)m_macWindow, m_x, m_y , false); // don't make frontmost
if ( doResize ) if ( doResize )
::SizeWindow(m_macWindow, m_width, m_height , true); ::SizeWindow((WindowRef)m_macWindow, m_width, m_height , true);
// the OS takes care of invalidating and erasing the new area // the OS takes care of invalidating and erasing the new area
// we have erased the old one // we have erased the old one
@@ -632,11 +631,11 @@ void wxTopLevelWindowMac::DoMoveWindow(int x, int y, int width, int height)
* will get the eraseBackground event first * will get the eraseBackground event first
*/ */
void wxTopLevelWindowMac::MacInvalidate( const Rect * rect, bool eraseBackground ) void wxTopLevelWindowMac::MacInvalidate( const WXRECTPTR rect, bool eraseBackground )
{ {
GrafPtr formerPort ; GrafPtr formerPort ;
GetPort( &formerPort ) ; GetPort( &formerPort ) ;
SetPortWindowPort( m_macWindow ) ; SetPortWindowPort( (WindowRef)m_macWindow ) ;
m_macNeedsErasing |= eraseBackground ; m_macNeedsErasing |= eraseBackground ;
@@ -651,11 +650,11 @@ void wxTopLevelWindowMac::MacInvalidate( const Rect * rect, bool eraseBackground
RgnHandle diffRgn = NewRgn() ; RgnHandle diffRgn = NewRgn() ;
if ( updateRgn && diffRgn ) if ( updateRgn && diffRgn )
{ {
GetWindowUpdateRgn( m_macWindow , updateRgn ); GetWindowUpdateRgn( (WindowRef)m_macWindow , updateRgn );
Point pt = {0,0} ; Point pt = {0,0} ;
LocalToGlobal( &pt ) ; LocalToGlobal( &pt ) ;
OffsetRgn( updateRgn , -pt.h , -pt.v ) ; OffsetRgn( updateRgn , -pt.h , -pt.v ) ;
DiffRgn( updateRgn , m_macNoEraseUpdateRgn , diffRgn ) ; DiffRgn( updateRgn , (RgnHandle) m_macNoEraseUpdateRgn , diffRgn ) ;
if ( !EmptyRgn( diffRgn ) ) if ( !EmptyRgn( diffRgn ) )
{ {
m_macNeedsErasing = true ; m_macNeedsErasing = true ;
@@ -669,12 +668,12 @@ void wxTopLevelWindowMac::MacInvalidate( const Rect * rect, bool eraseBackground
if ( !m_macNeedsErasing ) if ( !m_macNeedsErasing )
{ {
RgnHandle rectRgn = NewRgn() ; RgnHandle rectRgn = NewRgn() ;
SetRectRgn( rectRgn , rect->left , rect->top , rect->right , rect->bottom ) ; SetRectRgn( rectRgn , ((Rect*)rect)->left , ((Rect*)rect)->top , ((Rect*)rect)->right , ((Rect*)rect)->bottom ) ;
UnionRgn( m_macNoEraseUpdateRgn , rectRgn , m_macNoEraseUpdateRgn ) ; UnionRgn( (RgnHandle) m_macNoEraseUpdateRgn , rectRgn , (RgnHandle) m_macNoEraseUpdateRgn ) ;
DisposeRgn( rectRgn ) ; DisposeRgn( rectRgn ) ;
} }
} }
InvalWindowRect( m_macWindow , rect ) ; InvalWindowRect( (WindowRef)m_macWindow , (Rect*)rect ) ;
// turn this on to debug the refreshing cycle // turn this on to debug the refreshing cycle
#if wxMAC_DEBUG_REDRAW #if wxMAC_DEBUG_REDRAW
PaintRect( rect ) ; PaintRect( rect ) ;

View File

@@ -142,6 +142,7 @@ bool UMAGetProcessModeDoesActivateOnFGSwitch()
void UMASetMenuTitle( MenuRef menu , StringPtr title ) void UMASetMenuTitle( MenuRef menu , StringPtr title )
{ {
/*
#if !TARGET_CARBON #if !TARGET_CARBON
long size = GetHandleSize( (Handle) menu ) ; long size = GetHandleSize( (Handle) menu ) ;
const long headersize = 14 ; const long headersize = 14 ;
@@ -164,8 +165,9 @@ void UMASetMenuTitle( MenuRef menu , StringPtr title )
SetHandleSize( (Handle) menu , size + (newlen - oldlen ) ) ; SetHandleSize( (Handle) menu , size + (newlen - oldlen ) ) ;
} }
#else #else
*/
SetMenuTitle( menu , title ) ; SetMenuTitle( menu , title ) ;
#endif //#endif
} }
UInt32 UMAMenuEvent( EventRecord *inEvent ) UInt32 UMAMenuEvent( EventRecord *inEvent )
@@ -602,3 +604,55 @@ OSStatus UMAGetHelpMenu(
return helpMenuStatus ; return helpMenuStatus ;
#endif #endif
} }
wxMacPortStateHelper::wxMacPortStateHelper( GrafPtr newport)
{
m_clip = NULL ;
Setup( newport ) ;
}
wxMacPortStateHelper::wxMacPortStateHelper()
{
m_clip = NULL ;
}
void wxMacPortStateHelper::Setup( GrafPtr newport )
{
GetPort( &m_oldPort ) ;
SetPort( newport ) ;
wxASSERT_MSG( m_clip == NULL , "Cannot call setup twice" ) ;
m_clip = NewRgn() ;
GetClip( m_clip );
m_textFont = GetPortTextFont( (CGrafPtr) newport);
m_textSize = GetPortTextSize( (CGrafPtr) newport);
m_textStyle = GetPortTextFace( (CGrafPtr) newport);
m_textMode = GetPortTextMode( (CGrafPtr) newport);
GetThemeDrawingState( &m_drawingState ) ;
m_currentPort = newport ;
}
void wxMacPortStateHelper::Clear()
{
if ( m_clip )
{
DisposeRgn( m_clip ) ;
DisposeThemeDrawingState( m_drawingState ) ;
m_clip = NULL ;
}
}
wxMacPortStateHelper::~wxMacPortStateHelper()
{
if ( m_clip )
{
SetPort( m_currentPort ) ;
SetClip( m_clip ) ;
DisposeRgn( m_clip ) ;
TextFont( m_textFont );
TextSize( m_textSize );
TextFace( m_textStyle );
TextMode( m_textMode );
SetThemeDrawingState( m_drawingState , true ) ;
SetPort( m_oldPort ) ;
}
}

View File

@@ -17,6 +17,10 @@
#include "wx/string.h" #include "wx/string.h"
#include "wx/wave.h" #include "wx/wave.h"
#ifdef __WXMAC__
#include "wx/mac/private.h"
#endif
wxWave::wxWave() wxWave::wxWave()
: m_sndChan(0), m_hSnd(NULL), m_waveLength(0), m_isResource(true) : m_sndChan(0), m_hSnd(NULL), m_waveLength(0), m_isResource(true)
{ {
@@ -136,7 +140,7 @@ bool wxWave::Play(bool async, bool looped) const
hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd); hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd);
if ((hSnd != NULL) && (SndPlay(m_sndChan, hSnd, async) == noErr)) if ((hSnd != NULL) && (SndPlay((SndChannelPtr)m_sndChan, (SndListHandle) hSnd, async) == noErr))
ret = true; ret = true;
} }

View File

@@ -205,7 +205,7 @@ void wxWindowMac::SetFocus()
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ; wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() ) if ( control && control->GetMacControl() )
{ {
UMASetKeyboardFocus( gFocusWindow->MacGetRootWindow() , control->GetMacControl() , kControlFocusNoPart ) ; UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNoPart ) ;
control->MacRedrawControl() ; control->MacRedrawControl() ;
} }
#endif #endif
@@ -230,7 +230,7 @@ void wxWindowMac::SetFocus()
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ; wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() ) if ( control && control->GetMacControl() )
{ {
UMASetKeyboardFocus( gFocusWindow->MacGetRootWindow() , control->GetMacControl() , kControlEditTextPart ) ; UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlEditTextPart ) ;
} }
#endif #endif
wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId); wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
@@ -318,8 +318,8 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
menu->UpdateUI(); menu->UpdateUI();
ClientToScreen( &x , &y ) ; ClientToScreen( &x , &y ) ;
::InsertMenu( menu->GetHMenu() , -1 ) ; ::InsertMenu( (MenuHandle) menu->GetHMenu() , -1 ) ;
long menuResult = ::PopUpMenuSelect(menu->GetHMenu() ,y,x, 0) ; long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() ,y,x, 0) ;
menu->MacMenuSelect( this , TickCount() , HiWord(menuResult) , LoWord(menuResult) ) ; menu->MacMenuSelect( this , TickCount() , HiWord(menuResult) , LoWord(menuResult) ) ;
::DeleteMenu( menu->MacGetMenuId() ) ; ::DeleteMenu( menu->MacGetMenuId() ) ;
menu->SetInvokingWindow(NULL); menu->SetInvokingWindow(NULL);
@@ -330,7 +330,7 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
void wxWindowMac::DoScreenToClient(int *x, int *y) const void wxWindowMac::DoScreenToClient(int *x, int *y) const
{ {
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
Point localwhere = {0,0} ; Point localwhere = {0,0} ;
@@ -351,7 +351,7 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const
void wxWindowMac::DoClientToScreen(int *x, int *y) const void wxWindowMac::DoClientToScreen(int *x, int *y) const
{ {
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
MacClientToRootWindow( x , y ) ; MacClientToRootWindow( x , y ) ;
@@ -681,7 +681,7 @@ bool wxWindowMac::Show(bool show)
MacSuperShown( show ) ; MacSuperShown( show ) ;
if ( !show ) if ( !show )
{ {
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
wxWindowMac* win = wxFindWinFromMacWindow( window ) ; wxWindowMac* win = wxFindWinFromMacWindow( window ) ;
if ( win && !win->m_isBeingDeleted ) if ( win && !win->m_isBeingDeleted )
Refresh() ; Refresh() ;
@@ -869,7 +869,7 @@ const wxBrush& wxWindowMac::MacGetBackgroundBrush()
// it is on a notebook panel or not, in order to take care of that we walk up the hierarchy until we have // it is on a notebook panel or not, in order to take care of that we walk up the hierarchy until we have
// either a non gray background color or a non control window // either a non gray background color or a non control window
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
wxWindowMac* parent = GetParent() ; wxWindowMac* parent = GetParent() ;
while( parent ) while( parent )
@@ -902,7 +902,7 @@ const wxBrush& wxWindowMac::MacGetBackgroundBrush()
extent.top-- ; extent.top-- ;
extent.right = x + size.x ; extent.right = x + size.x ;
extent.bottom = y + size.y ; extent.bottom = y + size.y ;
m_macBackgroundBrush.SetMacThemeBackground( kThemeBackgroundTabPane , extent ) ; // todo eventually change for inactive m_macBackgroundBrush.SetMacThemeBackground( kThemeBackgroundTabPane , (WXRECTPTR) &extent ) ; // todo eventually change for inactive
break ; break ;
} }
} }
@@ -932,7 +932,7 @@ void wxWindowMac::OnNcPaint( wxNcPaintEvent& event )
wxWindowDC dc(this) ; wxWindowDC dc(this) ;
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
MacPaintBorders( dc.m_macLocalOrigin.h , dc.m_macLocalOrigin.v) ; MacPaintBorders( dc.m_macLocalOrigin.x , dc.m_macLocalOrigin.y) ;
} }
int wxWindowMac::GetScrollPos(int orient) const int wxWindowMac::GetScrollPos(int orient) const
@@ -1120,7 +1120,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
SectRect( &scrollrect , &r , &scrollrect ) ; SectRect( &scrollrect , &r , &scrollrect ) ;
} }
ScrollRect( &scrollrect , dx , dy , updateRgn ) ; ScrollRect( &scrollrect , dx , dy , updateRgn ) ;
InvalWindowRgn( MacGetRootWindow() , updateRgn ) ; InvalWindowRgn( (WindowRef) MacGetRootWindow() , updateRgn ) ;
DisposeRgn( updateRgn ) ; DisposeRgn( updateRgn ) ;
} }
@@ -1309,7 +1309,7 @@ bool wxWindowMac::MacGetWindowFromPointSub( const wxPoint &point , wxWindowMac**
return FALSE; return FALSE;
} }
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
wxPoint newPoint( point ) ; wxPoint newPoint( point ) ;
@@ -1363,7 +1363,7 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
if ( IsKindOf( CLASSINFO ( wxStaticBox ) ) ) if ( IsKindOf( CLASSINFO ( wxStaticBox ) ) )
return FALSE ; return FALSE ;
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
event.m_x -= m_x; event.m_x -= m_x;
event.m_y -= m_y; event.m_y -= m_y;
@@ -1425,7 +1425,7 @@ void wxWindowMac::Update()
wxTopLevelWindowMac* wxWindowMac::MacGetTopLevelWindow() const wxTopLevelWindowMac* wxWindowMac::MacGetTopLevelWindow() const
{ {
wxTopLevelWindowMac* win = NULL ; wxTopLevelWindowMac* win = NULL ;
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
if ( window ) if ( window )
{ {
win = wxFindWinFromMacWindow( window ) ; win = wxFindWinFromMacWindow( window ) ;
@@ -1510,19 +1510,20 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion()
return m_macVisibleRegion ; return m_macVisibleRegion ;
} }
void wxWindowMac::MacRedraw( RgnHandle updatergn , long time, bool erase) void wxWindowMac::MacRedraw( WXHRGN updatergnr , long time, bool erase)
{ {
RgnHandle updatergn = (RgnHandle) updatergnr ;
// updatergn is always already clipped to our boundaries // updatergn is always already clipped to our boundaries
// it is in window coordinates, not in client coordinates // it is in window coordinates, not in client coordinates
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
{ {
// ownUpdateRgn is the area that this window has to repaint, it is in window coordinates // ownUpdateRgn is the area that this window has to repaint, it is in window coordinates
RgnHandle ownUpdateRgn = NewRgn() ; RgnHandle ownUpdateRgn = NewRgn() ;
CopyRgn( updatergn , ownUpdateRgn ) ; CopyRgn( updatergn , ownUpdateRgn ) ;
SectRgn( ownUpdateRgn , MacGetVisibleRegion().GetWXHRGN() , ownUpdateRgn ) ; SectRgn( ownUpdateRgn , (RgnHandle) MacGetVisibleRegion().GetWXHRGN() , ownUpdateRgn ) ;
// newupdate is the update region in client coordinates // newupdate is the update region in client coordinates
RgnHandle newupdate = NewRgn() ; RgnHandle newupdate = NewRgn() ;
@@ -1578,7 +1579,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time, bool erase)
} }
WindowRef wxWindowMac::MacGetRootWindow() const WXHWND wxWindowMac::MacGetRootWindow() const
{ {
wxWindowMac *iter = (wxWindowMac*)this ; wxWindowMac *iter = (wxWindowMac*)this ;
@@ -1711,7 +1712,7 @@ bool wxWindowMac::AcceptsFocus() const
return MacCanFocus() && wxWindowBase::AcceptsFocus(); return MacCanFocus() && wxWindowBase::AcceptsFocus();
} }
ControlHandle wxWindowMac::MacGetContainerForEmbedding() WXWidget wxWindowMac::MacGetContainerForEmbedding()
{ {
return GetParent()->MacGetContainerForEmbedding() ; return GetParent()->MacGetContainerForEmbedding() ;
} }

View File

@@ -36,7 +36,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , label , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlCheckBoxProc , (long) this ) ; kControlCheckBoxProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -46,13 +46,13 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
void wxCheckBox::SetValue(bool val) void wxCheckBox::SetValue(bool val)
{ {
::SetControlValue( m_macControl , val ) ; ::SetControlValue( (ControlHandle) m_macControl , val ) ;
MacRedrawControl() ; MacRedrawControl() ;
} }
bool wxCheckBox::GetValue() const bool wxCheckBox::GetValue() const
{ {
return ::GetControlValue( m_macControl ) ; return ::GetControlValue( (ControlHandle) m_macControl ) ;
} }
void wxCheckBox::Command (wxCommandEvent & event) void wxCheckBox::Command (wxCommandEvent & event)
@@ -61,7 +61,7 @@ void wxCheckBox::Command (wxCommandEvent & event)
ProcessCommand (event); ProcessCommand (event);
} }
void wxCheckBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxCheckBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
SetValue( !GetValue() ) ; SetValue( !GetValue() ) ;
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId ); wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId );

View File

@@ -109,10 +109,10 @@ static pascal void wxMacCheckListDefinition( short message, Boolean isSelected,
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
if( isSelected ) { if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
} }
// Restore the saved clip region. // Restore the saved clip region.
@@ -127,10 +127,10 @@ static pascal void wxMacCheckListDefinition( short message, Boolean isSelected,
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
GetPort( &grafPtr ); GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
break; break;
default : default :
break ; break ;
@@ -183,36 +183,36 @@ bool wxCheckListBox::Create(wxWindow *parent,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true, CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
14, 14, false, &listDef, &m_macControl ); 14, 14, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag, GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize); sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this); SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false); SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else #else
long result ; long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0, kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ; kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ; sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ; HLock( (Handle) m_macList ) ;
ldefHandle ldef ; ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ; ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL ) if ( (**(ListHandle)m_macList).listDefProc != NULL )
{ {
(**ldef).instruction = 0x4EF9; /* JMP instruction */ (**ldef).instruction = 0x4EF9; /* JMP instruction */
(**ldef).function = (void(*)()) listDef.u.userProc; (**ldef).function = (void(*)()) listDef.u.userProc;
(**m_macList).listDefProc = (Handle) ldef ; (**(ListHandle)m_macList).listDefProc = (Handle) ldef ;
} }
Point pt = (**m_macList).cellSize ; Point pt = (**(ListHandle)m_macList).cellSize ;
pt.v = 14 ; pt.v = 14 ;
LCellSize( pt , m_macList ) ; LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ; LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif #endif
OptionBits options = 0; OptionBits options = 0;
if ( style & wxLB_MULTIPLE ) if ( style & wxLB_MULTIPLE )
@@ -227,7 +227,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
{ {
options = lOnlyOne ; options = lOnlyOne ;
} }
SetListSelectionFlags(m_macList, options); SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -236,7 +236,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
Append( choices[i] ) ; Append( choices[i] ) ;
} }
LSetDrawingMode( true , m_macList ) ; LSetDrawingMode( true , (ListHandle) m_macList ) ;
return TRUE; return TRUE;
} }
@@ -358,8 +358,8 @@ void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
GetListVisibleCells( m_macList , &visible ) ; GetListVisibleCells( m_macList , &visible ) ;
topcell = visible.top ; topcell = visible.top ;
#else #else
lineheight = (**m_macList).cellSize.v ; lineheight = (**(ListHandle)m_macList).cellSize.v ;
topcell = (**m_macList).visible.top ; topcell = (**(ListHandle)m_macList).visible.top ;
#endif #endif
size_t nItem = ((size_t)event.GetY()) / lineheight + topcell ; size_t nItem = ((size_t)event.GetY()) / lineheight + topcell ;

View File

@@ -45,15 +45,15 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , -12345 , 0 , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , -12345 , 0 ,
kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ; kControlPopupButtonProc + kControlPopupFixedWidthVariant , (long) this ) ;
m_macPopUpMenuHandle = NewUniqueMenu() ; m_macPopUpMenuHandle = NewUniqueMenu() ;
SetControlData( m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ; SetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
SetControlMinimum( m_macControl , 0 ) ; SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( m_macControl , 0) ; SetControlMaximum( (ControlHandle) m_macControl , 0) ;
if ( n > 0 ) if ( n > 0 )
SetControlValue( m_macControl , 1 ) ; SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -72,12 +72,12 @@ int wxChoice::DoAppend(const wxString& item)
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false); wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ; AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ;
m_strings.Add( item ) ; m_strings.Add( item ) ;
m_datas.Add( NULL ) ; m_datas.Add( NULL ) ;
int index = m_strings.GetCount() - 1 ; int index = m_strings.GetCount() - 1 ;
DoSetItemClientData( index , NULL ) ; DoSetItemClientData( index , NULL ) ;
SetControlMaximum( m_macControl , GetCount()) ; SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
return index ; return index ;
} }
@@ -90,10 +90,10 @@ void wxChoice::Delete(int n)
delete GetClientObject(n); delete GetClientObject(n);
} }
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ; ::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1) ;
m_strings.Remove( n ) ; m_strings.Remove( n ) ;
m_datas.RemoveAt( n ) ; m_datas.RemoveAt( n ) ;
SetControlMaximum( m_macControl , GetCount()) ; SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
} }
void wxChoice::Clear() void wxChoice::Clear()
@@ -102,11 +102,11 @@ void wxChoice::Clear()
for ( int i = 0 ; i < GetCount() ; i++ ) for ( int i = 0 ; i < GetCount() ; i++ )
{ {
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ; ::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , 1 ) ;
} }
m_strings.Empty() ; m_strings.Empty() ;
m_datas.Empty() ; m_datas.Empty() ;
SetControlMaximum( m_macControl , 0 ) ; SetControlMaximum( (ControlHandle) m_macControl , 0 ) ;
} }
void wxChoice::Free() void wxChoice::Free()
@@ -127,12 +127,12 @@ void wxChoice::Free()
int wxChoice::GetSelection() const int wxChoice::GetSelection() const
{ {
return GetControlValue( m_macControl ) -1 ; return GetControlValue( (ControlHandle) m_macControl ) -1 ;
} }
void wxChoice::SetSelection(int n) void wxChoice::SetSelection(int n)
{ {
SetControlValue( m_macControl , n + 1 ) ; SetControlValue( (ControlHandle) m_macControl , n + 1 ) ;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -208,7 +208,7 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const
return (wxClientData *)DoGetItemClientData(n); return (wxClientData *)DoGetItemClientData(n);
} }
void wxChoice::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId ); wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
event.SetInt(GetSelection()); event.SetInt(GetSelection());

View File

@@ -22,6 +22,8 @@
#include "wx/clipbrd.h" #include "wx/clipbrd.h"
#include "wx/intl.h" #include "wx/intl.h"
#include "wx/mac/private.h"
#define wxUSE_DATAOBJ 1 #define wxUSE_DATAOBJ 1
#include <string.h> #include <string.h>
@@ -254,7 +256,7 @@ bool wxClipboard::AddData( wxDataObject *data )
wxMetafileDataObject* metaFileDataObject = wxMetafileDataObject* metaFileDataObject =
(wxMetafileDataObject*) data; (wxMetafileDataObject*) data;
wxMetafile metaFile = metaFileDataObject->GetMetafile(); wxMetafile metaFile = metaFileDataObject->GetMetafile();
PicHandle pict = metaFile.GetHMETAFILE() ; PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ;
HLock( (Handle) pict ) ; HLock( (Handle) pict ) ;
#if !TARGET_CARBON #if !TARGET_CARBON
err = PutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ; err = PutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ;

View File

@@ -20,6 +20,8 @@
IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog)
#endif #endif
#include "wx/mac/private.h"
/* /*
* wxColourDialog * wxColourDialog
*/ */
@@ -46,13 +48,13 @@ bool wxColourDialog::Create(wxWindow *parent, wxColourData *data)
int wxColourDialog::ShowModal() int wxColourDialog::ShowModal()
{ {
Point where ; Point where ;
RGBColor currentColor = m_colourData.dataColour.GetPixel() , newColor ; RGBColor currentColor = *((RGBColor*)m_colourData.dataColour.GetPixel()) , newColor ;
where.h = where.v = -1; where.h = where.v = -1;
if (GetColor( where, "\pSelect a new palette color.", &currentColor, &newColor )) if (GetColor( where, "\pSelect a new palette color.", &currentColor, &newColor ))
{ {
m_colourData.dataColour.Set( newColor ) ; m_colourData.dataColour.Set( (WXCOLORREF*) &newColor ) ;
return wxID_OK; return wxID_OK;
} }
else else

View File

@@ -22,9 +22,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject)
// Colour // Colour
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green ) ; #include "wx/mac/private.h"
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green )
static void wxComposeRGBColor( WXCOLORREF* color , int red, int blue, int green ) ;
static void wxComposeRGBColor( WXCOLORREF* color , int red, int blue, int green )
{ {
RGBColor* col = (RGBColor*) color ;
col->red = (red << 8) + red; col->red = (red << 8) + red;
col->blue = (blue << 8) + blue; col->blue = (blue << 8) + blue;
col->green = (green << 8) + green; col->green = (green << 8) + green;
@@ -55,7 +58,7 @@ wxColour::wxColour (const wxColour& col)
m_blue = col.m_blue; m_blue = col.m_blue;
m_isInit = col.m_isInit; m_isInit = col.m_isInit;
m_pixel = col.m_pixel; memcpy( &m_pixel , &col.m_pixel , 6 ) ;
} }
wxColour::wxColour (const wxColour* col) wxColour::wxColour (const wxColour* col)
@@ -65,7 +68,7 @@ wxColour::wxColour (const wxColour* col)
m_blue = col->m_blue; m_blue = col->m_blue;
m_isInit = col->m_isInit; m_isInit = col->m_isInit;
m_pixel = col->m_pixel; memcpy( &m_pixel , &col->m_pixel , 6 ) ;
} }
wxColour& wxColour::operator =(const wxColour& col) wxColour& wxColour::operator =(const wxColour& col)
@@ -75,7 +78,7 @@ wxColour& wxColour::operator =(const wxColour& col)
m_blue = col.m_blue; m_blue = col.m_blue;
m_isInit = col.m_isInit; m_isInit = col.m_isInit;
m_pixel = col.m_pixel; memcpy( &m_pixel , &col.m_pixel , 6 ) ;
return *this; return *this;
} }
@@ -114,3 +117,12 @@ void wxColour::Set (unsigned char r, unsigned char g, unsigned char b)
wxComposeRGBColor( &m_pixel , m_red , m_blue , m_green ) ; wxComposeRGBColor( &m_pixel , m_red , m_blue , m_green ) ;
} }
void wxColour::Set( const WXCOLORREF* color )
{
RGBColor* col = (RGBColor*) color ;
memcpy( &m_pixel , color , 6 ) ;
m_red = col->red>>8 ;
m_blue = col->blue>>8 ;
m_green = col->green>>8 ;
}

View File

@@ -47,20 +47,20 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , -12345 , 0, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , -12345 , 0,
kControlPopupButtonProc , (long) this ) ; kControlPopupButtonProc , (long) this ) ;
m_macPopUpMenuHandle = NewUniqueMenu() ; m_macPopUpMenuHandle = NewUniqueMenu() ;
SetControlData( m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ; SetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
for ( int i = 0 ; i < n ; i++ ) for ( int i = 0 ; i < n ; i++ )
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , choices[i] ,false); wxMenuItem::MacBuildMenuString( label , NULL , NULL , choices[i] ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ; AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
} }
SetControlMinimum( m_macControl , 0 ) ; SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
SetControlValue( m_macControl , 1 ) ; SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -139,37 +139,37 @@ void wxComboBox::Append(const wxString& item)
{ {
Str255 label; Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false); wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ; AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
m_noStrings ++; m_noStrings ++;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
} }
void wxComboBox::Delete(int n) void wxComboBox::Delete(int n)
{ {
wxASSERT( n < m_noStrings ) ; wxASSERT( n < m_noStrings ) ;
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ; ::DeleteMenuItem( (MenuHandle) m_macPopUpMenuHandle , n + 1) ;
m_noStrings --; m_noStrings --;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
} }
void wxComboBox::Clear() void wxComboBox::Clear()
{ {
for ( int i = 0 ; i < m_noStrings ; i++ ) for ( int i = 0 ; i < m_noStrings ; i++ )
{ {
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ; ::DeleteMenuItem((MenuHandle) m_macPopUpMenuHandle , 1 ) ;
} }
m_noStrings = 0; m_noStrings = 0;
SetControlMaximum( m_macControl , m_noStrings) ; SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
} }
int wxComboBox::GetSelection() const int wxComboBox::GetSelection() const
{ {
return GetControlValue( m_macControl ) -1 ; return GetControlValue( (ControlHandle) m_macControl ) -1 ;
} }
void wxComboBox::SetSelection(int n) void wxComboBox::SetSelection(int n)
{ {
SetControlValue( m_macControl , n + 1 ) ; SetControlValue( (ControlHandle) m_macControl , n + 1 ) ;
} }
int wxComboBox::FindString(const wxString& s) const int wxComboBox::FindString(const wxString& s) const
@@ -186,7 +186,7 @@ wxString wxComboBox::GetString(int n) const
{ {
Str255 p_text ; Str255 p_text ;
char c_text[255]; char c_text[255];
::GetMenuItemText( m_macPopUpMenuHandle , n+1 , p_text ) ; ::GetMenuItemText( (MenuHandle) m_macPopUpMenuHandle , n+1 , p_text ) ;
#if TARGET_CARBON #if TARGET_CARBON
p2cstrcpy( c_text, p_text ) ; p2cstrcpy( c_text, p_text ) ;
#else #else
@@ -217,7 +217,7 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
return FALSE; return FALSE;
} }
void wxComboBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxComboBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId ); wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
event.SetInt(GetSelection()); event.SetInt(GetSelection());

View File

@@ -110,9 +110,9 @@ wxControl::~wxControl()
if (parent->GetDefaultItem() == (wxButton*) this) if (parent->GetDefaultItem() == (wxButton*) this)
parent->SetDefaultItem(NULL); parent->SetDefaultItem(NULL);
} }
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
::DisposeControl( m_macControl ) ; ::DisposeControl( (ControlHandle) m_macControl ) ;
m_macControl = NULL ; m_macControl = NULL ;
} }
} }
@@ -121,7 +121,7 @@ void wxControl::SetLabel(const wxString& title)
{ {
m_label = title ; m_label = title ;
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
Str255 maclabel ; Str255 maclabel ;
wxString label ; wxString label ;
@@ -137,7 +137,7 @@ void wxControl::SetLabel(const wxString& title)
strcpy( (char *) maclabel , label ) ; strcpy( (char *) maclabel , label ) ;
c2pstr( (char *) maclabel ) ; c2pstr( (char *) maclabel ) ;
#endif #endif
::SetControlTitle( m_macControl , maclabel ) ; ::SetControlTitle( (ControlHandle) m_macControl , maclabel ) ;
} }
Refresh() ; Refresh() ;
} }
@@ -147,7 +147,7 @@ wxSize wxControl::DoGetBestSize() const
Rect bestsize = { 0 , 0 , 0 , 0 } ; Rect bestsize = { 0 , 0 , 0 , 0 } ;
short baselineoffset ; short baselineoffset ;
int bestWidth, bestHeight ; int bestWidth, bestHeight ;
::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ;
if ( EmptyRect( &bestsize ) ) if ( EmptyRect( &bestsize ) )
{ {
@@ -239,7 +239,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, long style, const wxSize& size, long style,
const wxValidator& validator, const wxValidator& validator,
const wxString& name , Rect *outBounds , StringPtr maclabel ) const wxString& name , WXRECTPTR outBounds , unsigned char* maclabel )
{ {
m_label = label ; m_label = label ;
SetName(name); SetName(name);
@@ -264,10 +264,10 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l
m_x = pos.x ; m_x = pos.x ;
m_y = pos.y ; m_y = pos.y ;
outBounds->top = -10; ((Rect*)outBounds)->top = -10;
outBounds->left = -10; ((Rect*)outBounds)->left = -10;
outBounds->bottom = 0; ((Rect*)outBounds)->bottom = 0;
outBounds->right = 0; ((Rect*)outBounds)->right = 0;
char c_text[255]; char c_text[255];
strcpy( c_text , label ) ; strcpy( c_text , label ) ;
@@ -286,7 +286,7 @@ void wxControl::MacPreControlCreate( wxWindow *parent, wxWindowID id, wxString l
void wxControl::MacPostControlCreate() void wxControl::MacPostControlCreate()
{ {
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
if ( IsKindOf( CLASSINFO( wxScrollBar ) ) ) if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )
{ {
@@ -298,7 +298,7 @@ void wxControl::MacPostControlCreate()
controlstyle.flags = kControlUseFontMask ; controlstyle.flags = kControlUseFontMask ;
controlstyle.font = kControlFontSmallBoldSystemFont ; controlstyle.font = kControlFontSmallBoldSystemFont ;
::SetControlFontStyle( m_macControl , &controlstyle ) ; ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ;
} }
else else
{ {
@@ -306,14 +306,14 @@ void wxControl::MacPostControlCreate()
controlstyle.flags = kControlUseFontMask ; controlstyle.flags = kControlUseFontMask ;
controlstyle.font = kControlFontSmallSystemFont ; controlstyle.font = kControlFontSmallSystemFont ;
::SetControlFontStyle( m_macControl , &controlstyle ) ; ::SetControlFontStyle( (ControlHandle) m_macControl , &controlstyle ) ;
} }
ControlHandle container = GetParent()->MacGetContainerForEmbedding() ; ControlHandle container = (ControlHandle) GetParent()->MacGetContainerForEmbedding() ;
wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ; wxASSERT_MSG( container != NULL , wxT("No valid mac container control") ) ;
::EmbedControl( m_macControl , container ) ; ::EmbedControl( (ControlHandle) m_macControl , container ) ;
m_macControlIsShown = true ; m_macControlIsShown = true ;
wxAssociateControlWithMacControl( m_macControl , this ) ; wxAssociateControlWithMacControl( (ControlHandle) m_macControl , this ) ;
// Adjust the controls size and position // Adjust the controls size and position
@@ -332,19 +332,19 @@ void wxControl::MacPostControlCreate()
SetSize(pos.x, pos.y, new_size.x, new_size.y); SetSize(pos.x, pos.y, new_size.x, new_size.y);
UMAShowControl( m_macControl ) ; UMAShowControl( (ControlHandle) m_macControl ) ;
Refresh() ; Refresh() ;
} }
void wxControl::MacAdjustControlRect() void wxControl::MacAdjustControlRect()
{ {
wxASSERT_MSG( m_macControl != NULL , wxT("No valid mac control") ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , wxT("No valid mac control") ) ;
if ( m_width == -1 || m_height == -1 ) if ( m_width == -1 || m_height == -1 )
{ {
Rect bestsize = { 0 , 0 , 0 , 0 } ; Rect bestsize = { 0 , 0 , 0 , 0 } ;
short baselineoffset ; short baselineoffset ;
::GetBestControlRect( m_macControl , &bestsize , &baselineoffset ) ; ::GetBestControlRect( (ControlHandle) m_macControl , &bestsize , &baselineoffset ) ;
if ( EmptyRect( &bestsize ) ) if ( EmptyRect( &bestsize ) )
{ {
@@ -388,10 +388,11 @@ void wxControl::MacAdjustControlRect()
m_height += 2 * m_macVerticalBorder; m_height += 2 * m_macVerticalBorder;
} }
UMASizeControl( m_macControl , m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ; UMASizeControl( (ControlHandle) m_macControl , m_width - 2 * m_macHorizontalBorder, m_height - 2 * m_macVerticalBorder ) ;
} }
} }
ControlHandle wxControl::MacGetContainerForEmbedding()
WXWidget wxControl::MacGetContainerForEmbedding()
{ {
if ( m_macControl ) if ( m_macControl )
return m_macControl ; return m_macControl ;
@@ -401,17 +402,17 @@ ControlHandle wxControl::MacGetContainerForEmbedding()
void wxControl::MacSuperChangedPosition() void wxControl::MacSuperChangedPosition()
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
Rect contrlRect ; Rect contrlRect ;
GetControlBounds( m_macControl , &contrlRect ) ; GetControlBounds( (ControlHandle) m_macControl , &contrlRect ) ;
int former_mac_x = contrlRect.left ; int former_mac_x = contrlRect.left ;
int former_mac_y = contrlRect.top ; int former_mac_y = contrlRect.top ;
int mac_x = m_x ; int mac_x = m_x ;
int mac_y = m_y ; int mac_y = m_y ;
GetParent()->MacWindowToRootWindow( & mac_x , & mac_y ) ; GetParent()->MacWindowToRootWindow( & mac_x , & mac_y ) ;
WindowRef rootwindow = MacGetRootWindow() ; WindowRef rootwindow = (WindowRef) MacGetRootWindow() ;
if ( mac_x + m_macHorizontalBorder != former_mac_x || if ( mac_x + m_macHorizontalBorder != former_mac_x ||
mac_y + m_macVerticalBorder != former_mac_y ) mac_y + m_macVerticalBorder != former_mac_y )
@@ -420,7 +421,7 @@ void wxControl::MacSuperChangedPosition()
Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ; Rect inval = { former_mac_y , former_mac_x , former_mac_y + m_height , former_mac_x + m_width } ;
InvalWindowRect( rootwindow , &inval ) ; InvalWindowRect( rootwindow , &inval ) ;
} }
UMAMoveControl( m_macControl , mac_x + m_macHorizontalBorder , mac_y + m_macVerticalBorder ) ; UMAMoveControl( (ControlHandle) m_macControl , mac_x + m_macHorizontalBorder , mac_y + m_macVerticalBorder ) ;
{ {
Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ; Rect inval = { mac_y , mac_x , mac_y + m_height , mac_x + m_width } ;
InvalWindowRect( rootwindow , &inval ) ; InvalWindowRect( rootwindow , &inval ) ;
@@ -439,13 +440,13 @@ void wxControl::MacSuperEnabled( bool enabled )
void wxControl::MacSuperShown( bool show ) void wxControl::MacSuperShown( bool show )
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
if ( !show ) if ( !show )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
{ {
::UMAHideControl( m_macControl ) ; ::UMAHideControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = false ; m_macControlIsShown = false ;
} }
} }
@@ -453,7 +454,7 @@ void wxControl::MacSuperShown( bool show )
{ {
if ( MacIsReallyShown() && !m_macControlIsShown ) if ( MacIsReallyShown() && !m_macControlIsShown )
{ {
::UMAShowControl( m_macControl ) ; ::UMAShowControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = true ; m_macControlIsShown = true ;
} }
} }
@@ -466,7 +467,7 @@ void wxControl::DoSetSize(int x, int y,
int width, int height, int width, int height,
int sizeFlags ) int sizeFlags )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
{ {
wxWindow::DoSetSize( x , y ,width , height ,sizeFlags ) ; wxWindow::DoSetSize( x , y ,width , height ,sizeFlags ) ;
return ; return ;
@@ -515,7 +516,7 @@ void wxControl::DoSetSize(int x, int y,
if(GetParent()) { if(GetParent()) {
GetParent()->MacWindowToRootWindow(&mac_x, &mac_y); GetParent()->MacWindowToRootWindow(&mac_x, &mac_y);
} }
GetControlBounds(m_macControl, &oldbounds); GetControlBounds( (ControlHandle) m_macControl, &oldbounds);
oldbounds.right = oldbounds.left + m_width; oldbounds.right = oldbounds.left + m_width;
oldbounds.bottom = oldbounds.top + m_height; oldbounds.bottom = oldbounds.top + m_height;
@@ -556,7 +557,7 @@ void wxControl::DoSetSize(int x, int y,
m_x = new_x; m_x = new_x;
m_y = new_y; m_y = new_y;
UMAMoveControl(m_macControl, UMAMoveControl( (ControlHandle) m_macControl,
mac_x + m_macHorizontalBorder, mac_y + m_macVerticalBorder); mac_x + m_macHorizontalBorder, mac_y + m_macVerticalBorder);
wxMoveEvent event(wxPoint(m_x, m_y), m_windowId); wxMoveEvent event(wxPoint(m_x, m_y), m_windowId);
@@ -568,7 +569,7 @@ void wxControl::DoSetSize(int x, int y,
m_width = new_width; m_width = new_width;
m_height = new_height; m_height = new_height;
UMASizeControl( m_macControl, UMASizeControl( (ControlHandle) m_macControl,
m_width - 2 * m_macHorizontalBorder, m_width - 2 * m_macHorizontalBorder,
m_height - 2 * m_macVerticalBorder ) ; m_height - 2 * m_macVerticalBorder ) ;
@@ -587,13 +588,13 @@ bool wxControl::Show(bool show)
if ( !wxWindow::Show( show ) ) if ( !wxWindow::Show( show ) )
return FALSE ; return FALSE ;
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
if ( !show ) if ( !show )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
{ {
::UMAHideControl( m_macControl ) ; ::UMAHideControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = false ; m_macControlIsShown = false ;
} }
} }
@@ -601,7 +602,7 @@ bool wxControl::Show(bool show)
{ {
if ( MacIsReallyShown() && !m_macControlIsShown ) if ( MacIsReallyShown() && !m_macControlIsShown )
{ {
::UMAShowControl( m_macControl ) ; ::UMAShowControl( (ControlHandle) m_macControl ) ;
m_macControlIsShown = true ; m_macControlIsShown = true ;
} }
} }
@@ -614,12 +615,12 @@ bool wxControl::Enable(bool enable)
if ( !wxWindow::Enable(enable) ) if ( !wxWindow::Enable(enable) )
return FALSE; return FALSE;
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
if ( enable ) if ( enable )
UMAActivateControl( m_macControl ) ; UMAActivateControl( (ControlHandle) m_macControl ) ;
else else
UMADeactivateControl( m_macControl ) ; UMADeactivateControl( (ControlHandle) m_macControl ) ;
} }
return TRUE ; return TRUE ;
} }
@@ -631,7 +632,7 @@ void wxControl::Refresh(bool eraseBack, const wxRect *rect)
void wxControl::MacRedrawControl() void wxControl::MacRedrawControl()
{ {
if ( m_macControl && MacGetRootWindow() ) if ( (ControlHandle) m_macControl && MacGetRootWindow() )
{ {
wxClientDC dc(this) ; wxClientDC dc(this) ;
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
@@ -643,13 +644,13 @@ void wxControl::MacRedrawControl()
Rect r = { 0 , 0 , 32000 , 32000 } ; Rect r = { 0 , 0 , 32000 , 32000 } ;
ClipRect( &r ) ; ClipRect( &r ) ;
wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ; wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ;
UMADrawControl( m_macControl ) ; UMADrawControl( (ControlHandle) m_macControl ) ;
} }
} }
void wxControl::OnPaint(wxPaintEvent& event) void wxControl::OnPaint(wxPaintEvent& event)
{ {
if ( m_macControl ) if ( (ControlHandle) m_macControl )
{ {
wxPaintDC dc(this) ; wxPaintDC dc(this) ;
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
@@ -661,7 +662,7 @@ void wxControl::OnPaint(wxPaintEvent& event)
ClipRect( &r ) ; ClipRect( &r ) ;
wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ; wxDC::MacSetupBackgroundForCurrentPort( MacGetBackgroundBrush() ) ;
UMADrawControl( m_macControl ) ; UMADrawControl( (ControlHandle) m_macControl ) ;
} }
else else
{ {
@@ -676,21 +677,21 @@ void wxControl::OnEraseBackground(wxEraseEvent& event)
void wxControl::OnKeyDown( wxKeyEvent &event ) void wxControl::OnKeyDown( wxKeyEvent &event )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
return ; return ;
EventRecord *ev = wxTheApp->MacGetCurrentEvent() ; EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ;
short keycode ; short keycode ;
short keychar ; short keychar ;
keychar = short(ev->message & charCodeMask); keychar = short(ev->message & charCodeMask);
keycode = short(ev->message & keyCodeMask) >> 8 ; keycode = short(ev->message & keyCodeMask) >> 8 ;
::HandleControlKey( m_macControl , keycode , keychar , ev->modifiers ) ; ::HandleControlKey( (ControlHandle) m_macControl , keycode , keychar , ev->modifiers ) ;
} }
void wxControl::OnMouseEvent( wxMouseEvent &event ) void wxControl::OnMouseEvent( wxMouseEvent &event )
{ {
if ( m_macControl == NULL ) if ( (ControlHandle) m_macControl == NULL )
{ {
event.Skip() ; event.Skip() ;
return ; return ;
@@ -707,7 +708,7 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
ControlHandle control ; ControlHandle control ;
Point localwhere ; Point localwhere ;
SInt16 controlpart ; SInt16 controlpart ;
WindowRef window = MacGetRootWindow() ; WindowRef window = (WindowRef) MacGetRootWindow() ;
localwhere.h = x ; localwhere.h = x ;
localwhere.v = y ; localwhere.v = y ;
@@ -742,7 +743,7 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
SetFocus() ; SetFocus() ;
} }
*/ */
control = m_macControl ; control = (ControlHandle) m_macControl ;
if ( control && ::IsControlActive( control ) ) if ( control && ::IsControlActive( control ) )
{ {
{ {
@@ -762,15 +763,15 @@ void wxControl::OnMouseEvent( wxMouseEvent &event )
bool wxControl::MacCanFocus() const bool wxControl::MacCanFocus() const
{ {
{ if ( m_macControl == NULL ) { if ( (ControlHandle) m_macControl == NULL )
return true ; return true ;
else else
return false ; return false ;
} }
} }
void wxControl::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxControl::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ; wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
} }

View File

@@ -15,6 +15,7 @@
#include "wx/cursor.h" #include "wx/cursor.h"
#include "wx/icon.h" #include "wx/icon.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
@@ -195,8 +196,8 @@ void wxCursor::MacInstall() const
{ {
if ( m_refData && M_CURSORDATA->m_hCursor ) if ( m_refData && M_CURSORDATA->m_hCursor )
{ {
::SetCursor( *M_CURSORDATA->m_hCursor ) ; ::SetCursor( *((CursHandle)M_CURSORDATA->m_hCursor) ) ;
gMacCurrentCursor = M_CURSORDATA->m_hCursor ; gMacCurrentCursor = (CursHandle)M_CURSORDATA->m_hCursor ;
} }
else else
{ {

View File

@@ -33,6 +33,7 @@
#include "wx/dataobj.h" #include "wx/dataobj.h"
#include "wx/mstream.h" #include "wx/mstream.h"
#include "wx/image.h" #include "wx/image.h"
#include "wx/mac/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// functions // functions

View File

@@ -20,6 +20,8 @@
#include "wx/region.h" #include "wx/region.h"
#include "wx/image.h" #include "wx/image.h"
#include "wx/mac/private.h"
#if __MSL__ >= 0x6000 #if __MSL__ >= 0x6000
#include "math.h" #include "math.h"
#endif #endif
@@ -42,6 +44,10 @@ IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
const double M_PI = 3.14159265358979 ; const double M_PI = 3.14159265358979 ;
#endif #endif
const double RAD2DEG = 180.0 / M_PI; const double RAD2DEG = 180.0 / M_PI;
const short kEmulatedMode = -1 ;
const short kUnsupportedMode = -2 ;
#define wxMAC_EXPERIMENTAL_PATTERN 0
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Local functions // Local functions
@@ -55,6 +61,95 @@ static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; }
// wxDC // wxDC
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// this function emulates all wx colour manipulations, used to verify the implementation
// by setting the mode in the blitting functions to kEmulatedMode
void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor ) ;
void wxMacCalculateColour( int logical_func , const RGBColor &srcColor , RGBColor &dstColor )
{
switch ( logical_func )
{
case wxAND: // src AND dst
dstColor.red = dstColor.red & srcColor.red ;
dstColor.green = dstColor.green & srcColor.green ;
dstColor.blue = dstColor.blue & srcColor.blue ;
break ;
case wxAND_INVERT: // (NOT src) AND dst
dstColor.red = dstColor.red & ~srcColor.red ;
dstColor.green = dstColor.green & ~srcColor.green ;
dstColor.blue = dstColor.blue & ~srcColor.blue ;
break ;
case wxAND_REVERSE:// src AND (NOT dst)
dstColor.red = ~dstColor.red & srcColor.red ;
dstColor.green = ~dstColor.green & srcColor.green ;
dstColor.blue = ~dstColor.blue & srcColor.blue ;
break ;
case wxCLEAR: // 0
dstColor.red = 0 ;
dstColor.green = 0 ;
dstColor.blue = 0 ;
break ;
case wxCOPY: // src
dstColor.red = srcColor.red ;
dstColor.green = srcColor.green ;
dstColor.blue = srcColor.blue ;
break ;
case wxEQUIV: // (NOT src) XOR dst
dstColor.red = dstColor.red ^ ~srcColor.red ;
dstColor.green = dstColor.green ^ ~srcColor.green ;
dstColor.blue = dstColor.blue ^ ~srcColor.blue ;
break ;
case wxINVERT: // NOT dst
dstColor.red = ~dstColor.red ;
dstColor.green = ~dstColor.green ;
dstColor.blue = ~dstColor.blue ;
break ;
case wxNAND: // (NOT src) OR (NOT dst)
dstColor.red = ~dstColor.red | ~srcColor.red ;
dstColor.green = ~dstColor.green | ~srcColor.green ;
dstColor.blue = ~dstColor.blue | ~srcColor.blue ;
break ;
case wxNOR: // (NOT src) AND (NOT dst)
dstColor.red = ~dstColor.red & ~srcColor.red ;
dstColor.green = ~dstColor.green & ~srcColor.green ;
dstColor.blue = ~dstColor.blue & ~srcColor.blue ;
break ;
case wxNO_OP: // dst
break ;
case wxOR: // src OR dst
dstColor.red = dstColor.red | srcColor.red ;
dstColor.green = dstColor.green | srcColor.green ;
dstColor.blue = dstColor.blue | srcColor.blue ;
break ;
case wxOR_INVERT: // (NOT src) OR dst
dstColor.red = dstColor.red | ~srcColor.red ;
dstColor.green = dstColor.green | ~srcColor.green ;
dstColor.blue = dstColor.blue | ~srcColor.blue ;
break ;
case wxOR_REVERSE: // src OR (NOT dst)
dstColor.red = ~dstColor.red | srcColor.red ;
dstColor.green = ~dstColor.green | srcColor.green ;
dstColor.blue = ~dstColor.blue | srcColor.blue ;
break ;
case wxSET: // 1
dstColor.red = 0xFFFF ;
dstColor.green = 0xFFFF ;
dstColor.blue = 0xFFFF ;
break ;
case wxSRC_INVERT: // (NOT src)
dstColor.red = ~srcColor.red ;
dstColor.green = ~srcColor.green ;
dstColor.blue = ~srcColor.blue ;
break ;
case wxXOR: // src XOR dst
dstColor.red = dstColor.red ^ srcColor.red ;
dstColor.green = dstColor.green ^ srcColor.green ;
dstColor.blue = dstColor.blue ^ srcColor.blue ;
break ;
}
}
wxDC::wxDC() wxDC::wxDC()
{ {
m_ok = FALSE; m_ok = FALSE;
@@ -78,9 +173,6 @@ wxDC::wxDC()
m_needComputeScaleX = FALSE; m_needComputeScaleX = FALSE;
m_needComputeScaleY = FALSE; m_needComputeScaleY = FALSE;
m_maxX = m_maxY = -100000;
m_minY = m_minY = 100000;
m_macPort = NULL ; m_macPort = NULL ;
m_macMask = NULL ; m_macMask = NULL ;
m_ok = FALSE ; m_ok = FALSE ;
@@ -89,19 +181,19 @@ wxDC::wxDC()
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
m_macPenInstalled = false ; m_macPenInstalled = false ;
m_macLocalOrigin.h = m_macLocalOrigin.v = 0 ; m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ;
m_macBoundaryClipRgn = NewRgn() ; m_macBoundaryClipRgn = NewRgn() ;
m_macCurrentClipRgn = NewRgn() ; m_macCurrentClipRgn = NewRgn() ;
SetRectRgn( m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ; SetRectRgn( (RgnHandle) m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
m_pen = *wxBLACK_PEN; m_pen = *wxBLACK_PEN;
m_font = *wxNORMAL_FONT; m_font = *wxNORMAL_FONT;
m_brush = *wxWHITE_BRUSH; m_brush = *wxWHITE_BRUSH;
} }
wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
m_ph( dc->m_macPort ) m_ph( (GrafPtr) dc->m_macPort )
{ {
wxASSERT( dc->Ok() ) ; wxASSERT( dc->Ok() ) ;
@@ -114,12 +206,12 @@ wxMacPortSetter::~wxMacPortSetter()
wxDC::~wxDC(void) wxDC::~wxDC(void)
{ {
DisposeRgn( m_macBoundaryClipRgn ) ; DisposeRgn( (RgnHandle) m_macBoundaryClipRgn ) ;
DisposeRgn( m_macCurrentClipRgn ) ; DisposeRgn( (RgnHandle) m_macCurrentClipRgn ) ;
} }
void wxDC::MacSetupPort(AGAPortHelper* help) const void wxDC::MacSetupPort(wxMacPortStateHelper* help) const
{ {
SetClip( m_macCurrentClipRgn); SetClip( (RgnHandle) m_macCurrentClipRgn);
m_macFontInstalled = false ; m_macFontInstalled = false ;
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
@@ -159,18 +251,18 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( bmp.GetBitmapType() == kMacBitmapTypePict ) { if ( bmp.GetBitmapType() == kMacBitmapTypePict ) {
Rect bitmaprect = { 0 , 0 , hh, ww }; Rect bitmaprect = { 0 , 0 , hh, ww };
::OffsetRect( &bitmaprect, xx, yy ) ; ::OffsetRect( &bitmaprect, xx, yy ) ;
::DrawPicture( bmp.GetPict(), &bitmaprect ) ; ::DrawPicture( (PicHandle) bmp.GetPict(), &bitmaprect ) ;
} }
else if ( bmp.GetBitmapType() == kMacBitmapTypeGrafWorld ) else if ( bmp.GetBitmapType() == kMacBitmapTypeGrafWorld )
{ {
GWorldPtr bmapworld = bmp.GetHBITMAP(); GWorldPtr bmapworld = MAC_WXHBITMAP( bmp.GetHBITMAP() );
PixMapHandle bmappixels ; PixMapHandle bmappixels ;
// Set foreground and background colours (for bitmaps depth = 1) // Set foreground and background colours (for bitmaps depth = 1)
if(bmp.GetDepth() == 1) if(bmp.GetDepth() == 1)
{ {
RGBColor fore = m_textForegroundColour.GetPixel(); RGBColor fore = MAC_WXCOLORREF(m_textForegroundColour.GetPixel());
RGBColor back = m_textBackgroundColour.GetPixel(); RGBColor back = MAC_WXCOLORREF(m_textBackgroundColour.GetPixel());
RGBForeColor(&fore); RGBForeColor(&fore);
RGBBackColor(&back); RGBBackColor(&back);
} }
@@ -192,21 +284,21 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( useMask && bmp.GetMask() ) if ( useMask && bmp.GetMask() )
{ {
if( LockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap()))) if( LockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap()))))
{ {
CopyDeepMask CopyDeepMask
( (
GetPortBitMapForCopyBits(bmapworld), GetPortBitMapForCopyBits(bmapworld),
GetPortBitMapForCopyBits(bmp.GetMask()->GetMaskBitmap()), GetPortBitMapForCopyBits(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())),
GetPortBitMapForCopyBits( m_macPort ), GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &source, &dest, mode, NULL &source, &source, &dest, mode, NULL
); );
UnlockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap())); UnlockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())));
} }
} }
else { else {
CopyBits( GetPortBitMapForCopyBits( bmapworld ), CopyBits( GetPortBitMapForCopyBits( bmapworld ),
GetPortBitMapForCopyBits( m_macPort ), GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &dest, mode, NULL ) ; &source, &dest, mode, NULL ) ;
} }
UnlockPixels( bmappixels ) ; UnlockPixels( bmappixels ) ;
@@ -215,7 +307,7 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
{ {
Rect bitmaprect = { 0 , 0 , bmp.GetHeight(), bmp.GetWidth() } ; Rect bitmaprect = { 0 , 0 , bmp.GetHeight(), bmp.GetWidth() } ;
OffsetRect( &bitmaprect, xx, yy ) ; OffsetRect( &bitmaprect, xx, yy ) ;
PlotCIconHandle( &bitmaprect , atNone , ttNone , bmp.GetHICON() ) ; PlotCIconHandle( &bitmaprect , atNone , ttNone , MAC_WXHICON(bmp.GetHICON()) ) ;
} }
m_macPenInstalled = false ; m_macPenInstalled = false ;
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
@@ -241,8 +333,8 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
ww = XLOG2DEVREL(width); ww = XLOG2DEVREL(width);
hh = YLOG2DEVREL(height); hh = YLOG2DEVREL(height);
SetRectRgn( m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ; SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
SectRgn( m_macCurrentClipRgn , m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
if( m_clipping ) if( m_clipping )
{ {
@@ -290,12 +382,12 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
} }
else else
{ {
CopyRgn( region.GetWXHRGN() , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) region.GetWXHRGN() , (RgnHandle) m_macCurrentClipRgn ) ;
if ( xx != x || yy != y ) if ( xx != x || yy != y )
{ {
OffsetRgn( m_macCurrentClipRgn , xx - x , yy - y ) ; OffsetRgn( (RgnHandle) m_macCurrentClipRgn , xx - x , yy - y ) ;
} }
SectRgn( m_macCurrentClipRgn , m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
if( m_clipping ) if( m_clipping )
{ {
m_clipX1 = wxMax( m_clipX1 , xx ); m_clipX1 = wxMax( m_clipX1 , xx );
@@ -318,7 +410,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
void wxDC::DestroyClippingRegion() void wxDC::DestroyClippingRegion()
{ {
wxMacPortSetter helper(this) ; wxMacPortSetter helper(this) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_clipping = FALSE; m_clipping = FALSE;
} }
void wxDC::DoGetSize( int* width, int* height ) const void wxDC::DoGetSize( int* width, int* height ) const
@@ -418,15 +510,8 @@ void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp )
m_signX = (xLeftRight ? 1 : -1); m_signX = (xLeftRight ? 1 : -1);
m_signY = (yBottomUp ? -1 : 1); m_signY = (yBottomUp ? -1 : 1);
ComputeScaleAndOrigin(); ComputeScaleAndOrigin();
}/* }
void wxDC::CalcBoundingBox( long x, long y )
{
if (x < m_minX) m_minX = x;
if (y < m_minY) m_minY = y;
if (x > m_maxX) m_maxX = x;
if (y > m_maxY) m_maxY = y;
}*/
wxSize wxDC::GetPPI() const wxSize wxDC::GetPPI() const
{ {
return wxSize(72, 72); return wxSize(72, 72);
@@ -787,13 +872,19 @@ void wxDC::DoDrawPolygon(int n, wxPoint points[],
y1 = YLOG2DEVMAC(points[0].y + yoffset); y1 = YLOG2DEVMAC(points[0].y + yoffset);
::MoveTo(x1,y1); ::MoveTo(x1,y1);
for (int i = 0; i < n-1; i++) for (int i = 1; i < n; i++)
{ {
x2 = XLOG2DEVMAC(points[i+1].x + xoffset); x2 = XLOG2DEVMAC(points[i].x + xoffset);
y2 = YLOG2DEVMAC(points[i+1].y + yoffset); y2 = YLOG2DEVMAC(points[i].y + yoffset);
::LineTo(x2, y2); ::LineTo(x2, y2);
} }
// close the polyline if necessary
if ( x1 != x2 || y1 != y2 )
{
::LineTo(x1,y1 ) ;
}
ClosePoly(); ClosePoly();
if (m_brush.GetStyle() != wxTRANSPARENT) if (m_brush.GetStyle() != wxTRANSPARENT)
@@ -959,82 +1050,222 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
{ {
wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc")); wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc"));
wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC")); wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC"));
wxMacPortSetter helper(this) ;
if ( logical_func == wxNO_OP )
return TRUE ;
/* TODO: use the mask origin when drawing transparently */
if (xsrcMask == -1 && ysrcMask == -1) if (xsrcMask == -1 && ysrcMask == -1)
{ {
xsrcMask = xsrc; ysrcMask = ysrc; xsrcMask = xsrc; ysrcMask = ysrc;
} }
// correct the parameter in case this dc does not have a mask at all
if ( useMask && !source->m_macMask )
useMask = false ;
Rect srcrect , dstrect ;
srcrect.top = source->YLOG2DEVMAC(ysrc) ;
srcrect.left = source->XLOG2DEVMAC(xsrc) ;
srcrect.right = source->XLOG2DEVMAC(xsrc + width ) ;
srcrect.bottom = source->YLOG2DEVMAC(ysrc + height) ;
dstrect.top = YLOG2DEVMAC(ydest) ;
dstrect.left = XLOG2DEVMAC(xdest) ;
dstrect.bottom = YLOG2DEVMAC(ydest + height ) ;
dstrect.right = XLOG2DEVMAC(xdest + width ) ;
short mode = kUnsupportedMode ;
bool invertDestinationFirst = false ;
switch ( logical_func )
{
case wxAND: // src AND dst
mode = srcOr ; // ok
break ;
case wxAND_INVERT: // (NOT src) AND dst
mode = notSrcOr ; // ok
break ;
case wxAND_REVERSE:// src AND (NOT dst)
invertDestinationFirst = true ;
mode = srcOr ;
break ;
case wxCLEAR: // 0
mode = kEmulatedMode ;
break ;
case wxCOPY: // src
mode = srcCopy ; // ok
break ;
case wxEQUIV: // (NOT src) XOR dst
mode = srcXor ; // ok
break ;
case wxINVERT: // NOT dst
mode = kEmulatedMode ; //or hilite ;
break ;
case wxNAND: // (NOT src) OR (NOT dst)
invertDestinationFirst = true ;
mode = srcBic ;
break ;
case wxNOR: // (NOT src) AND (NOT dst)
invertDestinationFirst = true ;
mode = notSrcOr ;
break ;
case wxNO_OP: // dst
mode = kEmulatedMode ; // this has already been handled upon entry
break ;
case wxOR: // src OR dst
mode = notSrcBic ;
break ;
case wxOR_INVERT: // (NOT src) OR dst
mode = srcBic ;
break ;
case wxOR_REVERSE: // src OR (NOT dst)
invertDestinationFirst = true ;
mode = notSrcBic ;
break ;
case wxSET: // 1
mode = kEmulatedMode ;
break ;
case wxSRC_INVERT: // (NOT src)
mode = notSrcCopy ; // ok
break ;
case wxXOR: // src XOR dst
mode = notSrcXor ; // ok
break ;
default :
break ;
}
if ( mode == kUnsupportedMode )
{
wxFAIL_MSG("unsupported blitting mode" )
return FALSE ;
}
CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ; CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ;
PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ; PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ;
RGBColor white = { 0xFFFF, 0xFFFF,0xFFFF} ;
RGBColor black = { 0,0,0} ;
RGBColor forecolor = m_textForegroundColour.GetPixel();
RGBColor backcolor = m_textBackgroundColour.GetPixel();
RGBForeColor( &forecolor ) ;
RGBBackColor( &backcolor ) ;
if ( LockPixels(bmappixels) ) if ( LockPixels(bmappixels) )
{ {
Rect srcrect , dstrect ; wxMacPortSetter helper(this) ;
srcrect.top = source->YLOG2DEVMAC(ysrc) ; RGBColor tempColor ;
srcrect.left = source->XLOG2DEVMAC(xsrc) ;
srcrect.right = source->XLOG2DEVMAC(xsrc + width ) ; if ( source->GetDepth() == 1 )
srcrect.bottom = source->YLOG2DEVMAC(ysrc + height) ; {
dstrect.top = YLOG2DEVMAC(ydest) ; RGBForeColor( &MAC_WXCOLORREF(m_textForegroundColour.GetPixel()) ) ;
dstrect.left = XLOG2DEVMAC(xdest) ; RGBBackColor( &MAC_WXCOLORREF(m_textBackgroundColour.GetPixel()) ) ;
dstrect.bottom = YLOG2DEVMAC(ydest + height ) ; }
dstrect.right = XLOG2DEVMAC(xdest + width ) ; else
{
short mode = (logical_func == wxCOPY ? srcCopy : // the modes need this, otherwise we'll end up having really nice colors...
// logical_func == wxCLEAR ? WHITENESS : RGBColor white = { 0xFFFF, 0xFFFF,0xFFFF} ;
// logical_func == wxSET ? BLACKNESS : RGBColor black = { 0,0,0} ;
logical_func == wxINVERT ? hilite : RGBForeColor( &black ) ;
// logical_func == wxAND ? MERGECOPY : RGBBackColor( &white ) ;
logical_func == wxOR ? srcOr : }
logical_func == wxSRC_INVERT ? notSrcCopy :
logical_func == wxXOR ? srcXor :
// logical_func == wxOR_REVERSE ? MERGEPAINT :
// logical_func == wxAND_REVERSE ? SRCERASE :
// logical_func == wxSRC_OR ? srcOr :
// logical_func == wxSRC_AND ? SRCAND :
srcCopy );
if ( useMask && source->m_macMask ) if ( useMask && source->m_macMask )
{ {
if ( mode == srcCopy ) if ( mode == srcCopy )
{ {
if ( LockPixels( GetGWorldPixMap( source->m_macMask ) ) ) if ( LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) )
{ {
CopyMask( GetPortBitMapForCopyBits( sourcePort ) , CopyMask( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( source->m_macMask ) , GetPortBitMapForCopyBits( MAC_WXHBITMAP(source->m_macMask) ) ,
GetPortBitMapForCopyBits( m_macPort ) , GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &srcrect , &dstrect ) ; &srcrect, &srcrect , &dstrect ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ; UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
} }
} }
else else
{ {
RgnHandle clipRgn = NewRgn() ; RgnHandle clipRgn = NewRgn() ;
LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
LockPixels( GetGWorldPixMap( source->m_macMask ) ) ; BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( source->m_macMask ) ) ; UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
//OffsetRgn( clipRgn , -source->m_macMask->portRect.left , -source->m_macMask->portRect.top ) ;
OffsetRgn( clipRgn , -srcrect.left + dstrect.left, -srcrect.top + dstrect.top ) ; OffsetRgn( clipRgn , -srcrect.left + dstrect.left, -srcrect.top + dstrect.top ) ;
CopyBits( GetPortBitMapForCopyBits( sourcePort ) , if ( mode == kEmulatedMode )
GetPortBitMapForCopyBits( m_macPort ) , {
&srcrect, &dstrect, mode, clipRgn ) ; Pattern pat ;
::PenPat(GetQDGlobalsBlack(&pat));
if ( logical_func == wxSET )
{
RGBColor col= { 0xFFFF, 0xFFFF, 0xFFFF } ;
::RGBForeColor( &col ) ;
::PaintRgn( clipRgn ) ;
}
else if ( logical_func == wxCLEAR )
{
RGBColor col= { 0x0000, 0x0000, 0x0000 } ;
::RGBForeColor( &col ) ;
::PaintRgn( clipRgn ) ;
}
else if ( logical_func == wxINVERT )
{
MacInvertRgn( clipRgn ) ;
}
else
{
for ( int y = 0 ; y < srcrect.right - srcrect.left ; ++y )
{
for ( int x = 0 ; x < srcrect.bottom - srcrect.top ; ++x )
{
Point dstPoint = { dstrect.top + y , dstrect.left + x } ;
Point srcPoint = { srcrect.top + y , srcrect.left + x } ;
if ( PtInRgn( dstPoint , clipRgn ) )
{
RGBColor srcColor ;
RGBColor dstColor ;
SetPort( (GrafPtr) sourcePort ) ;
GetCPixel( srcPoint.h , srcPoint.v , &srcColor) ;
SetPort( (GrafPtr) m_macPort ) ;
GetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ;
wxMacCalculateColour( logical_func , srcColor , dstColor ) ;
SetCPixel( dstPoint.h , dstPoint.v , &dstColor ) ;
}
}
}
// wxFAIL_MSG("unimplemented emulated mode") ;
}
}
else
{
if ( invertDestinationFirst )
{
MacInvertRgn( clipRgn ) ;
}
CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &dstrect, mode, clipRgn ) ;
}
DisposeRgn( clipRgn ) ; DisposeRgn( clipRgn ) ;
} }
} }
else else
{ {
CopyBits( GetPortBitMapForCopyBits( sourcePort ) , if ( mode == kEmulatedMode )
GetPortBitMapForCopyBits( m_macPort ) , {
&srcrect, &dstrect, mode, NULL ) ; CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &dstrect, mode, NULL ) ;
}
else
{
Pattern pat ;
::PenPat(GetQDGlobalsBlack(&pat));
if ( logical_func == wxSET )
{
RGBColor col= { 0xFFFF, 0xFFFF, 0xFFFF } ;
::RGBForeColor( &col ) ;
}
else
{
RGBColor col= { 0x0000, 0x0000, 0x0000 } ;
::RGBForeColor( &col ) ;
}
::PaintRect( &dstrect ) ;
}
} }
UnlockPixels( bmappixels ) ; UnlockPixels( bmappixels ) ;
} }
@@ -1100,8 +1331,8 @@ void wxDC::DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y,
// prepare to blit-with-rotate the bitmap to the DC // prepare to blit-with-rotate the bitmap to the DC
wxImage image(src); wxImage image(src);
RGBColor colText = m_textForegroundColour.GetPixel(); RGBColor colText = MAC_WXCOLORREF( m_textForegroundColour.GetPixel() );
RGBColor colBack = m_textBackgroundColour.GetPixel(); RGBColor colBack = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel() );
unsigned char *data = image.GetData(); unsigned char *data = image.GetData();
@@ -1336,7 +1567,8 @@ void wxDC::Clear(void)
if (m_backgroundBrush.GetStyle() != wxTRANSPARENT) if (m_backgroundBrush.GetStyle() != wxTRANSPARENT)
{ {
MacInstallBrush() ; MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
::EraseRect( &rect ) ; ::EraseRect( &rect ) ;
} }
} }
@@ -1360,8 +1592,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
m_macPenInstalled = false ; m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel(); RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = m_textBackgroundColour.GetPixel(); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor ); ::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor ); ::RGBBackColor( &backcolor );
} }
@@ -1380,8 +1612,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ; m_macBrushInstalled = false ;
m_macPenInstalled = false ; m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel(); RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = m_textBackgroundColour.GetPixel(); RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor ); ::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor ); ::RGBBackColor( &backcolor );
} }
@@ -1470,8 +1702,8 @@ void wxDC::MacInstallPen() const
// if ( m_macPenInstalled ) // if ( m_macPenInstalled )
// return ; // return ;
RGBColor forecolor = m_pen.GetColour().GetPixel(); RGBColor forecolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel());
RGBColor backcolor = m_backgroundBrush.GetColour().GetPixel(); RGBColor backcolor = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel());
::RGBForeColor( &forecolor ); ::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor ); ::RGBBackColor( &backcolor );
@@ -1604,7 +1836,7 @@ void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background )
} }
case kwxMacBrushColour : case kwxMacBrushColour :
{ {
::RGBBackColor( &background.GetColour().GetPixel() ); ::RGBBackColor( &MAC_WXCOLORREF( background.GetColour().GetPixel()) );
int brushStyle = background.GetStyle(); int brushStyle = background.GetStyle();
if (brushStyle == wxSOLID) if (brushStyle == wxSOLID)
::BackPat(GetQDGlobalsWhite(&whiteColor)); ::BackPat(GetQDGlobalsWhite(&whiteColor));
@@ -1632,8 +1864,10 @@ void wxDC::MacInstallBrush() const
// return ; // return ;
// foreground // foreground
bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ;
::RGBForeColor( &m_brush.GetColour().GetPixel() ); ::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) );
int brushStyle = m_brush.GetStyle(); int brushStyle = m_brush.GetStyle();
if (brushStyle == wxSOLID) if (brushStyle == wxSOLID)
@@ -1646,62 +1880,109 @@ void wxDC::MacInstallBrush() const
} }
else if ( m_brush.GetStyle() == wxSTIPPLE || m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE ) else if ( m_brush.GetStyle() == wxSTIPPLE || m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE )
{ {
// we force this in order to be compliant with wxMSW
backgroundTransparent = false ;
// for these the text fore (and back for MASK_OPAQUE) colors are used // for these the text fore (and back for MASK_OPAQUE) colors are used
wxBitmap* bitmap = m_brush.GetStipple() ; wxBitmap* bitmap = m_brush.GetStipple() ;
int width = bitmap->GetWidth() ; int width = bitmap->GetWidth() ;
int height = bitmap->GetHeight() ; int height = bitmap->GetHeight() ;
int depth = bitmap->GetDepth() ; GWorldPtr gw = NULL ;
if ( m_brush.GetStyle() == wxSTIPPLE ) if ( m_brush.GetStyle() == wxSTIPPLE )
gw = MAC_WXHBITMAP(bitmap->GetHBITMAP()) ;
else
gw = MAC_WXHBITMAP(bitmap->GetMask()->GetMaskBitmap()) ;
PixMapHandle gwpixmaphandle = GetGWorldPixMap( gw ) ;
LockPixels( gwpixmaphandle ) ;
bool isMonochrome = !IsPortColor( gw ) ;
if ( !isMonochrome )
{
if ( (**gwpixmaphandle).pixelSize == 1 )
isMonochrome = true ;
}
if ( isMonochrome )
{ {
GWorldPtr gw = bitmap->GetHBITMAP() ; ::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) );
if ( width == 8 && height == 8 && depth == 1)
{ BitMap* gwbitmap = (BitMap*) *gwpixmaphandle ; // since the color depth is 1 it is a BitMap
Pattern pat ; UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
LockPixels( GetGWorldPixMap( gw ) ) ; int alignment = gwbitmap->rowBytes & 0x7FFF ;
BitMap* gwbitmap = (BitMap*) *GetGWorldPixMap( gw ) ; // since the color depth is 1 it is a BitMap
int alignment = gwbitmap->rowBytes & 0x7FFF ; if( width == 8 && height == 8 )
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ; {
Pattern pat ;
for ( int i = 0 ; i < 8 ; ++i ) for ( int i = 0 ; i < 8 ; ++i )
{ {
pat.pat[i] = gwbits[i*alignment+0] ; pat.pat[i] = gwbits[i*alignment+0] ;
} }
UnlockPixels( GetGWorldPixMap( gw ) ) ; UnlockPixels( GetGWorldPixMap( gw ) ) ;
::PenPat( &pat ) ;
::PenPat( &pat ) ; }
} else
else {
{ #if wxMAC_EXPERIMENTAL_PATTERN
::PenPat(GetQDGlobalsBlack(&blackColor)); // this will be the code to handle power of 2 patterns, we will have to arrive at a nice
} // caching scheme before putting this into production
Handle image;
long imageSize;
PixPatHandle pixpat = NewPixPat() ;
CopyPixMap(gwpixmaphandle, (**pixpat).patMap);
imageSize = GetPixRowBytes((**pixpat).patMap) *
((**(**pixpat).patMap).bounds.bottom -
(**(**pixpat).patMap).bounds.top);
PtrToHand( (**gwpixmaphandle).baseAddr, &image, imageSize );
(**pixpat).patData = image;
CTabHandle ctable = ((**((**pixpat).patMap)).pmTable) ;
ColorSpecPtr ctspec = (ColorSpecPtr) &(**ctable).ctTable ;
if ( ctspec[0].rgb.red == 0x0000 )
{
ctspec[1].rgb = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ;
ctspec[0].rgb = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) ;
}
else
{
ctspec[0].rgb = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ;
ctspec[1].rgb = MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) ;
}
::CTabChanged( ctable ) ;
::PenPixPat(pixpat);
#endif
}
} }
else if (m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE ) else
{ {
::RGBForeColor( &m_textForegroundColour.GetPixel() );
::RGBForeColor( &m_textBackgroundColour.GetPixel() );
::PenPat(GetQDGlobalsBlack(&blackColor));
} }
UnlockPixels( gwpixmaphandle ) ;
} }
else else
{ {
::PenPat(GetQDGlobalsBlack(&blackColor)); ::PenPat(GetQDGlobalsBlack(&blackColor));
} }
// background if ( !backgroundTransparent )
::RGBBackColor( &MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ) ;
MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
// todo :
short mode = patCopy ; short mode = patCopy ;
switch( m_logicalFunction ) switch( m_logicalFunction )
{ {
case wxCOPY: // src case wxCOPY: // src
mode = patCopy ; if ( backgroundTransparent )
mode = patOr ;
else
mode = patCopy ;
break ; break ;
case wxINVERT: // NOT dst case wxINVERT: // NOT dst
::PenPat(GetQDGlobalsBlack(&blackColor)); if ( !backgroundTransparent )
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
mode = patXor ; mode = patXor ;
break ; break ;
case wxXOR: // src XOR dst case wxXOR: // src XOR dst

View File

@@ -19,6 +19,7 @@
#include "wx/window.h" #include "wx/window.h"
#include "wx/toplevel.h" #include "wx/toplevel.h"
#include <math.h> #include <math.h>
#include "wx/mac/private.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// constants // constants
@@ -49,16 +50,16 @@ wxWindowDC::wxWindowDC()
wxWindowDC::wxWindowDC(wxWindow *the_canvas) wxWindowDC::wxWindowDC(wxWindow *the_canvas)
{ {
wxTopLevelWindowMac* rootwindow = the_canvas->MacGetTopLevelWindow() ; wxTopLevelWindowMac* rootwindow = the_canvas->MacGetTopLevelWindow() ;
WindowRef windowref = rootwindow->MacGetWindowRef() ; WindowRef windowref = (WindowRef) rootwindow->MacGetWindowRef() ;
int x , y ; int x , y ;
x = y = 0 ; x = y = 0 ;
the_canvas->MacWindowToRootWindow( &x , &y ) ; the_canvas->MacWindowToRootWindow( &x , &y ) ;
m_macLocalOrigin.h = x ; m_macLocalOrigin.x = x ;
m_macLocalOrigin.v = y ; m_macLocalOrigin.y = y ;
CopyRgn( the_canvas->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; CopyRgn( (RgnHandle) the_canvas->MacGetVisibleRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , m_macLocalOrigin.x , m_macLocalOrigin.y ) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_macPort = UMAGetWindowPort( windowref ) ; m_macPort = UMAGetWindowPort( windowref ) ;
m_minY = m_minX = 0; m_minY = m_minX = 0;
wxSize size = the_canvas->GetSize() ; wxSize size = the_canvas->GetSize() ;
@@ -84,20 +85,20 @@ wxClientDC::wxClientDC()
wxClientDC::wxClientDC(wxWindow *window) wxClientDC::wxClientDC(wxWindow *window)
{ {
wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ; wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ;
WindowRef windowref = rootwindow->MacGetWindowRef() ; WindowRef windowref = (WindowRef) rootwindow->MacGetWindowRef() ;
wxPoint origin = window->GetClientAreaOrigin() ; wxPoint origin = window->GetClientAreaOrigin() ;
wxSize size = window->GetClientSize() ; wxSize size = window->GetClientSize() ;
int x , y ; int x , y ;
x = origin.x ; x = origin.x ;
y = origin.y ; y = origin.y ;
window->MacWindowToRootWindow( &x , &y ) ; window->MacWindowToRootWindow( &x , &y ) ;
m_macLocalOrigin.h = x ; m_macLocalOrigin.x = x ;
m_macLocalOrigin.v = y ; m_macLocalOrigin.y = y ;
SetRectRgn( m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ;
SectRgn( m_macBoundaryClipRgn , window->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; SectRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) window->MacGetVisibleRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , -origin.x , -origin.y ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , -origin.x , -origin.y ) ;
OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , m_macLocalOrigin.x , m_macLocalOrigin.y ) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn ,(RgnHandle) m_macCurrentClipRgn ) ;
m_macPort = UMAGetWindowPort( windowref ) ; m_macPort = UMAGetWindowPort( windowref ) ;
m_minY = m_minX = 0; m_minY = m_minX = 0;
m_maxX = size.x ; m_maxX = size.x ;
@@ -122,21 +123,21 @@ wxPaintDC::wxPaintDC()
wxPaintDC::wxPaintDC(wxWindow *window) wxPaintDC::wxPaintDC(wxWindow *window)
{ {
wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ; wxTopLevelWindowMac* rootwindow = window->MacGetTopLevelWindow() ;
WindowRef windowref = rootwindow->MacGetWindowRef() ; WindowRef windowref = (WindowRef) rootwindow->MacGetWindowRef() ;
wxPoint origin = window->GetClientAreaOrigin() ; wxPoint origin = window->GetClientAreaOrigin() ;
wxSize size = window->GetClientSize() ; wxSize size = window->GetClientSize() ;
int x , y ; int x , y ;
x = origin.x ; x = origin.x ;
y = origin.y ; y = origin.y ;
window->MacWindowToRootWindow( &x , &y ) ; window->MacWindowToRootWindow( &x , &y ) ;
m_macLocalOrigin.h = x ; m_macLocalOrigin.x = x ;
m_macLocalOrigin.v = y ; m_macLocalOrigin.y = y ;
SetRectRgn( m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ; SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , origin.x , origin.y , origin.x + size.x , origin.y + size.y ) ;
SectRgn( m_macBoundaryClipRgn , window->MacGetVisibleRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; SectRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) window->MacGetVisibleRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , -origin.x , -origin.y ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , -origin.x , -origin.y ) ;
SectRgn( m_macBoundaryClipRgn , window->GetUpdateRegion().GetWXHRGN() , m_macBoundaryClipRgn ) ; SectRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) window->GetUpdateRegion().GetWXHRGN() , (RgnHandle) m_macBoundaryClipRgn ) ;
OffsetRgn( m_macBoundaryClipRgn , m_macLocalOrigin.h , m_macLocalOrigin.v ) ; OffsetRgn( (RgnHandle) m_macBoundaryClipRgn , m_macLocalOrigin.x , m_macLocalOrigin.y ) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ; CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_macPort = UMAGetWindowPort( windowref ) ; m_macPort = UMAGetWindowPort( windowref ) ;
m_minY = m_minX = 0; m_minY = m_minX = 0;
m_maxX = size.x ; m_maxX = size.x ;

View File

@@ -14,6 +14,7 @@
#endif #endif
#include "wx/dcmemory.h" #include "wx/dcmemory.h"
#include "wx/mac/private.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxMemoryDC // wxMemoryDC
@@ -43,7 +44,7 @@ wxMemoryDC::~wxMemoryDC()
{ {
if ( m_selected.Ok() ) if ( m_selected.Ok() )
{ {
UnlockPixels( GetGWorldPixMap(m_selected.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );
} }
}; };
@@ -51,7 +52,7 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
{ {
if ( m_selected.Ok() ) if ( m_selected.Ok() )
{ {
UnlockPixels( GetGWorldPixMap(m_selected.GetHBITMAP()) ); UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );
} }
m_selected = bitmap; m_selected = bitmap;
if (m_selected.Ok()) if (m_selected.Ok())

View File

@@ -63,9 +63,9 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
} }
#if !TARGET_CARBON #if !TARGET_CARBON
if ( ::PrValidate( m_printData.m_macPrintInfo ) ) if ( ::PrValidate( (THPrint) m_printData.m_macPrintInfo ) )
{ {
::PrStlDialog( m_printData.m_macPrintInfo ) ; ::PrStlDialog( (THPrint) m_printData.m_macPrintInfo ) ;
// the driver has changed in the mean time, should we pop up a page setup dialog ? // the driver has changed in the mean time, should we pop up a page setup dialog ?
} }
err = PrError() ; err = PrError() ;
@@ -79,7 +79,7 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
return; return;
} }
::GetPort( &macPrintFormerPort ) ; ::GetPort( &macPrintFormerPort ) ;
m_macPrintPort = ::PrOpenDoc( m_printData.m_macPrintInfo , NULL , NULL ) ; m_macPrintPort = ::PrOpenDoc( (THPrint) m_printData.m_macPrintInfo , NULL , NULL ) ;
err = PrError() ; err = PrError() ;
if ( err ) if ( err )
{ {
@@ -143,8 +143,8 @@ wxPrinterDC::wxPrinterDC(const wxPrintData& printdata)
m_maxX = rPaper.right - rPaper.left ; m_maxX = rPaper.right - rPaper.left ;
m_maxY = rPaper.bottom - rPaper.top ; m_maxY = rPaper.bottom - rPaper.top ;
#else #else
m_maxX = (**m_printData.m_macPrintInfo).rPaper.right - (**m_printData.m_macPrintInfo).rPaper.left ; m_maxX = (**(THPrint)m_printData.m_macPrintInfo).rPaper.right - (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ;
m_maxY = (**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).rPaper.top ; m_maxY = (**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom - (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ;
#endif #endif
} }
@@ -155,15 +155,15 @@ wxPrinterDC::~wxPrinterDC(void)
#if !TARGET_CARBON #if !TARGET_CARBON
if ( m_ok ) if ( m_ok )
{ {
::PrCloseDoc( m_macPrintPort ) ; ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
err = PrError() ; err = PrError() ;
if ( err == noErr ) if ( err == noErr )
{ {
if ( (**m_printData.m_macPrintInfo).prJob.bJDocLoop == bSpoolLoop ) if ( (**(THPrint)m_printData.m_macPrintInfo).prJob.bJDocLoop == bSpoolLoop )
{ {
TPrStatus status ; TPrStatus status ;
::PrPicFile( m_printData.m_macPrintInfo , NULL , NULL , NULL , &status ) ; ::PrPicFile( (THPrint) m_printData.m_macPrintInfo , NULL , NULL , NULL , &status ) ;
} }
} }
else else
@@ -233,9 +233,9 @@ void wxPrinterDC::StartPage(void)
wxString message ; wxString message ;
#if !TARGET_CARBON #if !TARGET_CARBON
PrOpenPage( m_macPrintPort , NULL ) ; PrOpenPage( (TPPrPort) m_macPrintPort , NULL ) ;
m_macLocalOrigin.h = (**m_printData.m_macPrintInfo).rPaper.left ; m_macLocalOrigin.x = (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ;
m_macLocalOrigin.v = (**m_printData.m_macPrintInfo).rPaper.top ; m_macLocalOrigin.y = (**(THPrint)m_printData.m_macPrintInfo).rPaper.top ;
Rect clip = { -32000 , -32000 , 32000 , 32000 } ; Rect clip = { -32000 , -32000 , 32000 , 32000 } ;
::ClipRect( &clip ) ; ::ClipRect( &clip ) ;
@@ -245,8 +245,8 @@ void wxPrinterDC::StartPage(void)
message.Printf( "Print Error %d", err ) ; message.Printf( "Print Error %d", err ) ;
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal(); dialog.ShowModal();
::PrClosePage( m_macPrintPort ) ; ::PrClosePage( (TPPrPort) m_macPrintPort ) ;
::PrCloseDoc( m_macPrintPort ) ; ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
::UMAPrClose() ; ::UMAPrClose() ;
::SetPort( macPrintFormerPort ) ; ::SetPort( macPrintFormerPort ) ;
m_ok = FALSE ; m_ok = FALSE ;
@@ -288,14 +288,14 @@ void wxPrinterDC::EndPage(void)
wxString message ; wxString message ;
#if !TARGET_CARBON #if !TARGET_CARBON
PrClosePage( (TPrPort*) m_macPort ) ; PrClosePage( (TPPrPort) m_macPort ) ;
err = PrError() ; err = PrError() ;
if ( err != noErr ) if ( err != noErr )
{ {
message.Printf( "Print Error %d", err ) ; message.Printf( "Print Error %d", err ) ;
wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ; wxMessageDialog dialog( NULL , message , "", wxICON_HAND | wxOK) ;
dialog.ShowModal(); dialog.ShowModal();
::PrCloseDoc( m_macPrintPort ) ; ::PrCloseDoc( (TPPrPort) m_macPrintPort ) ;
::UMAPrClose() ; ::UMAPrClose() ;
::SetPort( macPrintFormerPort ) ; ::SetPort( macPrintFormerPort ) ;
m_ok = FALSE ; m_ok = FALSE ;

View File

@@ -20,6 +20,8 @@
#include "wx/cmndata.h" #include "wx/cmndata.h"
#include "wx/mac/private.h"
#ifdef __DARWIN__ #ifdef __DARWIN__
#include <Carbon/Carbon.h> #include <Carbon/Carbon.h>
#else #else
@@ -30,423 +32,11 @@
IMPLEMENT_CLASS(wxDirDialog, wxDialog) IMPLEMENT_CLASS(wxDirDialog, wxDialog)
#endif #endif
bool gUseNavServices = NavServicesAvailable() ;
// the data we need to pass to our standard file hook routine
// includes a pointer to the dialog, a pointer to the standard
// file reply record (so we can inspect the current selection)
// and a copy of the "previous" file spec of the reply record
// so we can see if the selection has changed
#if !TARGET_CARBON
struct UserDataRec {
StandardFileReply *sfrPtr;
FSSpec oldSelectionFSSpec;
DialogPtr theDlgPtr;
};
typedef struct UserDataRec
UserDataRec, *UserDataRecPtr;
enum {
kSelectItem = 10, // select button item number
kSFGetFolderDlgID = 250, // dialog resource number
kStrListID = 250, // our strings
kSelectStrNum = 1, // word 'Select: ' for button
kDesktopStrNum = 2, // word 'Desktop' for button
kSelectNoQuoteStrNum = 3, // word 'Select: ' for button
kUseQuotes = true, // parameter for SetButtonName
kDontUseQuotes = false
};
static void GetLabelString(StringPtr theStr, short stringNum)
{
GetIndString(theStr, kStrListID, stringNum);
}
static void CopyPStr(StringPtr src, StringPtr dest)
{
BlockMoveData(src, dest, 1 + src[0]);
}
static char GetSelectKey(void)
{
// this is the key used to trigger the select button
// NOT INTERNATIONAL SAVVY; should at least grab it from resources
return 's';
}
// SetButtonName sets the name of the Select button in the dialog
//
// To do this, we need to call the Script Manager to truncate the
// label in the middle to fit the button and to merge the button
// name with the word Select (possibly followed by quotes). Using
// the Script Manager avoids all sorts of problems internationally.
//
// buttonName is the name to appear following the word Select
// quoteFlag should be true if the name is to appear in quotes
static void SetButtonName(DialogPtr theDlgPtr, short buttonID, StringPtr buttonName,
Boolean quoteFlag)
{
short buttonType;
Handle buttonHandle;
Rect buttonRect;
short textWidth;
Handle labelHandle;
Handle nameHandle;
Str15 keyStr;
Str255 labelStr;
OSErr err;
nameHandle = nil;
labelHandle = nil;
// get the details of the button from the dialog
GetDialogItem(theDlgPtr, buttonID, &buttonType, &buttonHandle, &buttonRect);
// get the string for the select button label, "Select ^0" or "Select <20>^0<>"
GetLabelString(labelStr, (quoteFlag == kUseQuotes) ? kSelectStrNum : kSelectNoQuoteStrNum);
// make string handles containing the select button label and the
// file name to be stuffed into the button
err = PtrToHand(&labelStr[1], &labelHandle, labelStr[0]);
if (err != noErr) goto Bail;
// cut out the middle of the file name to fit the button
//
// we'll temporarily use labelStr here to hold the modified button name
// since we don't own the buttonName string storage space
textWidth = (buttonRect.right - buttonRect.left) - StringWidth(labelStr);
CopyPStr(buttonName, labelStr);
(void) TruncString(textWidth, labelStr, smTruncMiddle);
err = PtrToHand(&labelStr[1], &nameHandle, labelStr[0]);
if (err != noErr) goto Bail;
// replace the ^0 in the Select string with the file name
CopyPStr("\p^0", keyStr);
(void) ReplaceText(labelHandle, nameHandle, keyStr);
labelStr[0] = (unsigned char) GetHandleSize(labelHandle);
BlockMoveData(*labelHandle, &labelStr[1], labelStr[0]);
// now set the control title, and re-validate the area
// above the control to avoid a needless redraw
SetControlTitle((ControlHandle) buttonHandle, labelStr);
ValidRect(&buttonRect);
Bail:
if (nameHandle) DisposeHandle(nameHandle);
if (labelHandle) DisposeHandle(labelHandle);
}
// FlashButton briefly highlights the dialog button
// as feedback for key equivalents
static void FlashButton(DialogPtr theDlgPtr, short buttonID)
{
short buttonType;
Handle buttonHandle;
Rect buttonRect;
unsigned long finalTicks;
GetDialogItem(theDlgPtr, buttonID, &buttonType, &buttonHandle, &buttonRect);
HiliteControl((ControlHandle) buttonHandle, kControlButtonPart);
Delay(10, &finalTicks);
HiliteControl((ControlHandle) buttonHandle, 0);
}
static Boolean SameFSSpec(FSSpecPtr spec1, FSSpecPtr spec2)
{
return (spec1->vRefNum == spec2->vRefNum
&& spec1->parID == spec2->parID
&& EqualString(spec1->name, spec2->name, false, false));
}
// MyModalDialogFilter maps a key to the Select button, and handles
// flashing of the button when the key is hit
static pascal Boolean SFGetFolderModalDialogFilter(DialogPtr theDlgPtr, EventRecord *eventRec,
short *item, void *dataPtr)
{
#pragma unused (dataPtr)
// make certain the proper dialog is showing, 'cause standard file
// can nest dialogs but calls the same filter for each
if (((WindowPeek) theDlgPtr)->refCon == sfMainDialogRefCon)
{
// check if the select button was hit
if ((eventRec->what == keyDown)
&& (eventRec->modifiers & cmdKey)
&& ((eventRec->message & charCodeMask) == GetSelectKey()))
{
*item = kSelectItem;
FlashButton(theDlgPtr, kSelectItem);
return true;
}
}
return false;
}
// MyDlgHook is a hook routine that maps the select button to Open
// and sets the Select button name
static pascal short SFGetFolderDialogHook(short item, DialogPtr theDlgPtr, void *dataPtr)
{
UserDataRecPtr theUserDataRecPtr;
long desktopDirID;
short desktopVRefNum;
FSSpec tempSpec;
Str63 desktopName;
OSErr err;
// be sure Std File is really showing us the intended dialog,
// not a nested modal dialog
if (((WindowPeek) theDlgPtr)->refCon != sfMainDialogRefCon)
{
return item;
}
theUserDataRecPtr = (UserDataRecPtr) dataPtr;
// map the Select button to Open
if (item == kSelectItem)
{
item = sfItemOpenButton;
}
// find the desktop folder
err = FindFolder(theUserDataRecPtr->sfrPtr->sfFile.vRefNum,
kDesktopFolderType, kDontCreateFolder,
&desktopVRefNum, &desktopDirID);
if (err != noErr)
{
// for errors, get value that won't match any real vRefNum/dirID
desktopVRefNum = 0;
desktopDirID = 0;
}
// change the Select button label if the selection has changed or
// if this is the first call to the hook
if (item == sfHookFirstCall
|| item == sfHookChangeSelection
|| item == sfHookRebuildList
|| ! SameFSSpec(&theUserDataRecPtr->sfrPtr->sfFile,
&theUserDataRecPtr->oldSelectionFSSpec))
{
// be sure there is a file name selected
if (theUserDataRecPtr->sfrPtr->sfFile.name[0] != '\0')
{
SetButtonName(theDlgPtr, kSelectItem,
theUserDataRecPtr->sfrPtr->sfFile.name,
kUseQuotes); // true -> use quotes
}
else
{
// is the desktop selected?
if (theUserDataRecPtr->sfrPtr->sfFile.vRefNum == desktopVRefNum
&& theUserDataRecPtr->sfrPtr->sfFile.parID == desktopDirID)
{
// set button to "Select Desktop"
GetLabelString(desktopName, kDesktopStrNum);
SetButtonName(theDlgPtr, kSelectItem,
desktopName, kDontUseQuotes); // false -> no quotes
}
else
{
// get parent directory's name for the Select button
//
// passing an empty name string to FSMakeFSSpec gets the
// name of the folder specified by the parID parameter
(void) FSMakeFSSpec(theUserDataRecPtr->sfrPtr->sfFile.vRefNum,
theUserDataRecPtr->sfrPtr->sfFile.parID, "\p",
&tempSpec);
SetButtonName(theDlgPtr, kSelectItem,
tempSpec.name, kUseQuotes); // true -> use quotes
}
}
}
// save the current selection as the old selection for comparison next time
//
// it's not valid on the first call, though, or if we don't have a
// name available from standard file
if (item != sfHookFirstCall || theUserDataRecPtr->sfrPtr->sfFile.name[0] != '\0')
{
theUserDataRecPtr->oldSelectionFSSpec = theUserDataRecPtr->sfrPtr->sfFile;
}
else
{
// on first call, empty string won't set the button correctly,
// so invalidate oldSelection
theUserDataRecPtr->oldSelectionFSSpec.vRefNum = 999;
theUserDataRecPtr->oldSelectionFSSpec.parID = 0;
}
return item;
}
void StandardGetFolder( ConstStr255Param message , ConstStr255Param path , FileFilterYDUPP fileFilter, StandardFileReply *theSFR)
{
Point thePt;
SFTypeList mySFTypeList;
UserDataRec myData;
FSSpec tempSpec;
Boolean folderFlag;
Boolean wasAliasedFlag;
DlgHookYDUPP dlgHookUPP;
ModalFilterYDUPP myModalFilterUPP;
OSErr err;
// presumably we're running System 7 or later so CustomGetFile is
// available
// set initial contents of Select button to a space
memcpy(theSFR->sfFile.name, "\p ", 2);
// point the user data parameter at the reply record so we can get to it later
myData.sfrPtr = theSFR;
// display the dialog
#if !TARGET_CARBON
dlgHookUPP = NewDlgHookYDProc(SFGetFolderDialogHook);
myModalFilterUPP = NewModalFilterYDProc(SFGetFolderModalDialogFilter);
thePt.h = thePt.v = -1; // center dialog
ParamText( message , NULL , NULL , NULL ) ;
CustomGetFile( fileFilter,
-1, // show all types
mySFTypeList,
theSFR,
kSFGetFolderDlgID,
thePt, // top left point
dlgHookUPP,
myModalFilterUPP,
nil, // activate list
nil, // activate proc
&myData);
DisposeRoutineDescriptor(dlgHookUPP);
DisposeRoutineDescriptor(myModalFilterUPP);
#else
#endif
// if cancel wasn't pressed and no fatal error occurred...
if (theSFR->sfGood)
{
// if no name is in the reply record file spec,
// use the file spec of the parent folder
if (theSFR->sfFile.name[0] == '\0')
{
err = FSMakeFSSpec(theSFR->sfFile.vRefNum, theSFR->sfFile.parID,
"\p", &tempSpec);
if (err == noErr)
{
theSFR->sfFile = tempSpec;
}
else
{
// no name to return, forget it
theSFR->sfGood = false;
}
}
// if there is now a name in the file spec, check if it's
// for a folder or a volume
if (theSFR->sfFile.name[0] != '\0')
{
// the parID of the root of a disk is always fsRtParID == 1
if (theSFR->sfFile.parID == fsRtParID)
{
theSFR->sfIsVolume = true;
theSFR->sfIsFolder = false; // it would be reasonable for this to be true, too
}
// we have a valid FSSpec, now let's make sure it's not for an alias file
err = ResolveAliasFile(&theSFR->sfFile, true, &folderFlag, &wasAliasedFlag);
if (err != noErr)
{
theSFR->sfGood = false;
}
// did the alias resolve to a folder?
if (folderFlag && ! theSFR->sfIsVolume)
{
theSFR->sfIsFolder = true;
}
}
}
}
static pascal Boolean OnlyVisibleFoldersCustomFileFilter(CInfoPBPtr myCInfoPBPtr, void *dataPtr)
{
#pragma unused (dataPtr)
// return true if this item is invisible or a file
Boolean visibleFlag;
Boolean folderFlag;
visibleFlag = ! (myCInfoPBPtr->hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible);
folderFlag = (myCInfoPBPtr->hFileInfo.ioFlAttrib & 0x10);
// because the semantics of the filter proc are "true means don't show
// it" we need to invert the result that we return
return !(visibleFlag && folderFlag);
}
#endif
wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
const wxString& defaultPath, const wxString& defaultPath,
long style, const wxPoint& pos) long style, const wxPoint& pos)
{ {
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message; m_message = message;
m_dialogStyle = style; m_dialogStyle = style;
m_parent = parent; m_parent = parent;
@@ -455,145 +45,98 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
int wxDirDialog::ShowModal() int wxDirDialog::ShowModal()
{ {
#if !TARGET_CARBON NavDialogOptions mNavOptions;
if ( !gUseNavServices ) NavObjectFilterUPP mNavFilterUPP = NULL;
{ NavPreviewUPP mNavPreviewUPP = NULL ;
Str255 prompt ; NavReplyRecord mNavReply;
Str255 path ; AEDesc* mDefaultLocation = NULL ;
bool mSelectDefault = false ;
#if TARGET_CARBON
c2pstrcpy((StringPtr)prompt, m_message) ;
#else
strcpy((char *)prompt, m_message) ;
c2pstr((char *)prompt ) ;
#endif
#if TARGET_CARBON
c2pstrcpy((StringPtr)path, m_path ) ;
#else
strcpy((char *)path, m_path ) ;
c2pstr((char *)path ) ;
#endif
StandardFileReply reply ;
FileFilterYDUPP invisiblesExcludedCustomFilterUPP = 0 ;
invisiblesExcludedCustomFilterUPP =
NewFileFilterYDProc(OnlyVisibleFoldersCustomFileFilter);
StandardGetFolder( prompt , path , invisiblesExcludedCustomFilterUPP, &reply);
::NavGetDefaultDialogOptions(&mNavOptions);
DisposeRoutineDescriptor(invisiblesExcludedCustomFilterUPP); mNavFilterUPP = nil;
mNavPreviewUPP = nil;
if ( reply.sfGood == false ) mSelectDefault = false;
{ mNavReply.validRecord = false;
m_path = "" ; mNavReply.replacing = false;
return wxID_CANCEL ; mNavReply.isStationery = false;
mNavReply.translationNeeded = false;
mNavReply.selection.descriptorType = typeNull;
mNavReply.selection.dataHandle = nil;
mNavReply.keyScript = smSystemScript;
mNavReply.fileTranslation = nil;
// Set default location, the location
// that's displayed when the dialog
// first appears
if ( mDefaultLocation ) {
if (mSelectDefault) {
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
} else {
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
} }
else
{
m_path = wxMacFSSpec2MacFilename( &reply.sfFile ) ;
return wxID_OK ;
}
return wxID_CANCEL;
} }
else
#endif
{
NavDialogOptions mNavOptions;
NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ;
NavReplyRecord mNavReply;
AEDesc* mDefaultLocation = NULL ;
bool mSelectDefault = false ;
::NavGetDefaultDialogOptions(&mNavOptions);
mNavFilterUPP = nil; OSErr err = ::NavChooseFolder(
mNavPreviewUPP = nil; mDefaultLocation,
mSelectDefault = false; &mNavReply,
mNavReply.validRecord = false; &mNavOptions,
mNavReply.replacing = false; NULL,
mNavReply.isStationery = false; mNavFilterUPP,
mNavReply.translationNeeded = false; 0L); // User Data
mNavReply.selection.descriptorType = typeNull;
mNavReply.selection.dataHandle = nil; if ( (err != noErr) && (err != userCanceledErr) ) {
mNavReply.keyScript = smSystemScript; m_path = "" ;
mNavReply.fileTranslation = nil; return wxID_CANCEL ;
}
if (mNavReply.validRecord) { // User chose a folder
FSSpec folderInfo;
FSSpec outFileSpec ;
AEDesc specDesc ;
// Set default location, the location OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
// that's displayed when the dialog if ( err != noErr ) {
// first appears
if ( mDefaultLocation ) {
if (mSelectDefault) {
mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
} else {
mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
}
}
OSErr err = ::NavChooseFolder(
mDefaultLocation,
&mNavReply,
&mNavOptions,
NULL,
mNavFilterUPP,
0L); // User Data
if ( (err != noErr) && (err != userCanceledErr) ) {
m_path = "" ; m_path = "" ;
return wxID_CANCEL ; return wxID_CANCEL ;
}
folderInfo = **(FSSpec**) specDesc.dataHandle;
if (specDesc.dataHandle != nil) {
::AEDisposeDesc(&specDesc);
} }
if (mNavReply.validRecord) { // User chose a folder
FSSpec folderInfo;
FSSpec outFileSpec ;
AEDesc specDesc ;
OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
if ( err != noErr ) {
m_path = "" ;
return wxID_CANCEL ;
}
folderInfo = **(FSSpec**) specDesc.dataHandle;
if (specDesc.dataHandle != nil) {
::AEDisposeDesc(&specDesc);
}
// mNavReply.GetFileSpec(folderInfo); // mNavReply.GetFileSpec(folderInfo);
// The FSSpec from NavChooseFolder is NOT the file spec // The FSSpec from NavChooseFolder is NOT the file spec
// for the folder. The parID field is actually the DirID // for the folder. The parID field is actually the DirID
// of the folder itself, not the folder's parent, and // of the folder itself, not the folder's parent, and
// the name field is empty. We must call PBGetCatInfo // the name field is empty. We must call PBGetCatInfo
// to get the parent DirID and folder name // to get the parent DirID and folder name
Str255 name; Str255 name;
CInfoPBRec thePB; // Directory Info Parameter Block CInfoPBRec thePB; // Directory Info Parameter Block
thePB.dirInfo.ioCompletion = nil; thePB.dirInfo.ioCompletion = nil;
thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right thePB.dirInfo.ioVRefNum = folderInfo.vRefNum; // Volume is right
thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID thePB.dirInfo.ioDrDirID = folderInfo.parID; // Folder's DirID
thePB.dirInfo.ioNamePtr = name; thePB.dirInfo.ioNamePtr = name;
thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID thePB.dirInfo.ioFDirIndex = -1; // Lookup using Volume and DirID
err = ::PBGetCatInfoSync(&thePB); err = ::PBGetCatInfoSync(&thePB);
if ( err != noErr ) { if ( err != noErr ) {
m_path = "" ; m_path = "" ;
return wxID_CANCEL ; return wxID_CANCEL ;
} }
// Create cannonical FSSpec // Create cannonical FSSpec
::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID, ::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,
name, &outFileSpec); name, &outFileSpec);
// outFolderDirID = thePB.dirInfo.ioDrDirID; // outFolderDirID = thePB.dirInfo.ioDrDirID;
m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ; m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
return wxID_OK ; return wxID_OK ;
}
return wxID_CANCEL;
} }
return wxID_CANCEL;
} }

View File

@@ -40,6 +40,8 @@
#include <windows.h> #include <windows.h>
#endif #endif
#include "wx/mac/private.h"
#include "MoreFiles.h" #include "MoreFiles.h"
#include "MoreFilesExtras.h" #include "MoreFilesExtras.h"

View File

@@ -22,6 +22,7 @@
#include "wx/toplevel.h" #include "wx/toplevel.h"
#include "wx/app.h" #include "wx/app.h"
#include "wx/gdicmn.h" #include "wx/gdicmn.h"
#include "wx/mac/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// global // global
@@ -104,17 +105,17 @@ bool wxDropTarget::CurrentDragHasSupportedFormat()
{ {
UInt16 items ; UInt16 items ;
OSErr result; OSErr result;
CountDragItems(m_currentDrag, &items); CountDragItems((DragReference)m_currentDrag, &items);
for (UInt16 index = 1; index <= items && supported == false ; ++index) for (UInt16 index = 1; index <= items && supported == false ; ++index)
{ {
ItemReference theItem; ItemReference theItem;
FlavorType theType ; FlavorType theType ;
UInt16 flavors = 0 ; UInt16 flavors = 0 ;
GetDragItemReferenceNumber(m_currentDrag, index, &theItem); GetDragItemReferenceNumber((DragReference)m_currentDrag, index, &theItem);
CountDragItemFlavors( m_currentDrag, theItem , &flavors ) ; CountDragItemFlavors( (DragReference)m_currentDrag, theItem , &flavors ) ;
for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor ) for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
{ {
result = GetFlavorType(m_currentDrag, theItem, flavor , &theType); result = GetFlavorType((DragReference)m_currentDrag, theItem, flavor , &theType);
if ( m_dataObject->IsSupportedFormat( wxDataFormat( theType ) ) ) if ( m_dataObject->IsSupportedFormat( wxDataFormat( theType ) ) )
{ {
supported = true ; supported = true ;
@@ -172,31 +173,31 @@ bool wxDropTarget::GetData()
{ {
UInt16 items ; UInt16 items ;
OSErr result; OSErr result;
CountDragItems(m_currentDrag, &items); CountDragItems((DragReference)m_currentDrag, &items);
for (UInt16 index = 1; index <= items; ++index) for (UInt16 index = 1; index <= items; ++index)
{ {
ItemReference theItem; ItemReference theItem;
FlavorType theType ; FlavorType theType ;
UInt16 flavors = 0 ; UInt16 flavors = 0 ;
GetDragItemReferenceNumber(m_currentDrag, index, &theItem); GetDragItemReferenceNumber((DragReference)m_currentDrag, index, &theItem);
CountDragItemFlavors( m_currentDrag, theItem , &flavors ) ; CountDragItemFlavors( (DragReference)m_currentDrag, theItem , &flavors ) ;
for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor ) for ( UInt16 flavor = 1 ; flavor <= flavors ; ++flavor )
{ {
result = GetFlavorType(m_currentDrag, theItem, flavor , &theType); result = GetFlavorType((DragReference)m_currentDrag, theItem, flavor , &theType);
wxDataFormat format(theType) ; wxDataFormat format(theType) ;
if ( m_dataObject->IsSupportedFormat( format ) ) if ( m_dataObject->IsSupportedFormat( format ) )
{ {
FlavorFlags theFlags; FlavorFlags theFlags;
result = GetFlavorFlags(m_currentDrag, theItem, theType, &theFlags); result = GetFlavorFlags((DragReference)m_currentDrag, theItem, theType, &theFlags);
if (result == noErr) if (result == noErr)
{ {
Size dataSize ; Size dataSize ;
Ptr theData ; Ptr theData ;
GetFlavorDataSize(m_currentDrag, theItem, theType, &dataSize); GetFlavorDataSize((DragReference)m_currentDrag, theItem, theType, &dataSize);
if ( theType == 'TEXT' ) if ( theType == 'TEXT' )
dataSize++ ; dataSize++ ;
theData = new char[dataSize]; theData = new char[dataSize];
GetFlavorData(m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L); GetFlavorData((DragReference)m_currentDrag, theItem, theType, (void*) theData, &dataSize, 0L);
if( theType == 'TEXT' ) if( theType == 'TEXT' )
{ {
theData[dataSize]=0 ; theData[dataSize]=0 ;
@@ -335,7 +336,7 @@ wxDragResult wxDropSource::DoDragDrop( bool allowMove )
dragRegion = NewRgn(); dragRegion = NewRgn();
RgnHandle tempRgn = NewRgn() ; RgnHandle tempRgn = NewRgn() ;
EventRecord* ev = wxTheApp->MacGetCurrentEvent() ; EventRecord* ev = (EventRecord*) wxTheApp->MacGetCurrentEvent() ;
const short dragRegionOuterBoundary = 10 ; const short dragRegionOuterBoundary = 10 ;
const short dragRegionInnerBoundary = 9 ; const short dragRegionInnerBoundary = 9 ;

View File

@@ -31,6 +31,8 @@ IMPLEMENT_CLASS(wxFileDialog, wxDialog)
// begin wxmac // begin wxmac
#include "wx/mac/private.h"
#include <Navigation.h> #include <Navigation.h>
#include "MoreFiles.h" #include "MoreFiles.h"
@@ -112,132 +114,6 @@ OSType gfiltersmac[] =
} ; } ;
#if !TARGET_CARBON
static void wxMacSetupStandardFile(short newVRefNum, long newDirID)
{
enum
{ SFSaveDisk = 0x214, CurDirStore = 0x398 };
*(short *) SFSaveDisk = -1 * newVRefNum;
*(long *) CurDirStore = newDirID;
}
static void wxMacSetupStandardFileFromPath( const char* s )
{
Str255 volume ;
Str255 path ;
short vRefNum ;
long dirRef ;
short i,j ;
Boolean isDirectory ;
for (i=0 ; (s[i]!=0) && (s[i]!=':') ;i++)
{
volume[i]=s[i] ;
}
volume[i]=':' ;
volume[i+1]=0 ;
// then copy the rest of the filename
for (j=0;(s[i]!=0);i++,j++)
{
path[j]=s[i] ;
}
path[j]=0 ;
c2pstr((Ptr) volume) ;
c2pstr((Ptr) path) ;
SetVol(volume, 0) ;
GetVol( NULL, &vRefNum ) ;
GetDirectoryID( vRefNum , fsRtDirID , path , &dirRef , &isDirectory ) ;
wxMacSetupStandardFile(vRefNum, dirRef) ;
}
enum {
kSelectItem = 10, // select button item number
kSFGetFileDlgID = 251, // dialog resource number
kStrListID = 251, // our strings
kSelectStrNum = 1, // word 'Select: ' for button
kDesktopStrNum = 2, // word 'Desktop' for button
kSelectNoQuoteStrNum = 3, // word 'Select: ' for button
kUseQuotes = true, // parameter for SetButtonName
kDontUseQuotes = false
};
static void GetLabelString(StringPtr theStr, short stringNum)
{
GetIndString(theStr, kStrListID, stringNum);
}
static void CopyPStr(StringPtr src, StringPtr dest)
{
BlockMoveData(src, dest, 1 + src[0]);
}
static char GetSelectKey(void)
{
// this is the key used to trigger the select button
// NOT INTERNATIONAL SAVVY; should at least grab it from resources
return 's';
}
// FlashButton briefly highlights the dialog button
// as feedback for key equivalents
static void FlashButton(DialogPtr theDlgPtr, short buttonID)
{
short buttonType;
Handle buttonHandle;
Rect buttonRect;
unsigned long finalTicks;
GetDialogItem(theDlgPtr, buttonID, &buttonType, &buttonHandle, &buttonRect);
HiliteControl((ControlHandle) buttonHandle, kControlButtonPart);
Delay(10, &finalTicks);
HiliteControl((ControlHandle) buttonHandle, 0);
}
static Boolean SameFSSpec(FSSpecPtr spec1, FSSpecPtr spec2)
{
return (spec1->vRefNum == spec2->vRefNum
&& spec1->parID == spec2->parID
&& EqualString(spec1->name, spec2->name, false, false));
}
// MyModalDialogFilter maps a key to the Select button, and handles
// flashing of the button when the key is hit
static pascal Boolean SFGetFolderModalDialogFilter(DialogPtr theDlgPtr, EventRecord *eventRec,
short *item, void *dataPtr)
{
#pragma unused (dataPtr)
// make certain the proper dialog is showing, 'cause standard file
// can nest dialogs but calls the same filter for each
if (((WindowPeek) theDlgPtr)->refCon == sfMainDialogRefCon)
{
// check if the select button was hit
/*
if ((eventRec->what == keyDown)
&& (eventRec->modifiers & cmdKey)
&& ((eventRec->message & charCodeMask) == GetSelectKey()))
{
*item = kSelectItem;
FlashButton(theDlgPtr, kSelectItem);
return true;
}
*/
}
return false;
}
#endif !TARGET_CARBON
void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
{ {
@@ -300,113 +176,6 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter )
} }
#ifndef __DARWIN__
void ExtendedOpenFile( ConstStr255Param message , ConstStr255Param path , const char *filter , FileFilterYDUPP fileFilter, StandardFileReply *theSFR )
{
Point thePt;
OpenUserDataRec myData;
FSSpec tempSpec;
Boolean folderFlag;
Boolean wasAliasedFlag;
DlgHookYDUPP dlgHookUPP;
ModalFilterYDUPP myModalFilterUPP;
OSErr err;
SFTypeList types ;
// presumably we're running System 7 or later so CustomGetFile is
// available
// set initial contents of Select button to a space
memcpy( theSFR->sfFile.name , "\p " , 2 ) ;
// point the user data parameter at the reply record so we can get to it later
MakeUserDataRec( &myData , filter ) ;
// display the dialog
#if !TARGET_CARBON
dlgHookUPP = NULL ;
// dlgHookUPP = NewDlgHookYDProc(SFGetFolderDialogHook);
myModalFilterUPP = NewModalFilterYDProc(SFGetFolderModalDialogFilter);
thePt.h = thePt.v = -1; // center dialog
ParamText( message , NULL , NULL , NULL ) ;
CustomGetFile( fileFilter,
-1, // show all types
NULL,
theSFR,
kSFGetFileDlgID,
thePt, // top left point
dlgHookUPP,
myModalFilterUPP,
nil, // activate list
nil, // activate proc
&myData);
DisposeRoutineDescriptor(dlgHookUPP);
DisposeRoutineDescriptor(myModalFilterUPP);
#else
#endif
// if cancel wasn't pressed and no fatal error occurred...
if (theSFR->sfGood)
{
// if no name is in the reply record file spec,
// use the file spec of the parent folder
if (theSFR->sfFile.name[0] == '\0')
{
err = FSMakeFSSpec(theSFR->sfFile.vRefNum, theSFR->sfFile.parID,
"\p", &tempSpec);
if (err == noErr)
{
theSFR->sfFile = tempSpec;
}
else
{
// no name to return, forget it
theSFR->sfGood = false;
}
}
// if there is now a name in the file spec, check if it's
// for a folder or a volume
if (theSFR->sfFile.name[0] != '\0')
{
// the parID of the root of a disk is always fsRtParID == 1
if (theSFR->sfFile.parID == fsRtParID)
{
theSFR->sfIsVolume = true;
theSFR->sfIsFolder = false; // it would be reasonable for this to be true, too
}
// we have a valid FSSpec, now let's make sure it's not for an alias file
err = ResolveAliasFile(&theSFR->sfFile, true, &folderFlag, &wasAliasedFlag);
if (err != noErr)
{
theSFR->sfGood = false;
}
// did the alias resolve to a folder?
if (folderFlag && ! theSFR->sfIsVolume)
{
theSFR->sfIsFolder = true;
}
}
}
}
#endif
static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data) static Boolean CheckFile( ConstStr255Param name , OSType type , OpenUserDataRecPtr data)
{ {
Str255 filename ; Str255 filename ;
@@ -541,6 +310,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
long style, const wxPoint& pos) long style, const wxPoint& pos)
{ {
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message; m_message = message;
m_dialogStyle = style; m_dialogStyle = style;
m_parent = parent; m_parent = parent;
@@ -578,70 +348,6 @@ pascal Boolean CrossPlatformFilterCallback (
int wxFileDialog::ShowModal() int wxFileDialog::ShowModal()
{ {
#if !TARGET_CARBON
if ( !gUseNavServices )
{
if ( m_dialogStyle & wxSAVE )
{
StandardFileReply reply ;
Str255 prompt ;
Str255 filename ;
strcpy((char *)prompt, m_message) ;
c2pstr((char *)prompt ) ;
strcpy((char *)filename, m_fileName) ;
c2pstr((char *)filename ) ;
StandardPutFile( prompt , filename , &reply ) ;
if ( reply.sfGood == false )
{
m_path = "" ;
return wxID_CANCEL ;
}
else
{
m_path = wxMacFSSpec2MacFilename( &reply.sfFile ) ;
return wxID_OK ;
}
}
else
{
OSType types = '????' ;
Str255 prompt ;
Str255 path ;
strcpy((char *)prompt, m_message) ;
c2pstr((char *)prompt ) ;
strcpy((char *)path, m_dir ) ;
c2pstr((char *)path ) ;
StandardFileReply reply ;
FileFilterYDUPP crossPlatformFileFilterUPP = 0 ;
#if !TARGET_CARBON
crossPlatformFileFilterUPP =
NewFileFilterYDProc(CrossPlatformFileFilter);
#endif
ExtendedOpenFile( prompt , path , m_wildCard , crossPlatformFileFilterUPP, &reply);
#if !TARGET_CARBON
DisposeFileFilterYDUPP(crossPlatformFileFilterUPP);
#endif
if ( reply.sfGood == false )
{
m_path = "" ;
return wxID_CANCEL ;
}
else
{
m_path = wxMacFSSpec2UnixFilename( &reply.sfFile ) ;
return wxID_OK ;
}
}
return wxID_CANCEL;
}
else
#endif
{
NavDialogOptions mNavOptions; NavDialogOptions mNavOptions;
NavObjectFilterUPP mNavFilterUPP = NULL; NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ; NavPreviewUPP mNavPreviewUPP = NULL ;
@@ -800,7 +506,6 @@ int wxFileDialog::ShowModal()
return wxID_OK ; return wxID_OK ;
} }
return wxID_CANCEL; return wxID_CANCEL;
}
} }
// Generic file load/save dialog // Generic file load/save dialog

View File

@@ -22,6 +22,9 @@
#include "wx/fontutil.h" #include "wx/fontutil.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
#endif #endif

View File

@@ -37,6 +37,8 @@
#include "wx/fontmap.h" #include "wx/fontmap.h"
#include "wx/fontutil.h" #include "wx/fontutil.h"
#include "wx/mac/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// private classes // private classes
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -41,7 +41,7 @@ bool wxGauge::Create(wxWindow *parent, wxWindowID id,
MacPreControlCreate( parent , id , "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ; MacPreControlCreate( parent , id , "" , pos , size ,style & 0xE0FFFFFF /* no borders on mac */ , validator , name , &bounds , title ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 , 0 , range, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , range,
kControlProgressBarProc , (long) this ) ; kControlProgressBarProc , (long) this ) ;
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -60,13 +60,13 @@ void wxGauge::SetBezelFace(int w)
void wxGauge::SetRange(int r) void wxGauge::SetRange(int r)
{ {
m_rangeMax = r; m_rangeMax = r;
::SetControlMaximum( m_macControl , m_rangeMax ) ; ::SetControlMaximum( (ControlHandle) m_macControl , m_rangeMax ) ;
} }
void wxGauge::SetValue(int pos) void wxGauge::SetValue(int pos)
{ {
m_gaugePos = pos; m_gaugePos = pos;
::SetControlValue( m_macControl , m_gaugePos ) ; ::SetControlValue( (ControlHandle) m_macControl , m_gaugePos ) ;
} }
int wxGauge::GetShadowWidth() const int wxGauge::GetShadowWidth() const

View File

@@ -45,7 +45,7 @@ wxGLContext::wxGLContext(
{ {
m_window = win; m_window = win;
m_drawable = (AGLDrawable) UMAGetWindowPort(win->MacGetRootWindow()); m_drawable = (AGLDrawable) UMAGetWindowPort(MAC_WXHWND(win->MacGetRootWindow()));
m_glContext = aglCreateContext(fmt, other ? other->m_glContext : NULL); m_glContext = aglCreateContext(fmt, other ? other->m_glContext : NULL);
wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") ); wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") );
@@ -251,7 +251,7 @@ void wxGLCanvas::SetViewport()
int width, height; int width, height;
GetClientSize(& width, & height); GetClientSize(& width, & height);
Rect bounds ; Rect bounds ;
GetWindowPortBounds( MacGetRootWindow() , &bounds ) ; GetWindowPortBounds( MAC_WXHWND(MacGetRootWindow()) , &bounds ) ;
GLint parms[4] ; GLint parms[4] ;
parms[0] = x ; parms[0] = x ;
parms[1] = bounds.bottom - bounds.top - ( y + height ) ; parms[1] = bounds.bottom - bounds.top - ( y + height ) ;

View File

@@ -29,6 +29,7 @@
#define TRUE 1 #define TRUE 1
#endif #endif
#else #else
#include <MacHeaders.c>
#define OTUNIXERRORS 1 #define OTUNIXERRORS 1
#include <OpenTransport.h> #include <OpenTransport.h>
#include <OpenTransportProviders.h> #include <OpenTransportProviders.h>

View File

@@ -19,6 +19,9 @@
IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
#endif #endif
#include "wx/mac/private.h"
/* /*
* Icons * Icons
*/ */
@@ -43,18 +46,18 @@ wxIcon::wxIcon( char **bits ) :
{ {
} }
wxIcon::wxIcon(const wxString& icon_file, long flags, wxIcon::wxIcon(const wxString& icon_file, int flags,
int desiredWidth, int desiredHeight) int desiredWidth, int desiredHeight)
{ {
LoadFile(icon_file, flags, desiredWidth, desiredHeight); LoadFile(icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight);
} }
wxIcon::~wxIcon() wxIcon::~wxIcon()
{ {
} }
bool wxIcon::LoadFile(const wxString& filename, long type, bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
int desiredWidth, int desiredHeight) int desiredWidth, int desiredHeight)
{ {
UnRef(); UnRef();

View File

@@ -93,10 +93,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
if( isSelected ) { if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
} }
// Restore the saved clip region. // Restore the saved clip region.
@@ -111,10 +111,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode. // appropriate QuickDraw transform mode.
GetPort( &grafPtr ); GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr ); savedPenMode = GetPortPenMode( (CGrafPtr)grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode ); SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect ); PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode ); SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
break; break;
default : default :
break ; break ;
@@ -171,36 +171,36 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true, CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, &m_macControl ); kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag, GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize); sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this); SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false); SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else #else
long result ; long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0, kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ; kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ; sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ; HLock( (Handle) m_macList ) ;
ldefHandle ldef ; ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ; ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL ) if ( (**(ListHandle)m_macList).listDefProc != NULL )
{ {
(**ldef).instruction = 0x4EF9; /* JMP instruction */ (**ldef).instruction = 0x4EF9; /* JMP instruction */
(**ldef).function = (void(*)()) listDef.u.userProc; (**ldef).function = (void(*)()) listDef.u.userProc;
(**m_macList).listDefProc = (Handle) ldef ; (**(ListHandle)m_macList).listDefProc = (Handle) ldef ;
} }
Point pt = (**m_macList).cellSize ; Point pt = (**(ListHandle)m_macList).cellSize ;
pt.v = kwxMacListItemHeight ; pt.v = kwxMacListItemHeight ;
LCellSize( pt , m_macList ) ; LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ; LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif #endif
OptionBits options = 0; OptionBits options = 0;
if ( style & wxLB_MULTIPLE ) if ( style & wxLB_MULTIPLE )
@@ -215,7 +215,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
{ {
options = lOnlyOne ; options = lOnlyOne ;
} }
SetListSelectionFlags(m_macList, options); SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ; MacPostControlCreate() ;
@@ -224,7 +224,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
Append( choices[i] ) ; Append( choices[i] ) ;
} }
LSetDrawingMode( true , m_macList ) ; LSetDrawingMode( true , (ListHandle)m_macList ) ;
return TRUE; return TRUE;
} }
@@ -235,8 +235,8 @@ wxListBox::~wxListBox()
if ( m_macList ) if ( m_macList )
{ {
#if !TARGET_CARBON #if !TARGET_CARBON
DisposeHandle( (**m_macList).listDefProc ) ; DisposeHandle( (**(ListHandle)m_macList).listDefProc ) ;
(**m_macList).listDefProc = NULL ; (**(ListHandle)m_macList).listDefProc = NULL ;
#endif #endif
m_macList = NULL ; m_macList = NULL ;
} }
@@ -272,7 +272,7 @@ void wxListBox::DoSetSize(int x, int y,
wxControl::DoSetSize( x , y , width , height , sizeFlags ) ; wxControl::DoSetSize( x , y , width , height , sizeFlags ) ;
#if TARGET_CARBON #if TARGET_CARBON
Rect bounds ; Rect bounds ;
GetControlBounds( m_macControl , &bounds ) ; GetControlBounds( (ControlHandle) m_macControl , &bounds ) ;
ControlRef control = GetListVerticalScrollBar( m_macList ) ; ControlRef control = GetListVerticalScrollBar( m_macList ) ;
if ( control ) if ( control )
{ {
@@ -633,7 +633,7 @@ void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refC
void wxListBox::MacDelete( int N ) void wxListBox::MacDelete( int N )
{ {
LDelRow( 1 , N , m_macList) ; LDelRow( 1 , N , (ListHandle)m_macList) ;
Refresh(); Refresh();
} }
@@ -641,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text)
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
@@ -649,15 +649,15 @@ void wxListBox::MacInsert( int n , const char * text)
void wxListBox::MacAppend( const char * text) void wxListBox::MacAppend( const char * text)
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = (**m_macList).dataBounds.bottom ; cell.v = (**(ListHandle)m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , m_macList ) ; LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList); // LSetCell(text, strlen(text), cell, m_macList);
Refresh(); Refresh();
} }
void wxListBox::MacClear() void wxListBox::MacClear()
{ {
LDelRow( (**m_macList).dataBounds.bottom , 0 , m_macList ) ; LDelRow( (**(ListHandle)m_macList).dataBounds.bottom , 0 ,(ListHandle) m_macList ) ;
Refresh(); Refresh();
} }
@@ -666,15 +666,15 @@ void wxListBox::MacSetSelection( int n , bool select )
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
if ( ! (m_windowStyle & wxLB_MULTIPLE) ) if ( ! (m_windowStyle & wxLB_MULTIPLE) )
{ {
if ( LGetSelect( true , &cell , m_macList ) ) if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
{ {
LSetSelect( false , cell , m_macList ) ; LSetSelect( false , cell , (ListHandle)m_macList ) ;
} }
} }
cell.v = n ; cell.v = n ;
LSetSelect( select , cell , m_macList ) ; LSetSelect( select , cell , (ListHandle)m_macList ) ;
LAutoScroll( m_macList ) ; LAutoScroll( (ListHandle)m_macList ) ;
Refresh(); Refresh();
} }
@@ -682,7 +682,7 @@ bool wxListBox::MacIsSelected( int n ) const
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = n ; cell.v = n ;
return LGetSelect( false , &cell , m_macList ) ; return LGetSelect( false , &cell , (ListHandle)m_macList ) ;
} }
void wxListBox::MacDestroy() void wxListBox::MacDestroy()
@@ -693,7 +693,7 @@ void wxListBox::MacDestroy()
int wxListBox::MacGetSelection() const int wxListBox::MacGetSelection() const
{ {
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
if ( LGetSelect( true , &cell , m_macList ) ) if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
return cell.v ; return cell.v ;
else else
return -1 ; return -1 ;
@@ -708,7 +708,7 @@ int wxListBox::MacGetSelections( wxArrayInt& aSelections ) const
Cell cell = { 0 , 0 } ; Cell cell = { 0 , 0 } ;
cell.v = 0 ; cell.v = 0 ;
while ( LGetSelect( true , &cell , m_macList ) ) while ( LGetSelect( true , &cell ,(ListHandle) m_macList ) )
{ {
aSelections.Add( cell.v ) ; aSelections.Add( cell.v ) ;
no_sel++ ; no_sel++ ;
@@ -739,18 +739,18 @@ void wxListBox::OnSize( const wxSizeEvent &event)
#if TARGET_CARBON #if TARGET_CARBON
GetListCellSize(m_macList, &pt); GetListCellSize(m_macList, &pt);
#else #else
pt = (**m_macList).cellSize ; pt = (**(ListHandle)m_macList).cellSize ;
#endif #endif
pt.h = m_width - 15 ; pt.h = m_width - 15 ;
LCellSize( pt , m_macList ) ; LCellSize( pt , (ListHandle)m_macList ) ;
} }
void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart ) void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{ {
Boolean wasDoubleClick = false ; Boolean wasDoubleClick = false ;
long result ; long result ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ; ::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxDoubleClickTag , sizeof( wasDoubleClick ) , (char*) &wasDoubleClick , &result ) ;
if ( !wasDoubleClick ) if ( !wasDoubleClick )
{ {
MacDoClick() ; MacDoClick() ;
@@ -763,7 +763,7 @@ void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpar
void wxListBox::MacSetRedraw( bool doDraw ) void wxListBox::MacSetRedraw( bool doDraw )
{ {
LSetDrawingMode( doDraw , m_macList ) ; LSetDrawingMode( doDraw , (ListHandle)m_macList ) ;
} }

View File

@@ -8,6 +8,9 @@
*/ */
#include "wx/wx.h" #include "wx/wx.h"
#include "wx/mac/private.h"
#include "wx/mac/macnotfy.h" #include "wx/mac/macnotfy.h"
const short kMaxEvents = 1000 ; const short kMaxEvents = 1000 ;
@@ -74,6 +77,7 @@ void wxMacAddEvent(
short wakeUp ) short wakeUp )
{ {
wxMacNotificationEvents *e = (wxMacNotificationEvents *) table ; wxMacNotificationEvents *e = (wxMacNotificationEvents *) table ;
wxASSERT_MSG( handler != NULL , "illegal notification proc ptr" ) ;
/* this should be protected eventually */ /* this should be protected eventually */
short index = e->top++ ; short index = e->top++ ;
@@ -125,7 +129,8 @@ void wxMacProcessNotifierEvents()
gMacNotificationEvents.events[index] = NULL ; gMacNotificationEvents.events[index] = NULL ;
gMacNotificationEvents.proc[index] = NULL ; gMacNotificationEvents.proc[index] = NULL ;
handler( event , data ) ; if ( handler )
handler( event , data ) ;
} }
gInProcessing = false ; gInProcessing = false ;
} }

Some files were not shown because too many files have changed in this diff Show More