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
#else
m_macPrintInfo = (THPrint) NewHandleClear( sizeof( TPrint ) );
(**m_macPrintInfo).iPrVersion = 0; // something invalid
(**(THPrint)m_macPrintInfo).iPrVersion = 0; // something invalid
(**m_macPrintInfo).prInfo.iHRes = 72;
(**m_macPrintInfo).prInfo.iVRes = 72;
(**(THPrint)m_macPrintInfo).prInfo.iHRes = 72;
(**(THPrint)m_macPrintInfo).prInfo.iVRes = 72;
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 };
(**m_macPrintInfo).rPaper = r2;
(**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).rPaper = r2;
(**(THPrint)m_macPrintInfo).prStl.iPageV = 11 * 120 ; // 11 inches in 120th of an inch
(**(THPrint)m_macPrintInfo).prStl.iPageH = 8 * 120 ; // 8 inches in 120th of an inch
#endif
#endif
m_printOrientation = wxPORTRAIT;
@@ -768,7 +768,7 @@ void wxPrintData::ConvertToNative()
{
#if TARGET_CARBON
#else
(**m_macPrintInfo).prJob.iCopies = m_printNoCopies;
(**(THPrint)m_macPrintInfo).prJob.iCopies = m_printNoCopies;
#endif
}
@@ -776,7 +776,7 @@ void wxPrintData::ConvertFromNative()
{
#if TARGET_CARBON
#else
m_printNoCopies = (**m_macPrintInfo).prJob.iCopies;
m_printNoCopies = (**(THPrint)m_macPrintInfo).prJob.iCopies;
#endif
}
#endif
@@ -1088,8 +1088,8 @@ void wxPrintDialogData::ConvertToNative()
{
#if TARGET_CARBON
#else
(**m_printData.m_macPrintInfo).prJob.iFstPage = m_printFromPage;
(**m_printData.m_macPrintInfo).prJob.iLstPage = m_printToPage;
(**(THPrint)m_printData.m_macPrintInfo).prJob.iFstPage = m_printFromPage;
(**(THPrint)m_printData.m_macPrintInfo).prJob.iLstPage = m_printToPage;
m_printData.ConvertToNative();
#endif
}
@@ -1099,8 +1099,8 @@ void wxPrintDialogData::ConvertFromNative()
#if TARGET_CARBON
#else
m_printData.ConvertFromNative();
m_printFromPage = (**m_printData.m_macPrintInfo).prJob.iFstPage;
m_printToPage = (**m_printData.m_macPrintInfo).prJob.iLstPage;
m_printFromPage = (**(THPrint)m_printData.m_macPrintInfo).prJob.iFstPage;
m_printToPage = (**(THPrint)m_printData.m_macPrintInfo).prJob.iLstPage;
#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
#if TARGET_CARBON
#else
(**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.left = int( ((double) m_minMarginTopLeft.x)*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 );
(**m_printData.m_macPrintInfo).rPaper.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y)*mm2pt );
(**(THPrint)m_printData.m_macPrintInfo).rPaper.right = int( ((double) m_paperSize.x - m_minMarginTopLeft.x)*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;
(**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 );
(**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.left = 0;
(**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.top = 0;
(**(THPrint)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.bottom = int( ((double) m_paperSize.y - m_minMarginTopLeft.y - m_minMarginBottomRight.y)*mm2pt );
#endif
}
@@ -1432,14 +1432,14 @@ void wxPageSetupDialogData::ConvertFromNative()
#if TARGET_CARBON
#else
m_paperSize.x = ((double) (**m_printData.m_macPrintInfo).rPaper.right - (**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.x = ((double) (**(THPrint)m_printData.m_macPrintInfo).rPaper.right - (**(THPrint)m_printData.m_macPrintInfo).rPaper.left ) * 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.y = ((double) -(**m_printData.m_macPrintInfo).rPaper.top ) * pt2mm;
m_minMarginTopLeft.x = ((double) -(**(THPrint)m_printData.m_macPrintInfo).rPaper.left ) * 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.y = ((double)(**m_printData.m_macPrintInfo).rPaper.bottom - (**m_printData.m_macPrintInfo).prInfo.rPage.bottom ) * 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)(**(THPrint)m_printData.m_macPrintInfo).rPaper.bottom - (**(THPrint)m_printData.m_macPrintInfo).prInfo.rPage.bottom ) * pt2mm;
#endif
// adjust minimal values
//TODO add custom fields in dialog for margins

View File

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

View File

@@ -46,6 +46,10 @@
#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,
// __WXMSW__ is defined for MS Windows compilation
#if defined(__WXMSW__) && !defined(_WINDOWS_)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1048,7 +1048,7 @@ pascal SInt32 AGABevelButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ;
@@ -1188,7 +1188,7 @@ pascal SInt32 AGAButtonDefProc (SInt16 procID, ControlHandle theControl, Control
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ;
@@ -1425,7 +1425,7 @@ pascal SInt32 AGACheckBoxDefProc (SInt16 procID, ControlHandle theControl, Contr
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1621,7 +1621,7 @@ pascal SInt32 AGARadioButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ;
{
AGAPortHelper help() ;
wxMacPortStateHelper help() ;
Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1813,7 +1813,7 @@ pascal SInt32 AGAStaticGroupBoxTextDefProc (SInt16 procID, ControlHandle theCont
{
bool disabled = false ;
bool hasColor = true ;
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
FontInfo fi ;
::GetFontInfo( &fi ) ;
@@ -1899,7 +1899,7 @@ pascal SInt32 AGAStaticTextDefProc (SInt16 procID, ControlHandle theControl, Con
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
int x = (**theControl).contrlRect.left ;
int y = (**theControl).contrlRect.top ;
@@ -2094,7 +2094,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
{
case initCntl :
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
SetPort( (**theControl).contrlOwner ) ;
::TextFont( kFontIDGeneva ) ;
::TextSize( 10 ) ;
@@ -2116,7 +2116,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ;
case drawCntl :
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
SetPort( (**theControl).contrlOwner ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
@@ -2223,7 +2223,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ;
case kControlMsgKeyDown :
{
AGAPortHelper help( (**theControl).contrlOwner ) ;
wxMacPortStateHelper help( (**theControl).contrlOwner ) ;
AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
@@ -2332,7 +2332,7 @@ pascal SInt32 AGAListControlDefProc (SInt16 procID, ControlHandle theControl, Co
break ;
case drawCntl :
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
EraseRect( &(**theControl).contrlRect ) ;
@@ -2560,52 +2560,4 @@ void AGAApplyThemeBackground(ThemeBackgroundKind inKind,
// status in a theme savvy manner, pen mode, patterns and fonts
// 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 kwxMacAppleMenuId = 1 ;
RgnHandle wxApp::s_macCursorRgn = NULL;
WXHRGN wxApp::s_macCursorRgn = NULL;
wxWindow* wxApp::s_captureWindow = NULL ;
int wxApp::s_lastMouseDown = 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) ;
}
OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEODoc(const WXEVENTREF event , WXEVENTREF reply)
{
SysBeep(40) ;
ProcessSerialNumber PSN ;
@@ -135,17 +135,17 @@ OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
return noErr ;
}
OSErr wxApp::MacHandleAEPDoc(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEPDoc(const WXEVENTREF event , WXEVENTREF reply)
{
return noErr ;
}
OSErr wxApp::MacHandleAEOApp(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEOApp(const WXEVENTREF event , WXEVENTREF reply)
{
return noErr ;
}
OSErr wxApp::MacHandleAEQuit(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEQuit(const WXEVENTREF event , WXEVENTREF reply)
{
wxWindow* win = GetTopWindow() ;
if ( win )
@@ -603,7 +603,7 @@ void wxApp::CleanUp()
UMACleanupToolbox() ;
if (s_macCursorRgn)
::DisposeRgn(s_macCursorRgn);
::DisposeRgn((RgnHandle)s_macCursorRgn);
#if 0
TerminateAE() ;
@@ -958,11 +958,11 @@ bool wxApp::Yield(bool onlyIfNeeded)
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 );
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() ;
@@ -1021,7 +1021,7 @@ void wxApp::MacDoOneEvent()
long sleepTime = 1; // GetCaretTime() / 4 ;
if (WaitNextEvent(everyEvent, &event, sleepTime, s_macCursorRgn))
if (WaitNextEvent(everyEvent, &event, sleepTime, (RgnHandle) s_macCursorRgn))
{
MacHandleOneEvent( &event );
}
@@ -1035,7 +1035,7 @@ void wxApp::MacDoOneEvent()
wxTheApp->ProcessIdle() ;
}
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
@@ -1043,8 +1043,9 @@ void wxApp::MacDoOneEvent()
wxMacProcessNotifierAndPendingEvents() ;
}
void wxApp::MacHandleOneEvent( EventRecord *ev )
void wxApp::MacHandleOneEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
m_macCurrentEvent = ev ;
wxApp::sm_lastMessageTime = ev->when ;
@@ -1098,15 +1099,17 @@ void wxApp::MacHandleOneEvent( EventRecord *ev )
wxMacProcessNotifierAndPendingEvents() ;
}
void wxApp::MacHandleHighLevelEvent( EventRecord *ev )
void wxApp::MacHandleHighLevelEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
::AEProcessAppleEvent( ev ) ;
}
bool s_macIsInModalLoop = false ;
void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ;
WindowRef window;
@@ -1156,11 +1159,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
GrafPtr port ;
GetPort( &port ) ;
Point pt = { 0, 0 } ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
LocalToGlobal( &pt ) ;
SetPort( port ) ;
win->SetSize( pt.h , pt.v , -1 ,
@@ -1226,11 +1225,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
{
GrafPtr port ;
GetPort( &port ) ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
SetPort( port ) ;
}
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;
short windowPart = ::FindWindow(ev->where, &window);
@@ -1394,8 +1390,9 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
return retval;
}
void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
void wxApp::MacHandleKeyDownEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ;
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() ;
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 ;
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 ;
wxTopLevelWindowMac * win = wxFindWinFromMacWindow( window ) ;
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 !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 )
{
case suspendResumeMessage :

View File

@@ -313,7 +313,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{
if ( data->m_hPict )
{
KillPicture( data->m_hPict ) ;
KillPicture( MAC_WXHMETAFILE( data->m_hPict ) ) ;
data->m_hPict = NULL ;
}
}
@@ -322,7 +322,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{
if ( data->m_hBitmap )
{
wxMacDestroyGWorld( data->m_hBitmap ) ;
wxMacDestroyGWorld( MAC_WXHBITMAP(data->m_hBitmap) ) ;
data->m_hBitmap = NULL ;
}
}
@@ -330,7 +330,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
case kMacBitmapTypeIcon :
if ( data->m_hIcon )
{
DisposeCIcon( data->m_hIcon ) ;
DisposeCIcon( MAC_WXHICON(data->m_hIcon) ) ;
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 )
{
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( the_width , the_height , no_bits ) ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ;
MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) = wxMacCreateGWorld( the_width , the_height , no_bits ) ;
M_BITMAPDATA->m_ok = (MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) != NULL ) ;
CGrafPtr origPort ;
GDHandle origDevice ;
GetGWorld( &origPort , &origDevice ) ;
SetGWorld( M_BITMAPDATA->m_hBitmap , NULL ) ;
LockPixels( GetGWorldPixMap( M_BITMAPDATA->m_hBitmap ) ) ;
SetGWorld( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , NULL ) ;
LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) ) ) ;
// 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 ) ;
}
@@ -474,7 +474,7 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
wxBitmap ret( rect.width, rect.height, GetDepth() );
wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") );
WXHBITMAP origPort;
GWorldPtr origPort;
GDHandle origDevice;
GetGWorld( &origPort, &origDevice );
@@ -496,10 +496,10 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy mask
if(GetMask())
{
WXHBITMAP submask, mask;
GWorldPtr submask, mask;
RGBColor color;
mask = GetMask()->GetMaskBitmap();
mask = (GWorldPtr) GetMask()->GetMaskBitmap();
submask = wxMacCreateGWorld(rect.width, rect.height, 1);
LockPixels(GetGWorldPixMap(mask));
LockPixels(GetGWorldPixMap(submask));
@@ -523,11 +523,11 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy bitmap
if(GetHBITMAP())
{
WXHBITMAP subbitmap, bitmap;
GWorldPtr subbitmap, bitmap;
RGBColor color;
bitmap = GetHBITMAP();
subbitmap = ref->m_hBitmap ;
bitmap = (GWorldPtr) GetHBITMAP();
subbitmap = (GWorldPtr) ref->m_hBitmap ;
LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap));
@@ -562,7 +562,7 @@ bool wxBitmap::Create(int w, int h, int d)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
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;
}
@@ -579,7 +579,7 @@ void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
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)
@@ -641,11 +641,11 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
CGrafPtr origPort ;
GDHandle origDevice ;
PixMapHandle pixMap = GetGWorldPixMap(GetHBITMAP()) ;
PixMapHandle pixMap = GetGWorldPixMap((GWorldPtr)GetHBITMAP()) ;
LockPixels( pixMap );
GetGWorld( &origPort , &origDevice ) ;
SetGWorld( GetHBITMAP() , NULL ) ;
SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
// Render image
RGBColor colorRGB ;
@@ -675,8 +675,8 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
wxBitmap maskBitmap ;
maskBitmap.Create( width, height, 1);
LockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) );
SetGWorld(maskBitmap.GetHBITMAP(), NULL);
LockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
SetGWorld( (GWorldPtr) maskBitmap.GetHBITMAP(), NULL);
for (int y = 0; y < height; y++)
{
@@ -692,12 +692,12 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
data += 3 ;
}
} // for height
SetGWorld(GetHBITMAP(), NULL);
SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
SetMask(new wxMask( maskBitmap ));
UnlockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
}
UnlockPixels( GetGWorldPixMap(GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP()) );
SetGWorld( origPort, origDevice );
}
@@ -716,7 +716,7 @@ wxImage wxBitmap::ConvertToImage() const
wxCHECK_MSG( data, wxNullImage, wxT("Could not allocate data for image") );
WXHBITMAP origPort;
GWorldPtr origPort;
GDHandle origDevice;
int index;
RGBColor color;
@@ -726,8 +726,8 @@ wxImage wxBitmap::ConvertToImage() const
wxMask *mask = GetMask();
GetGWorld( &origPort, &origDevice );
LockPixels(GetGWorldPixMap(GetHBITMAP()));
SetGWorld( GetHBITMAP(), NULL);
LockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
// Copy data into image
index = 0;
@@ -761,7 +761,7 @@ wxImage wxBitmap::ConvertToImage() const
}
// Free resources
UnlockPixels(GetGWorldPixMap(GetHBITMAP()));
UnlockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld(origPort, origDevice);
return image;
@@ -899,10 +899,10 @@ WXHBITMAP wxBitmap::GetHBITMAP() const
{
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") );
@@ -925,16 +925,16 @@ PicHandle wxBitmap::GetPict() const
wxMask *mask;
Rect portRect ;
GetPortBounds( GetHBITMAP() , &portRect ) ;
GetPortBounds( (GWorldPtr) GetHBITMAP() , &portRect ) ;
int width = portRect.right - portRect.left ;
int height = portRect.bottom - portRect.top ;
LockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ;
LockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
GetGWorld( &origPort , &origDev ) ;
mask = GetMask();
SetGWorld( GetHBITMAP() , NULL ) ;
SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
picture = OpenPicture(&portRect); // open a picture, this disables drawing
if(!picture) {
@@ -979,16 +979,16 @@ PicHandle wxBitmap::GetPict() const
RGBForeColor( &black ) ;
RGBBackColor( &white ) ;
CopyBits(GetPortBitMapForCopyBits(GetHBITMAP()),
CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// src PixMap - we copy image over itself -
GetPortBitMapForCopyBits(GetHBITMAP()),
GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// dst PixMap - no drawing occurs
&portRect, // srcRect - it will be recorded and compressed -
&portRect, // dstRect - into the picture that is open -
srcCopy,NULL); // copyMode and no clip region
}
ClosePicture(); // We are done recording the picture
UnlockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ;
UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
SetGWorld( origPort , origDev ) ;
return picture; // return our groovy pict handle
@@ -1030,7 +1030,7 @@ wxMask::~wxMask()
{
if ( m_maskBitmap )
{
wxMacDestroyGWorld( m_maskBitmap ) ;
wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ;
}
}
@@ -1040,7 +1040,7 @@ bool wxMask::Create(const wxBitmap& bitmap)
{
if ( m_maskBitmap )
{
wxMacDestroyGWorld( m_maskBitmap ) ;
wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ;
}
wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false,
@@ -1055,13 +1055,13 @@ bool wxMask::Create(const wxBitmap& bitmap)
m_maskBitmap = wxMacCreateGWorld(bitmap.GetWidth(), bitmap.GetHeight(), 1);
Rect rect = { 0,0, bitmap.GetHeight(), bitmap.GetWidth() };
LockPixels( GetGWorldPixMap(m_maskBitmap) );
LockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) );
CopyBits(GetPortBitMapForCopyBits(bitmap.GetHBITMAP()),
GetPortBitMapForCopyBits(m_maskBitmap),
LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) bitmap.GetHBITMAP()),
GetPortBitMapForCopyBits( (GWorldPtr) m_maskBitmap),
&rect, &rect, srcCopy, 0);
UnlockPixels( GetGWorldPixMap(m_maskBitmap) );
UnlockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
return FALSE;
}
@@ -1081,7 +1081,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
{
if ( m_maskBitmap )
{
wxMacDestroyGWorld( m_maskBitmap ) ;
wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ;
}
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"));
m_maskBitmap = wxMacCreateGWorld( bitmap.GetWidth() , bitmap.GetHeight() , 1 );
LockPixels( GetGWorldPixMap( m_maskBitmap ) );
LockPixels( GetGWorldPixMap( bitmap.GetHBITMAP() ) );
RGBColor maskColor = colour.GetPixel();
LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap ) );
LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) );
RGBColor maskColor = MAC_WXCOLORREF(colour.GetPixel());
// this is not very efficient, but I can't think
// 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++)
{
SetGWorld( bitmap.GetHBITMAP(), NULL ) ;
SetGWorld( (GWorldPtr) bitmap.GetHBITMAP(), NULL ) ;
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)
{
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( bitmap.GetHBITMAP() ) ) ;
UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) ) ;
SetGWorld( origPort , origDevice ) ;
return TRUE;
@@ -1131,7 +1131,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
bool wxMask::PointMasked(int x, int y)
{
WXHBITMAP origPort;
GWorldPtr origPort;
GDHandle origDevice;
RGBColor color;
bool masked = true;
@@ -1139,11 +1139,11 @@ bool wxMask::PointMasked(int x, int y)
GetGWorld( &origPort, &origDevice);
//Set port to mask and see if it masked (1) or not ( 0 )
SetGWorld(m_maskBitmap, NULL);
LockPixels(GetGWorldPixMap(m_maskBitmap));
SetGWorld( (GWorldPtr) m_maskBitmap, NULL);
LockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
GetCPixel(x,y, &color);
masked = !(color.red == 0 && color.green == 0 && color.blue == 0);
UnlockPixels(GetGWorldPixMap(m_maskBitmap));
UnlockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
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 ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 ,
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 ,
kControlBehaviorOffsetContents +
( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0,
(( 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 ;
@@ -70,31 +70,31 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
{
if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ;
info.u.picture = MAC_WXHMETAFILE( bmap->m_hPict ) ;
}
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{
if ( m_buttonBitmap.GetMask() )
{
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 ) ;
}
else
{
info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL ,
info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP( bmap->m_hBitmap ) , NULL ,
8 , 16 ) ;
}
}
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{
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() ;
@@ -111,31 +111,31 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap)
wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ;
if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ;
info.u.picture = MAC_WXHMETAFILE(bmap->m_hPict) ;
}
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{
if ( m_buttonBitmap.GetMask() )
{
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 ) ;
}
else
{
info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL ,
info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL ,
8 , 16 ) ;
}
}
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{
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/brush.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject)
#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()
{
m_style = wxSOLID;
@@ -149,13 +173,13 @@ void wxBrush::SetMacTheme(ThemeBrush macThemeBrush)
RealizeResource();
}
void wxBrush::SetMacThemeBackground(ThemeBackgroundKind macThemeBackground, const Rect &extent)
void wxBrush::SetMacThemeBackground(unsigned long macThemeBackground, const WXRECTPTR extent)
{
Unshare();
M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground;
M_BRUSHDATA->m_macThemeBackground = macThemeBackground;
M_BRUSHDATA->m_macThemeBackgroundExtent = extent ;
M_BRUSHDATA->m_macThemeBackgroundExtent = *(Rect*)extent ;
RealizeResource();
}
@@ -164,12 +188,12 @@ bool wxBrush::RealizeResource()
return TRUE;
}
ThemeBackgroundKind wxBrush::GetMacThemeBackground(Rect *extent) const
unsigned long wxBrush::GetMacThemeBackground( WXRECTPTR extent) const
{
if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground )
{
if ( extent )
*extent = M_BRUSHDATA->m_macThemeBackgroundExtent ;
*(Rect*)extent = M_BRUSHDATA->m_macThemeBackgroundExtent ;
return M_BRUSHDATA->m_macThemeBackground ;
}
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 ) ;
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 ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
MacPostControlCreate() ;
@@ -61,13 +61,13 @@ void wxButton::SetDefault()
if ( btnOldDefault && btnOldDefault->m_macControl )
{
inData = 0;
::SetControlData( btnOldDefault->m_macControl , kControlButtonPart ,
::SetControlData( (ControlHandle) btnOldDefault->m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
}
if ( m_macControl )
if ( (ControlHandle) m_macControl )
{
inData = 1;
::SetControlData( m_macControl , kControlButtonPart ,
::SetControlData( (ControlHandle) m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
}
}
@@ -95,17 +95,17 @@ wxSize wxButton::GetDefaultSize()
void wxButton::Command (wxCommandEvent & event)
{
if ( m_macControl )
if ( (ControlHandle) m_macControl )
{
HiliteControl( m_macControl , kControlButtonPart ) ;
HiliteControl( (ControlHandle) m_macControl , kControlButtonPart ) ;
unsigned long finalTicks ;
Delay( 8 , &finalTicks ) ;
HiliteControl( m_macControl , 0 ) ;
HiliteControl( (ControlHandle) m_macControl , 0 ) ;
}
ProcessCommand (event);
}
void wxButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
if ( controlpart != kControlNoPart )
{

View File

@@ -1048,7 +1048,7 @@ pascal SInt32 AGABevelButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ;
@@ -1188,7 +1188,7 @@ pascal SInt32 AGAButtonDefProc (SInt16 procID, ControlHandle theControl, Control
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
Boolean mRadioBehavior = false ;
@@ -1425,7 +1425,7 @@ pascal SInt32 AGACheckBoxDefProc (SInt16 procID, ControlHandle theControl, Contr
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1621,7 +1621,7 @@ pascal SInt32 AGARadioButtonDefProc (SInt16 procID, ControlHandle theControl, Co
return 0 ;
{
AGAPortHelper help() ;
wxMacPortStateHelper help() ;
Rect frame = (**theControl).contrlRect ;
Boolean hasColor = true;
Boolean disabled = (*theControl)->contrlHilite == 255 ;
@@ -1813,7 +1813,7 @@ pascal SInt32 AGAStaticGroupBoxTextDefProc (SInt16 procID, ControlHandle theCont
{
bool disabled = false ;
bool hasColor = true ;
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
FontInfo fi ;
::GetFontInfo( &fi ) ;
@@ -1899,7 +1899,7 @@ pascal SInt32 AGAStaticTextDefProc (SInt16 procID, ControlHandle theControl, Con
return 0 ;
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
int x = (**theControl).contrlRect.left ;
int y = (**theControl).contrlRect.top ;
@@ -2094,7 +2094,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
{
case initCntl :
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
SetPort( (**theControl).contrlOwner ) ;
::TextFont( kFontIDGeneva ) ;
::TextSize( 10 ) ;
@@ -2116,7 +2116,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ;
case drawCntl :
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
SetPort( (**theControl).contrlOwner ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
@@ -2223,7 +2223,7 @@ pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, Contr
break ;
case kControlMsgKeyDown :
{
AGAPortHelper help( (**theControl).contrlOwner ) ;
wxMacPortStateHelper help( (**theControl).contrlOwner ) ;
AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
@@ -2332,7 +2332,7 @@ pascal SInt32 AGAListControlDefProc (SInt16 procID, ControlHandle theControl, Co
break ;
case drawCntl :
{
AGAPortHelper help((**theControl).contrlOwner) ;
wxMacPortStateHelper help((**theControl).contrlOwner) ;
AGASetFontStyle( &info->fontStyle ) ;
RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
EraseRect( &(**theControl).contrlRect ) ;
@@ -2560,52 +2560,4 @@ void AGAApplyThemeBackground(ThemeBackgroundKind inKind,
// status in a theme savvy manner, pen mode, patterns and fonts
// 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 kwxMacAppleMenuId = 1 ;
RgnHandle wxApp::s_macCursorRgn = NULL;
WXHRGN wxApp::s_macCursorRgn = NULL;
wxWindow* wxApp::s_captureWindow = NULL ;
int wxApp::s_lastMouseDown = 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) ;
}
OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEODoc(const WXEVENTREF event , WXEVENTREF reply)
{
SysBeep(40) ;
ProcessSerialNumber PSN ;
@@ -135,17 +135,17 @@ OSErr wxApp::MacHandleAEODoc(const AppleEvent *event , AppleEvent *reply)
return noErr ;
}
OSErr wxApp::MacHandleAEPDoc(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEPDoc(const WXEVENTREF event , WXEVENTREF reply)
{
return noErr ;
}
OSErr wxApp::MacHandleAEOApp(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEOApp(const WXEVENTREF event , WXEVENTREF reply)
{
return noErr ;
}
OSErr wxApp::MacHandleAEQuit(const AppleEvent *event , AppleEvent *reply)
short wxApp::MacHandleAEQuit(const WXEVENTREF event , WXEVENTREF reply)
{
wxWindow* win = GetTopWindow() ;
if ( win )
@@ -603,7 +603,7 @@ void wxApp::CleanUp()
UMACleanupToolbox() ;
if (s_macCursorRgn)
::DisposeRgn(s_macCursorRgn);
::DisposeRgn((RgnHandle)s_macCursorRgn);
#if 0
TerminateAE() ;
@@ -958,11 +958,11 @@ bool wxApp::Yield(bool onlyIfNeeded)
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 );
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() ;
@@ -1021,7 +1021,7 @@ void wxApp::MacDoOneEvent()
long sleepTime = 1; // GetCaretTime() / 4 ;
if (WaitNextEvent(everyEvent, &event, sleepTime, s_macCursorRgn))
if (WaitNextEvent(everyEvent, &event, sleepTime, (RgnHandle) s_macCursorRgn))
{
MacHandleOneEvent( &event );
}
@@ -1035,7 +1035,7 @@ void wxApp::MacDoOneEvent()
wxTheApp->ProcessIdle() ;
}
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
@@ -1043,8 +1043,9 @@ void wxApp::MacDoOneEvent()
wxMacProcessNotifierAndPendingEvents() ;
}
void wxApp::MacHandleOneEvent( EventRecord *ev )
void wxApp::MacHandleOneEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
m_macCurrentEvent = ev ;
wxApp::sm_lastMessageTime = ev->when ;
@@ -1098,15 +1099,17 @@ void wxApp::MacHandleOneEvent( EventRecord *ev )
wxMacProcessNotifierAndPendingEvents() ;
}
void wxApp::MacHandleHighLevelEvent( EventRecord *ev )
void wxApp::MacHandleHighLevelEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
::AEProcessAppleEvent( ev ) ;
}
bool s_macIsInModalLoop = false ;
void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
void wxApp::MacHandleMouseDownEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ;
WindowRef window;
@@ -1156,11 +1159,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
GrafPtr port ;
GetPort( &port ) ;
Point pt = { 0, 0 } ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
LocalToGlobal( &pt ) ;
SetPort( port ) ;
win->SetSize( pt.h , pt.v , -1 ,
@@ -1226,11 +1225,7 @@ void wxApp::MacHandleMouseDownEvent( EventRecord *ev )
{
GrafPtr port ;
GetPort( &port ) ;
#if TARGET_CARBON
SetPort( GetWindowPort(window) ) ;
#else
SetPort( (window) ) ;
#endif
SetPort( port ) ;
}
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;
short windowPart = ::FindWindow(ev->where, &window);
@@ -1394,8 +1390,9 @@ long wxMacTranslateKey(unsigned char key, unsigned char code)
return retval;
}
void wxApp::MacHandleKeyDownEvent( EventRecord *ev )
void wxApp::MacHandleKeyDownEvent( WXEVENTREF evr )
{
EventRecord* ev = (EventRecord*) evr ;
wxToolTip::RemoveToolTips() ;
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() ;
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 ;
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 ;
wxTopLevelWindowMac * win = wxFindWinFromMacWindow( window ) ;
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 !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 )
{
case suspendResumeMessage :

View File

@@ -313,7 +313,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{
if ( data->m_hPict )
{
KillPicture( data->m_hPict ) ;
KillPicture( MAC_WXHMETAFILE( data->m_hPict ) ) ;
data->m_hPict = NULL ;
}
}
@@ -322,7 +322,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
{
if ( data->m_hBitmap )
{
wxMacDestroyGWorld( data->m_hBitmap ) ;
wxMacDestroyGWorld( MAC_WXHBITMAP(data->m_hBitmap) ) ;
data->m_hBitmap = NULL ;
}
}
@@ -330,7 +330,7 @@ static void DisposeBitmapRefData(wxBitmapRefData *data)
case kMacBitmapTypeIcon :
if ( data->m_hIcon )
{
DisposeCIcon( data->m_hIcon ) ;
DisposeCIcon( MAC_WXHICON(data->m_hIcon) ) ;
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 )
{
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
M_BITMAPDATA->m_hBitmap = wxMacCreateGWorld( the_width , the_height , no_bits ) ;
M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_hBitmap != NULL ) ;
MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) = wxMacCreateGWorld( the_width , the_height , no_bits ) ;
M_BITMAPDATA->m_ok = (MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) != NULL ) ;
CGrafPtr origPort ;
GDHandle origDevice ;
GetGWorld( &origPort , &origDevice ) ;
SetGWorld( M_BITMAPDATA->m_hBitmap , NULL ) ;
LockPixels( GetGWorldPixMap( M_BITMAPDATA->m_hBitmap ) ) ;
SetGWorld( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) , NULL ) ;
LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(M_BITMAPDATA->m_hBitmap) ) ) ;
// 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 ) ;
}
@@ -474,7 +474,7 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
wxBitmap ret( rect.width, rect.height, GetDepth() );
wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") );
WXHBITMAP origPort;
GWorldPtr origPort;
GDHandle origDevice;
GetGWorld( &origPort, &origDevice );
@@ -496,10 +496,10 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy mask
if(GetMask())
{
WXHBITMAP submask, mask;
GWorldPtr submask, mask;
RGBColor color;
mask = GetMask()->GetMaskBitmap();
mask = (GWorldPtr) GetMask()->GetMaskBitmap();
submask = wxMacCreateGWorld(rect.width, rect.height, 1);
LockPixels(GetGWorldPixMap(mask));
LockPixels(GetGWorldPixMap(submask));
@@ -523,11 +523,11 @@ wxBitmap wxBitmap::GetSubBitmap(const wxRect &rect) const
// Copy bitmap
if(GetHBITMAP())
{
WXHBITMAP subbitmap, bitmap;
GWorldPtr subbitmap, bitmap;
RGBColor color;
bitmap = GetHBITMAP();
subbitmap = ref->m_hBitmap ;
bitmap = (GWorldPtr) GetHBITMAP();
subbitmap = (GWorldPtr) ref->m_hBitmap ;
LockPixels(GetGWorldPixMap(bitmap));
LockPixels(GetGWorldPixMap(subbitmap));
@@ -562,7 +562,7 @@ bool wxBitmap::Create(int w, int h, int d)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
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;
}
@@ -579,7 +579,7 @@ void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
M_BITMAPDATA->m_bitmapType = kMacBitmapTypeGrafWorld ;
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)
@@ -641,11 +641,11 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
CGrafPtr origPort ;
GDHandle origDevice ;
PixMapHandle pixMap = GetGWorldPixMap(GetHBITMAP()) ;
PixMapHandle pixMap = GetGWorldPixMap((GWorldPtr)GetHBITMAP()) ;
LockPixels( pixMap );
GetGWorld( &origPort , &origDevice ) ;
SetGWorld( GetHBITMAP() , NULL ) ;
SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
// Render image
RGBColor colorRGB ;
@@ -675,8 +675,8 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
wxBitmap maskBitmap ;
maskBitmap.Create( width, height, 1);
LockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) );
SetGWorld(maskBitmap.GetHBITMAP(), NULL);
LockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
SetGWorld( (GWorldPtr) maskBitmap.GetHBITMAP(), NULL);
for (int y = 0; y < height; y++)
{
@@ -692,12 +692,12 @@ wxBitmap::wxBitmap(const wxImage& image, int depth)
data += 3 ;
}
} // for height
SetGWorld(GetHBITMAP(), NULL);
SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
SetMask(new wxMask( maskBitmap ));
UnlockPixels( GetGWorldPixMap(maskBitmap.GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) maskBitmap.GetHBITMAP()) );
}
UnlockPixels( GetGWorldPixMap(GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP()) );
SetGWorld( origPort, origDevice );
}
@@ -716,7 +716,7 @@ wxImage wxBitmap::ConvertToImage() const
wxCHECK_MSG( data, wxNullImage, wxT("Could not allocate data for image") );
WXHBITMAP origPort;
GWorldPtr origPort;
GDHandle origDevice;
int index;
RGBColor color;
@@ -726,8 +726,8 @@ wxImage wxBitmap::ConvertToImage() const
wxMask *mask = GetMask();
GetGWorld( &origPort, &origDevice );
LockPixels(GetGWorldPixMap(GetHBITMAP()));
SetGWorld( GetHBITMAP(), NULL);
LockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld( (GWorldPtr) GetHBITMAP(), NULL);
// Copy data into image
index = 0;
@@ -761,7 +761,7 @@ wxImage wxBitmap::ConvertToImage() const
}
// Free resources
UnlockPixels(GetGWorldPixMap(GetHBITMAP()));
UnlockPixels(GetGWorldPixMap( (GWorldPtr) GetHBITMAP()));
SetGWorld(origPort, origDevice);
return image;
@@ -899,10 +899,10 @@ WXHBITMAP wxBitmap::GetHBITMAP() const
{
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") );
@@ -925,16 +925,16 @@ PicHandle wxBitmap::GetPict() const
wxMask *mask;
Rect portRect ;
GetPortBounds( GetHBITMAP() , &portRect ) ;
GetPortBounds( (GWorldPtr) GetHBITMAP() , &portRect ) ;
int width = portRect.right - portRect.left ;
int height = portRect.bottom - portRect.top ;
LockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ;
LockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
GetGWorld( &origPort , &origDev ) ;
mask = GetMask();
SetGWorld( GetHBITMAP() , NULL ) ;
SetGWorld( (GWorldPtr) GetHBITMAP() , NULL ) ;
picture = OpenPicture(&portRect); // open a picture, this disables drawing
if(!picture) {
@@ -979,16 +979,16 @@ PicHandle wxBitmap::GetPict() const
RGBForeColor( &black ) ;
RGBBackColor( &white ) ;
CopyBits(GetPortBitMapForCopyBits(GetHBITMAP()),
CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// src PixMap - we copy image over itself -
GetPortBitMapForCopyBits(GetHBITMAP()),
GetPortBitMapForCopyBits( (GWorldPtr) GetHBITMAP()),
// dst PixMap - no drawing occurs
&portRect, // srcRect - it will be recorded and compressed -
&portRect, // dstRect - into the picture that is open -
srcCopy,NULL); // copyMode and no clip region
}
ClosePicture(); // We are done recording the picture
UnlockPixels( GetGWorldPixMap( GetHBITMAP() ) ) ;
UnlockPixels( GetGWorldPixMap( (GWorldPtr) GetHBITMAP() ) ) ;
SetGWorld( origPort , origDev ) ;
return picture; // return our groovy pict handle
@@ -1030,7 +1030,7 @@ wxMask::~wxMask()
{
if ( m_maskBitmap )
{
wxMacDestroyGWorld( m_maskBitmap ) ;
wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ;
}
}
@@ -1040,7 +1040,7 @@ bool wxMask::Create(const wxBitmap& bitmap)
{
if ( m_maskBitmap )
{
wxMacDestroyGWorld( m_maskBitmap ) ;
wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ;
}
wxCHECK_MSG( bitmap.GetBitmapType() == kMacBitmapTypeGrafWorld, false,
@@ -1055,13 +1055,13 @@ bool wxMask::Create(const wxBitmap& bitmap)
m_maskBitmap = wxMacCreateGWorld(bitmap.GetWidth(), bitmap.GetHeight(), 1);
Rect rect = { 0,0, bitmap.GetHeight(), bitmap.GetWidth() };
LockPixels( GetGWorldPixMap(m_maskBitmap) );
LockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) );
CopyBits(GetPortBitMapForCopyBits(bitmap.GetHBITMAP()),
GetPortBitMapForCopyBits(m_maskBitmap),
LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
CopyBits(GetPortBitMapForCopyBits( (GWorldPtr) bitmap.GetHBITMAP()),
GetPortBitMapForCopyBits( (GWorldPtr) m_maskBitmap),
&rect, &rect, srcCopy, 0);
UnlockPixels( GetGWorldPixMap(m_maskBitmap) );
UnlockPixels( GetGWorldPixMap(bitmap.GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap) );
UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP()) );
return FALSE;
}
@@ -1081,7 +1081,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
{
if ( m_maskBitmap )
{
wxMacDestroyGWorld( m_maskBitmap ) ;
wxMacDestroyGWorld( (GWorldPtr) m_maskBitmap ) ;
m_maskBitmap = NULL ;
}
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"));
m_maskBitmap = wxMacCreateGWorld( bitmap.GetWidth() , bitmap.GetHeight() , 1 );
LockPixels( GetGWorldPixMap( m_maskBitmap ) );
LockPixels( GetGWorldPixMap( bitmap.GetHBITMAP() ) );
RGBColor maskColor = colour.GetPixel();
LockPixels( GetGWorldPixMap( (GWorldPtr) m_maskBitmap ) );
LockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) );
RGBColor maskColor = MAC_WXCOLORREF(colour.GetPixel());
// this is not very efficient, but I can't think
// 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++)
{
SetGWorld( bitmap.GetHBITMAP(), NULL ) ;
SetGWorld( (GWorldPtr) bitmap.GetHBITMAP(), NULL ) ;
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)
{
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( bitmap.GetHBITMAP() ) ) ;
UnlockPixels( GetGWorldPixMap( (GWorldPtr) bitmap.GetHBITMAP() ) ) ;
SetGWorld( origPort , origDevice ) ;
return TRUE;
@@ -1131,7 +1131,7 @@ bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
bool wxMask::PointMasked(int x, int y)
{
WXHBITMAP origPort;
GWorldPtr origPort;
GDHandle origDevice;
RGBColor color;
bool masked = true;
@@ -1139,11 +1139,11 @@ bool wxMask::PointMasked(int x, int y)
GetGWorld( &origPort, &origDevice);
//Set port to mask and see if it masked (1) or not ( 0 )
SetGWorld(m_maskBitmap, NULL);
LockPixels(GetGWorldPixMap(m_maskBitmap));
SetGWorld( (GWorldPtr) m_maskBitmap, NULL);
LockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
GetCPixel(x,y, &color);
masked = !(color.red == 0 && color.green == 0 && color.blue == 0);
UnlockPixels(GetGWorldPixMap(m_maskBitmap));
UnlockPixels(GetGWorldPixMap( (GWorldPtr) m_maskBitmap));
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 ) ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false , 0 ,
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 ,
kControlBehaviorOffsetContents +
( bmap->m_bitmapType == kMacBitmapTypeIcon ? kControlContentCIconHandle : kControlContentPictHandle ) , 0,
(( 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 ;
@@ -70,31 +70,31 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit
{
if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ;
info.u.picture = MAC_WXHMETAFILE( bmap->m_hPict ) ;
}
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{
if ( m_buttonBitmap.GetMask() )
{
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 ) ;
}
else
{
info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL ,
info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP( bmap->m_hBitmap ) , NULL ,
8 , 16 ) ;
}
}
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{
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() ;
@@ -111,31 +111,31 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap)
wxBitmapRefData * bmap = (wxBitmapRefData*) ( m_buttonBitmap.GetRefData()) ;
if ( bmap->m_bitmapType == kMacBitmapTypePict ) {
info.contentType = kControlContentPictHandle ;
info.u.picture = bmap->m_hPict ;
info.u.picture = MAC_WXHMETAFILE(bmap->m_hPict) ;
}
else if ( bmap->m_bitmapType == kMacBitmapTypeGrafWorld )
{
if ( m_buttonBitmap.GetMask() )
{
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 ) ;
}
else
{
info.contentType = kControlContentCIconHandle ;
info.u.cIconHandle = wxMacCreateCIcon( bmap->m_hBitmap , NULL ,
info.u.cIconHandle = wxMacCreateCIcon( MAC_WXHBITMAP(bmap->m_hBitmap) , NULL ,
8 , 16 ) ;
}
}
else if ( bmap->m_bitmapType == kMacBitmapTypeIcon )
{
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/brush.h"
#include "wx/mac/private.h"
#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject)
#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()
{
m_style = wxSOLID;
@@ -149,13 +173,13 @@ void wxBrush::SetMacTheme(ThemeBrush macThemeBrush)
RealizeResource();
}
void wxBrush::SetMacThemeBackground(ThemeBackgroundKind macThemeBackground, const Rect &extent)
void wxBrush::SetMacThemeBackground(unsigned long macThemeBackground, const WXRECTPTR extent)
{
Unshare();
M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground;
M_BRUSHDATA->m_macThemeBackground = macThemeBackground;
M_BRUSHDATA->m_macThemeBackgroundExtent = extent ;
M_BRUSHDATA->m_macThemeBackgroundExtent = *(Rect*)extent ;
RealizeResource();
}
@@ -164,12 +188,12 @@ bool wxBrush::RealizeResource()
return TRUE;
}
ThemeBackgroundKind wxBrush::GetMacThemeBackground(Rect *extent) const
unsigned long wxBrush::GetMacThemeBackground( WXRECTPTR extent) const
{
if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground )
{
if ( extent )
*extent = M_BRUSHDATA->m_macThemeBackgroundExtent ;
*(Rect*)extent = M_BRUSHDATA->m_macThemeBackgroundExtent ;
return M_BRUSHDATA->m_macThemeBackground ;
}
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 ) ;
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 ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
MacPostControlCreate() ;
@@ -61,13 +61,13 @@ void wxButton::SetDefault()
if ( btnOldDefault && btnOldDefault->m_macControl )
{
inData = 0;
::SetControlData( btnOldDefault->m_macControl , kControlButtonPart ,
::SetControlData( (ControlHandle) btnOldDefault->m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
}
if ( m_macControl )
if ( (ControlHandle) m_macControl )
{
inData = 1;
::SetControlData( m_macControl , kControlButtonPart ,
::SetControlData( (ControlHandle) m_macControl , kControlButtonPart ,
kControlPushButtonDefaultTag , sizeof( Boolean ) , (char*)(&inData) ) ;
}
}
@@ -95,17 +95,17 @@ wxSize wxButton::GetDefaultSize()
void wxButton::Command (wxCommandEvent & event)
{
if ( m_macControl )
if ( (ControlHandle) m_macControl )
{
HiliteControl( m_macControl , kControlButtonPart ) ;
HiliteControl( (ControlHandle) m_macControl , kControlButtonPart ) ;
unsigned long finalTicks ;
Delay( 8 , &finalTicks ) ;
HiliteControl( m_macControl , 0 ) ;
HiliteControl( (ControlHandle) m_macControl , 0 ) ;
}
ProcessCommand (event);
}
void wxButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
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 ) ;
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 ) ;
MacPostControlCreate() ;
@@ -46,13 +46,13 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
void wxCheckBox::SetValue(bool val)
{
::SetControlValue( m_macControl , val ) ;
::SetControlValue( (ControlHandle) m_macControl , val ) ;
MacRedrawControl() ;
}
bool wxCheckBox::GetValue() const
{
return ::GetControlValue( m_macControl ) ;
return ::GetControlValue( (ControlHandle) m_macControl ) ;
}
void wxCheckBox::Command (wxCommandEvent & event)
@@ -61,7 +61,7 @@ void wxCheckBox::Command (wxCommandEvent & event)
ProcessCommand (event);
}
void wxCheckBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxCheckBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
SetValue( !GetValue() ) ;
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.
if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
}
// Restore the saved clip region.
@@ -127,10 +127,10 @@ static pascal void wxMacCheckListDefinition( short message, Boolean isSelected,
// appropriate QuickDraw transform mode.
GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
break;
default :
break ;
@@ -183,36 +183,36 @@ bool wxCheckListBox::Create(wxWindow *parent,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
14, 14, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag,
GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false);
SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else
long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false ,
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ;
ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL )
if ( (**(ListHandle)m_macList).listDefProc != NULL )
{
(**ldef).instruction = 0x4EF9; /* JMP instruction */
(**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 ;
LCellSize( pt , m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ;
LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif
OptionBits options = 0;
if ( style & wxLB_MULTIPLE )
@@ -227,7 +227,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
{
options = lOnlyOne ;
}
SetListSelectionFlags(m_macList, options);
SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ;
@@ -236,7 +236,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
Append( choices[i] ) ;
}
LSetDrawingMode( true , m_macList ) ;
LSetDrawingMode( true , (ListHandle) m_macList ) ;
return TRUE;
}
@@ -358,8 +358,8 @@ void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
GetListVisibleCells( m_macList , &visible ) ;
topcell = visible.top ;
#else
lineheight = (**m_macList).cellSize.v ;
topcell = (**m_macList).visible.top ;
lineheight = (**(ListHandle)m_macList).cellSize.v ;
topcell = (**(ListHandle)m_macList).visible.top ;
#endif
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 ) ;
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 ) ;
m_macPopUpMenuHandle = NewUniqueMenu() ;
SetControlData( m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
SetControlMinimum( m_macControl , 0 ) ;
SetControlMaximum( m_macControl , 0) ;
SetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( (ControlHandle) m_macControl , 0) ;
if ( n > 0 )
SetControlValue( m_macControl , 1 ) ;
SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ;
@@ -72,12 +72,12 @@ int wxChoice::DoAppend(const wxString& item)
{
Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ;
AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ;
m_strings.Add( item ) ;
m_datas.Add( NULL ) ;
int index = m_strings.GetCount() - 1 ;
DoSetItemClientData( index , NULL ) ;
SetControlMaximum( m_macControl , GetCount()) ;
SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
return index ;
}
@@ -90,10 +90,10 @@ void wxChoice::Delete(int n)
delete GetClientObject(n);
}
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ;
::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1) ;
m_strings.Remove( n ) ;
m_datas.RemoveAt( n ) ;
SetControlMaximum( m_macControl , GetCount()) ;
SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
}
void wxChoice::Clear()
@@ -102,11 +102,11 @@ void wxChoice::Clear()
for ( int i = 0 ; i < GetCount() ; i++ )
{
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ;
::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , 1 ) ;
}
m_strings.Empty() ;
m_datas.Empty() ;
SetControlMaximum( m_macControl , 0 ) ;
SetControlMaximum( (ControlHandle) m_macControl , 0 ) ;
}
void wxChoice::Free()
@@ -127,12 +127,12 @@ void wxChoice::Free()
int wxChoice::GetSelection() const
{
return GetControlValue( m_macControl ) -1 ;
return GetControlValue( (ControlHandle) m_macControl ) -1 ;
}
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);
}
void wxChoice::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
event.SetInt(GetSelection());

View File

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

View File

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

View File

@@ -22,9 +22,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject)
// Colour
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green ) ;
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green )
#include "wx/mac/private.h"
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->blue = (blue << 8) + blue;
col->green = (green << 8) + green;
@@ -55,7 +58,7 @@ wxColour::wxColour (const wxColour& col)
m_blue = col.m_blue;
m_isInit = col.m_isInit;
m_pixel = col.m_pixel;
memcpy( &m_pixel , &col.m_pixel , 6 ) ;
}
wxColour::wxColour (const wxColour* col)
@@ -65,7 +68,7 @@ wxColour::wxColour (const wxColour* col)
m_blue = col->m_blue;
m_isInit = col->m_isInit;
m_pixel = col->m_pixel;
memcpy( &m_pixel , &col->m_pixel , 6 ) ;
}
wxColour& wxColour::operator =(const wxColour& col)
@@ -75,7 +78,7 @@ wxColour& wxColour::operator =(const wxColour& col)
m_blue = col.m_blue;
m_isInit = col.m_isInit;
m_pixel = col.m_pixel;
memcpy( &m_pixel , &col.m_pixel , 6 ) ;
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 ) ;
}
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 ) ;
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 ) ;
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++ )
{
Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , choices[i] ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ;
AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
}
SetControlMinimum( m_macControl , 0 ) ;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlValue( m_macControl , 1 ) ;
SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ;
@@ -139,37 +139,37 @@ void wxComboBox::Append(const wxString& item)
{
Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ;
AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
m_noStrings ++;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
}
void wxComboBox::Delete(int n)
{
wxASSERT( n < m_noStrings ) ;
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ;
::DeleteMenuItem( (MenuHandle) m_macPopUpMenuHandle , n + 1) ;
m_noStrings --;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
}
void wxComboBox::Clear()
{
for ( int i = 0 ; i < m_noStrings ; i++ )
{
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ;
::DeleteMenuItem((MenuHandle) m_macPopUpMenuHandle , 1 ) ;
}
m_noStrings = 0;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
}
int wxComboBox::GetSelection() const
{
return GetControlValue( m_macControl ) -1 ;
return GetControlValue( (ControlHandle) m_macControl ) -1 ;
}
void wxComboBox::SetSelection(int n)
{
SetControlValue( m_macControl , n + 1 ) ;
SetControlValue( (ControlHandle) m_macControl , n + 1 ) ;
}
int wxComboBox::FindString(const wxString& s) const
@@ -186,7 +186,7 @@ wxString wxComboBox::GetString(int n) const
{
Str255 p_text ;
char c_text[255];
::GetMenuItemText( m_macPopUpMenuHandle , n+1 , p_text ) ;
::GetMenuItemText( (MenuHandle) m_macPopUpMenuHandle , n+1 , p_text ) ;
#if TARGET_CARBON
p2cstrcpy( c_text, p_text ) ;
#else
@@ -217,7 +217,7 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
return FALSE;
}
void wxComboBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxComboBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
event.SetInt(GetSelection());

View File

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

View File

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

View File

@@ -20,6 +20,8 @@
#include "wx/region.h"
#include "wx/image.h"
#include "wx/mac/private.h"
#if __MSL__ >= 0x6000
#include "math.h"
#endif
@@ -42,6 +44,10 @@ IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
const double M_PI = 3.14159265358979 ;
#endif
const double RAD2DEG = 180.0 / M_PI;
const short kEmulatedMode = -1 ;
const short kUnsupportedMode = -2 ;
#define wxMAC_EXPERIMENTAL_PATTERN 0
//-----------------------------------------------------------------------------
// Local functions
@@ -55,6 +61,95 @@ static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; }
// 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()
{
m_ok = FALSE;
@@ -78,9 +173,6 @@ wxDC::wxDC()
m_needComputeScaleX = FALSE;
m_needComputeScaleY = FALSE;
m_maxX = m_maxY = -100000;
m_minY = m_minY = 100000;
m_macPort = NULL ;
m_macMask = NULL ;
m_ok = FALSE ;
@@ -89,19 +181,19 @@ wxDC::wxDC()
m_macBrushInstalled = false ;
m_macPenInstalled = false ;
m_macLocalOrigin.h = m_macLocalOrigin.v = 0 ;
m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ;
m_macBoundaryClipRgn = NewRgn() ;
m_macCurrentClipRgn = NewRgn() ;
SetRectRgn( m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( (RgnHandle) m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
m_pen = *wxBLACK_PEN;
m_font = *wxNORMAL_FONT;
m_brush = *wxWHITE_BRUSH;
}
wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
m_ph( dc->m_macPort )
m_ph( (GrafPtr) dc->m_macPort )
{
wxASSERT( dc->Ok() ) ;
@@ -114,12 +206,12 @@ wxMacPortSetter::~wxMacPortSetter()
wxDC::~wxDC(void)
{
DisposeRgn( m_macBoundaryClipRgn ) ;
DisposeRgn( m_macCurrentClipRgn ) ;
DisposeRgn( (RgnHandle) m_macBoundaryClipRgn ) ;
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_macBrushInstalled = false ;
@@ -159,18 +251,18 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( bmp.GetBitmapType() == kMacBitmapTypePict ) {
Rect bitmaprect = { 0 , 0 , hh, ww };
::OffsetRect( &bitmaprect, xx, yy ) ;
::DrawPicture( bmp.GetPict(), &bitmaprect ) ;
::DrawPicture( (PicHandle) bmp.GetPict(), &bitmaprect ) ;
}
else if ( bmp.GetBitmapType() == kMacBitmapTypeGrafWorld )
{
GWorldPtr bmapworld = bmp.GetHBITMAP();
GWorldPtr bmapworld = MAC_WXHBITMAP( bmp.GetHBITMAP() );
PixMapHandle bmappixels ;
// Set foreground and background colours (for bitmaps depth = 1)
if(bmp.GetDepth() == 1)
{
RGBColor fore = m_textForegroundColour.GetPixel();
RGBColor back = m_textBackgroundColour.GetPixel();
RGBColor fore = MAC_WXCOLORREF(m_textForegroundColour.GetPixel());
RGBColor back = MAC_WXCOLORREF(m_textBackgroundColour.GetPixel());
RGBForeColor(&fore);
RGBBackColor(&back);
}
@@ -192,21 +284,21 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( useMask && bmp.GetMask() )
{
if( LockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap())))
if( LockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap()))))
{
CopyDeepMask
(
GetPortBitMapForCopyBits(bmapworld),
GetPortBitMapForCopyBits(bmp.GetMask()->GetMaskBitmap()),
GetPortBitMapForCopyBits( m_macPort ),
GetPortBitMapForCopyBits(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())),
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &source, &dest, mode, NULL
);
UnlockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap()));
UnlockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())));
}
}
else {
CopyBits( GetPortBitMapForCopyBits( bmapworld ),
GetPortBitMapForCopyBits( m_macPort ),
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &dest, mode, NULL ) ;
}
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() } ;
OffsetRect( &bitmaprect, xx, yy ) ;
PlotCIconHandle( &bitmaprect , atNone , ttNone , bmp.GetHICON() ) ;
PlotCIconHandle( &bitmaprect , atNone , ttNone , MAC_WXHICON(bmp.GetHICON()) ) ;
}
m_macPenInstalled = false ;
m_macBrushInstalled = false ;
@@ -241,8 +333,8 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
ww = XLOG2DEVREL(width);
hh = YLOG2DEVREL(height);
SetRectRgn( m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
SectRgn( m_macCurrentClipRgn , m_macBoundaryClipRgn , m_macCurrentClipRgn ) ;
SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
if( m_clipping )
{
@@ -290,12 +382,12 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
}
else
{
CopyRgn( region.GetWXHRGN() , m_macCurrentClipRgn ) ;
CopyRgn( (RgnHandle) region.GetWXHRGN() , (RgnHandle) m_macCurrentClipRgn ) ;
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 )
{
m_clipX1 = wxMax( m_clipX1 , xx );
@@ -318,7 +410,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
void wxDC::DestroyClippingRegion()
{
wxMacPortSetter helper(this) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ;
CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_clipping = FALSE;
}
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_signY = (yBottomUp ? -1 : 1);
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
{
return wxSize(72, 72);
@@ -787,13 +872,19 @@ void wxDC::DoDrawPolygon(int n, wxPoint points[],
y1 = YLOG2DEVMAC(points[0].y + yoffset);
::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);
y2 = YLOG2DEVMAC(points[i+1].y + yoffset);
x2 = XLOG2DEVMAC(points[i].x + xoffset);
y2 = YLOG2DEVMAC(points[i].y + yoffset);
::LineTo(x2, y2);
}
// close the polyline if necessary
if ( x1 != x2 || y1 != y2 )
{
::LineTo(x1,y1 ) ;
}
ClosePoly();
if (m_brush.GetStyle() != wxTRANSPARENT)
@@ -959,25 +1050,20 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
{
wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc"));
wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC"));
wxMacPortSetter helper(this) ;
/* TODO: use the mask origin when drawing transparently */
if ( logical_func == wxNO_OP )
return TRUE ;
if (xsrcMask == -1 && ysrcMask == -1)
{
xsrcMask = xsrc; ysrcMask = ysrc;
}
CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ;
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 ) ;
// correct the parameter in case this dc does not have a mask at all
if ( useMask && !source->m_macMask )
useMask = false ;
if ( LockPixels(bmappixels) )
{
Rect srcrect , dstrect ;
srcrect.top = source->YLOG2DEVMAC(ysrc) ;
srcrect.left = source->XLOG2DEVMAC(xsrc) ;
@@ -988,54 +1074,199 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
dstrect.bottom = YLOG2DEVMAC(ydest + height ) ;
dstrect.right = XLOG2DEVMAC(xdest + width ) ;
short mode = (logical_func == wxCOPY ? srcCopy :
// logical_func == wxCLEAR ? WHITENESS :
// logical_func == wxSET ? BLACKNESS :
logical_func == wxINVERT ? hilite :
// logical_func == wxAND ? MERGECOPY :
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 );
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 ;
PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ;
if ( LockPixels(bmappixels) )
{
wxMacPortSetter helper(this) ;
RGBColor tempColor ;
if ( source->GetDepth() == 1 )
{
RGBForeColor( &MAC_WXCOLORREF(m_textForegroundColour.GetPixel()) ) ;
RGBBackColor( &MAC_WXCOLORREF(m_textBackgroundColour.GetPixel()) ) ;
}
else
{
// the modes need this, otherwise we'll end up having really nice colors...
RGBColor white = { 0xFFFF, 0xFFFF,0xFFFF} ;
RGBColor black = { 0,0,0} ;
RGBForeColor( &black ) ;
RGBBackColor( &white ) ;
}
if ( useMask && source->m_macMask )
{
if ( mode == srcCopy )
{
if ( LockPixels( GetGWorldPixMap( source->m_macMask ) ) )
if ( LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) )
{
CopyMask( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( source->m_macMask ) ,
GetPortBitMapForCopyBits( m_macPort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(source->m_macMask) ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &srcrect , &dstrect ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
}
}
else
{
RgnHandle clipRgn = NewRgn() ;
LockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( source->m_macMask ) ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
//OffsetRgn( clipRgn , -source->m_macMask->portRect.left , -source->m_macMask->portRect.top ) ;
LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
OffsetRgn( clipRgn , -srcrect.left + dstrect.left, -srcrect.top + dstrect.top ) ;
if ( mode == kEmulatedMode )
{
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( m_macPort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &dstrect, mode, clipRgn ) ;
}
DisposeRgn( clipRgn ) ;
}
}
else
{
if ( mode == kEmulatedMode )
{
CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( m_macPort ) ,
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 ) ;
}
@@ -1100,8 +1331,8 @@ void wxDC::DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y,
// prepare to blit-with-rotate the bitmap to the DC
wxImage image(src);
RGBColor colText = m_textForegroundColour.GetPixel();
RGBColor colBack = m_textBackgroundColour.GetPixel();
RGBColor colText = MAC_WXCOLORREF( m_textForegroundColour.GetPixel() );
RGBColor colBack = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel() );
unsigned char *data = image.GetData();
@@ -1336,7 +1567,8 @@ void wxDC::Clear(void)
if (m_backgroundBrush.GetStyle() != wxTRANSPARENT)
{
MacInstallBrush() ;
MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
::EraseRect( &rect ) ;
}
}
@@ -1360,8 +1592,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ;
m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel();
RGBColor backcolor = m_textBackgroundColour.GetPixel();
RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor );
}
@@ -1380,8 +1612,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ;
m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel();
RGBColor backcolor = m_textBackgroundColour.GetPixel();
RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor );
}
@@ -1470,8 +1702,8 @@ void wxDC::MacInstallPen() const
// if ( m_macPenInstalled )
// return ;
RGBColor forecolor = m_pen.GetColour().GetPixel();
RGBColor backcolor = m_backgroundBrush.GetColour().GetPixel();
RGBColor forecolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel());
RGBColor backcolor = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel());
::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor );
@@ -1604,7 +1836,7 @@ void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background )
}
case kwxMacBrushColour :
{
::RGBBackColor( &background.GetColour().GetPixel() );
::RGBBackColor( &MAC_WXCOLORREF( background.GetColour().GetPixel()) );
int brushStyle = background.GetStyle();
if (brushStyle == wxSOLID)
::BackPat(GetQDGlobalsWhite(&whiteColor));
@@ -1633,7 +1865,9 @@ void wxDC::MacInstallBrush() const
// foreground
::RGBForeColor( &m_brush.GetColour().GetPixel() );
bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ;
::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) );
int brushStyle = m_brush.GetStyle();
if (brushStyle == wxSOLID)
@@ -1646,62 +1880,109 @@ void wxDC::MacInstallBrush() const
}
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
wxBitmap* bitmap = m_brush.GetStipple() ;
int width = bitmap->GetWidth() ;
int height = bitmap->GetHeight() ;
int depth = bitmap->GetDepth() ;
GWorldPtr gw = NULL ;
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 )
{
GWorldPtr gw = bitmap->GetHBITMAP() ;
if ( width == 8 && height == 8 && depth == 1)
if ( (**gwpixmaphandle).pixelSize == 1 )
isMonochrome = true ;
}
if ( isMonochrome )
{
::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) );
BitMap* gwbitmap = (BitMap*) *gwpixmaphandle ; // since the color depth is 1 it is a BitMap
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
int alignment = gwbitmap->rowBytes & 0x7FFF ;
if( width == 8 && height == 8 )
{
Pattern pat ;
LockPixels( GetGWorldPixMap( gw ) ) ;
BitMap* gwbitmap = (BitMap*) *GetGWorldPixMap( gw ) ; // since the color depth is 1 it is a BitMap
int alignment = gwbitmap->rowBytes & 0x7FFF ;
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
for ( int i = 0 ; i < 8 ; ++i )
{
pat.pat[i] = gwbits[i*alignment+0] ;
}
UnlockPixels( GetGWorldPixMap( gw ) ) ;
::PenPat( &pat ) ;
}
else
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
}
else if (m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE )
#if wxMAC_EXPERIMENTAL_PATTERN
// 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 )
{
::RGBForeColor( &m_textForegroundColour.GetPixel() );
::RGBForeColor( &m_textBackgroundColour.GetPixel() );
::PenPat(GetQDGlobalsBlack(&blackColor));
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
{
}
UnlockPixels( gwpixmaphandle ) ;
}
else
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
// background
MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
// todo :
if ( !backgroundTransparent )
::RGBBackColor( &MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ) ;
short mode = patCopy ;
switch( m_logicalFunction )
{
case wxCOPY: // src
if ( backgroundTransparent )
mode = patOr ;
else
mode = patCopy ;
break ;
case wxINVERT: // NOT dst
if ( !backgroundTransparent )
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
mode = patXor ;
break ;
case wxXOR: // src XOR dst

View File

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

View File

@@ -14,6 +14,7 @@
#endif
#include "wx/dcmemory.h"
#include "wx/mac/private.h"
//-----------------------------------------------------------------------------
// wxMemoryDC
@@ -43,7 +44,7 @@ wxMemoryDC::~wxMemoryDC()
{
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() )
{
UnlockPixels( GetGWorldPixMap(m_selected.GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );
}
m_selected = bitmap;
if (m_selected.Ok())

View File

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

View File

@@ -20,6 +20,8 @@
#include "wx/cmndata.h"
#include "wx/mac/private.h"
#ifdef __DARWIN__
#include <Carbon/Carbon.h>
#else
@@ -30,423 +32,11 @@
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
#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,
const wxString& defaultPath,
long style, const wxPoint& pos)
{
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message;
m_dialogStyle = style;
m_parent = parent;
@@ -455,51 +45,6 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
int wxDirDialog::ShowModal()
{
#if !TARGET_CARBON
if ( !gUseNavServices )
{
Str255 prompt ;
Str255 path ;
#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);
DisposeRoutineDescriptor(invisiblesExcludedCustomFilterUPP);
if ( reply.sfGood == false )
{
m_path = "" ;
return wxID_CANCEL ;
}
else
{
m_path = wxMacFSSpec2MacFilename( &reply.sfFile ) ;
return wxID_OK ;
}
return wxID_CANCEL;
}
else
#endif
{
NavDialogOptions mNavOptions;
NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ;
@@ -593,7 +138,5 @@ int wxDirDialog::ShowModal()
return wxID_OK ;
}
return wxID_CANCEL;
}
}

View File

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

View File

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

View File

@@ -31,6 +31,8 @@ IMPLEMENT_CLASS(wxFileDialog, wxDialog)
// begin wxmac
#include "wx/mac/private.h"
#include <Navigation.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 )
{
@@ -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)
{
Str255 filename ;
@@ -541,6 +310,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
long style, const wxPoint& pos)
{
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message;
m_dialogStyle = style;
m_parent = parent;
@@ -578,70 +348,6 @@ pascal Boolean CrossPlatformFilterCallback (
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;
NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ;
@@ -800,7 +506,6 @@ int wxFileDialog::ShowModal()
return wxID_OK ;
}
return wxID_CANCEL;
}
}
// Generic file load/save dialog

View File

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

View File

@@ -37,6 +37,8 @@
#include "wx/fontmap.h"
#include "wx/fontutil.h"
#include "wx/mac/private.h"
// ----------------------------------------------------------------------------
// 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 ) ;
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 ) ;
MacPostControlCreate() ;
@@ -60,13 +60,13 @@ void wxGauge::SetBezelFace(int w)
void wxGauge::SetRange(int r)
{
m_rangeMax = r;
::SetControlMaximum( m_macControl , m_rangeMax ) ;
::SetControlMaximum( (ControlHandle) m_macControl , m_rangeMax ) ;
}
void wxGauge::SetValue(int pos)
{
m_gaugePos = pos;
::SetControlValue( m_macControl , m_gaugePos ) ;
::SetControlValue( (ControlHandle) m_macControl , m_gaugePos ) ;
}
int wxGauge::GetShadowWidth() const

View File

@@ -45,7 +45,7 @@ wxGLContext::wxGLContext(
{
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);
wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") );
@@ -251,7 +251,7 @@ void wxGLCanvas::SetViewport()
int width, height;
GetClientSize(& width, & height);
Rect bounds ;
GetWindowPortBounds( MacGetRootWindow() , &bounds ) ;
GetWindowPortBounds( MAC_WXHWND(MacGetRootWindow()) , &bounds ) ;
GLint parms[4] ;
parms[0] = x ;
parms[1] = bounds.bottom - bounds.top - ( y + height ) ;

View File

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

View File

@@ -19,6 +19,9 @@
IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
#endif
#include "wx/mac/private.h"
/*
* 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)
{
LoadFile(icon_file, flags, desiredWidth, desiredHeight);
LoadFile(icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight);
}
wxIcon::~wxIcon()
{
}
bool wxIcon::LoadFile(const wxString& filename, long type,
bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
int desiredWidth, int desiredHeight)
{
UnRef();

View File

@@ -93,10 +93,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode.
if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
}
// Restore the saved clip region.
@@ -111,10 +111,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode.
GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr)grafPtr );
SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
break;
default :
break ;
@@ -171,36 +171,36 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag,
GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false);
SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else
long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false ,
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ;
ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL )
if ( (**(ListHandle)m_macList).listDefProc != NULL )
{
(**ldef).instruction = 0x4EF9; /* JMP instruction */
(**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 ;
LCellSize( pt , m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ;
LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif
OptionBits options = 0;
if ( style & wxLB_MULTIPLE )
@@ -215,7 +215,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
{
options = lOnlyOne ;
}
SetListSelectionFlags(m_macList, options);
SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ;
@@ -224,7 +224,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
Append( choices[i] ) ;
}
LSetDrawingMode( true , m_macList ) ;
LSetDrawingMode( true , (ListHandle)m_macList ) ;
return TRUE;
}
@@ -235,8 +235,8 @@ wxListBox::~wxListBox()
if ( m_macList )
{
#if !TARGET_CARBON
DisposeHandle( (**m_macList).listDefProc ) ;
(**m_macList).listDefProc = NULL ;
DisposeHandle( (**(ListHandle)m_macList).listDefProc ) ;
(**(ListHandle)m_macList).listDefProc = NULL ;
#endif
m_macList = NULL ;
}
@@ -272,7 +272,7 @@ void wxListBox::DoSetSize(int x, int y,
wxControl::DoSetSize( x , y , width , height , sizeFlags ) ;
#if TARGET_CARBON
Rect bounds ;
GetControlBounds( m_macControl , &bounds ) ;
GetControlBounds( (ControlHandle) m_macControl , &bounds ) ;
ControlRef control = GetListVerticalScrollBar( m_macList ) ;
if ( control )
{
@@ -633,7 +633,7 @@ void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refC
void wxListBox::MacDelete( int N )
{
LDelRow( 1 , N , m_macList) ;
LDelRow( 1 , N , (ListHandle)m_macList) ;
Refresh();
}
@@ -641,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text)
{
Cell cell = { 0 , 0 } ;
cell.v = n ;
LAddRow( 1 , cell.v , m_macList ) ;
LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList);
Refresh();
}
@@ -649,15 +649,15 @@ void wxListBox::MacInsert( int n , const char * text)
void wxListBox::MacAppend( const char * text)
{
Cell cell = { 0 , 0 } ;
cell.v = (**m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , m_macList ) ;
cell.v = (**(ListHandle)m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList);
Refresh();
}
void wxListBox::MacClear()
{
LDelRow( (**m_macList).dataBounds.bottom , 0 , m_macList ) ;
LDelRow( (**(ListHandle)m_macList).dataBounds.bottom , 0 ,(ListHandle) m_macList ) ;
Refresh();
}
@@ -666,15 +666,15 @@ void wxListBox::MacSetSelection( int n , bool select )
Cell cell = { 0 , 0 } ;
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 ;
LSetSelect( select , cell , m_macList ) ;
LAutoScroll( m_macList ) ;
LSetSelect( select , cell , (ListHandle)m_macList ) ;
LAutoScroll( (ListHandle)m_macList ) ;
Refresh();
}
@@ -682,7 +682,7 @@ bool wxListBox::MacIsSelected( int n ) const
{
Cell cell = { 0 , 0 } ;
cell.v = n ;
return LGetSelect( false , &cell , m_macList ) ;
return LGetSelect( false , &cell , (ListHandle)m_macList ) ;
}
void wxListBox::MacDestroy()
@@ -693,7 +693,7 @@ void wxListBox::MacDestroy()
int wxListBox::MacGetSelection() const
{
Cell cell = { 0 , 0 } ;
if ( LGetSelect( true , &cell , m_macList ) )
if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
return cell.v ;
else
return -1 ;
@@ -708,7 +708,7 @@ int wxListBox::MacGetSelections( wxArrayInt& aSelections ) const
Cell cell = { 0 , 0 } ;
cell.v = 0 ;
while ( LGetSelect( true , &cell , m_macList ) )
while ( LGetSelect( true , &cell ,(ListHandle) m_macList ) )
{
aSelections.Add( cell.v ) ;
no_sel++ ;
@@ -739,18 +739,18 @@ void wxListBox::OnSize( const wxSizeEvent &event)
#if TARGET_CARBON
GetListCellSize(m_macList, &pt);
#else
pt = (**m_macList).cellSize ;
pt = (**(ListHandle)m_macList).cellSize ;
#endif
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 ;
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 )
{
MacDoClick() ;
@@ -763,7 +763,7 @@ void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpar
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/mac/private.h"
#include "wx/mac/macnotfy.h"
const short kMaxEvents = 1000 ;
@@ -74,6 +77,7 @@ void wxMacAddEvent(
short wakeUp )
{
wxMacNotificationEvents *e = (wxMacNotificationEvents *) table ;
wxASSERT_MSG( handler != NULL , "illegal notification proc ptr" ) ;
/* this should be protected eventually */
short index = e->top++ ;
@@ -125,6 +129,7 @@ void wxMacProcessNotifierEvents()
gMacNotificationEvents.events[index] = NULL ;
gMacNotificationEvents.proc[index] = NULL ;
if ( handler )
handler( event , data ) ;
}
gInProcessing = false ;

View File

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

View File

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

View File

@@ -249,30 +249,30 @@ void wxMenuItem::Enable(bool bDoEnable)
if ( m_subMenu == NULL )
{
// normal menu item
if ( m_parentMenu->GetHMenu() )
if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{
int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 )
{
if ( bDoEnable )
UMAEnableMenuItem( m_parentMenu->GetHMenu() , index ) ;
UMAEnableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
else
UMADisableMenuItem( m_parentMenu->GetHMenu() , index ) ;
UMADisableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
}
}
}
else
{
// submenu
if ( m_parentMenu->GetHMenu() )
if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{
int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 )
{
if ( bDoEnable )
UMAEnableMenuItem( m_parentMenu->GetHMenu() , index ) ;
UMAEnableMenuItem( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index ) ;
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 )
{
m_isChecked = bDoCheck;
if ( m_parentMenu->GetHMenu() )
if ( MAC_WXHMENU(m_parentMenu->GetHMenu()) )
{
int index = m_parentMenu->MacGetIndexFromItem( this ) ;
if ( index >= 1 )
{
if ( bDoCheck )
::SetItemMark( m_parentMenu->GetHMenu() , index , 0x12 ) ; // checkmark
::SetItemMark( MAC_WXHMENU(m_parentMenu->GetHMenu()) , index , 0x12 ) ; // checkmark
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) );
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 ) ;
if ( index >= 1 )
{
Str255 label;
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/clipbrd.h"
#include "wx/mac/private.h"
#include <stdio.h>
#include <string.h>
@@ -59,7 +61,7 @@ wxMetafileRefData::~wxMetafileRefData(void)
{
if (m_metafile)
{
KillPicture( m_metafile ) ;
KillPicture( (PicHandle) m_metafile ) ;
m_metafile = 0;
}
}
@@ -104,7 +106,7 @@ bool wxMetaFile::SetClipboard(int width, int height)
return TRUE ;
}
void wxMetafile::SetHMETAFILE(PicHandle mf)
void wxMetafile::SetHMETAFILE(WXHMETAFILE mf)
{
if (!m_refData)
m_refData = new wxMetafileRefData;
@@ -122,7 +124,7 @@ bool wxMetaFile::Play(wxDC *dc)
{
wxMacPortSetter helper( dc ) ;
PicHandle pict = GetHMETAFILE() ;
PicHandle pict = (PicHandle) GetHMETAFILE() ;
DrawPicture( pict , &(**pict).picFrame ) ;
}
return TRUE;
@@ -149,7 +151,7 @@ wxMetaFileDC::wxMetaFileDC(const wxString& file)
Rect r={0,0,1000,1000} ;
m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ;
::GetPort( &m_macPort ) ;
::GetPort( (GrafPtr*) &m_macPort ) ;
m_ok = TRUE ;
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} ;
m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ;
::GetPort( &m_macPort ) ;
::GetPort( (GrafPtr*) &m_macPort ) ;
m_ok = TRUE ;
SetMapMode(wxMM_TEXT);
@@ -195,7 +197,7 @@ size_t wxMetafileDataObject::GetDataSize() 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() ) ) ;
return true ;
}

View File

@@ -130,7 +130,7 @@ bool wxNotebook::Create(wxWindow *parent,
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 ) ;
MacPostControlCreate() ;
@@ -168,7 +168,7 @@ int wxNotebook::SetSelection(int nPage)
return m_nSelection ;
ChangePage(m_nSelection, nPage);
SetControlValue( m_macControl , m_nSelection + 1 ) ;
SetControlValue( (ControlHandle) m_macControl , m_nSelection + 1 ) ;
return m_nSelection;
}
@@ -291,7 +291,7 @@ bool wxNotebook::InsertPage(int nPage,
*/
void wxNotebook::MacSetupTabs()
{
SetControlMaximum( m_macControl , GetPageCount() ) ;
SetControlMaximum( (ControlHandle) m_macControl , GetPageCount() ) ;
wxNotebookPage *page;
ControlTabInfoRec info;
@@ -307,14 +307,14 @@ void wxNotebook::MacSetupTabs()
strcpy( (char *) info.name , page->GetLabel() ) ;
c2pstr( (char *) info.name ) ;
#endif
SetControlData( m_macControl, ii+1, kControlTabInfoTag,
SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabInfoTag,
sizeof( ControlTabInfoRec) , (char*) &info ) ;
SetControlData( m_macControl, ii+1, kControlTabEnabledFlagTag,
SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabEnabledFlagTag,
sizeof( Boolean ), (Ptr)&enabled );
}
Rect bounds;
GetControlBounds(m_macControl, &bounds);
InvalWindowRect(MacGetRootWindow(), &bounds);
GetControlBounds((ControlHandle)m_macControl, &bounds);
InvalWindowRect((WindowRef)MacGetRootWindow(), &bounds);
}
// ----------------------------------------------------------------------------
@@ -436,9 +436,9 @@ void wxNotebook::ChangePage(int nOldSel, int 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);
ProcessEvent(event);

View File

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

View File

@@ -29,6 +29,8 @@
#include "wx/msgdlg.h"
#endif
#include "wx/mac/private.h"
#include "wx/mac/printmac.h"
#include "wx/dcprint.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 ) ;
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 ) ;
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 ) ;
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 ) ;
MacPostControlCreate() ;
@@ -70,10 +70,10 @@ void wxRadioButton::SetValue(bool val)
{
int i;
wxRadioButton *cycle;
if ( GetControlValue( m_macControl ) == val )
if ( GetControlValue( (ControlHandle) m_macControl ) == val )
return ;
::SetControlValue( m_macControl , val ) ;
::SetControlValue( (ControlHandle) m_macControl , val ) ;
if (val)
{
cycle=this->NextInCycle();
@@ -89,7 +89,7 @@ void wxRadioButton::SetValue(bool val)
bool wxRadioButton::GetValue() const
{
return ::GetControlValue( m_macControl ) ;
return ::GetControlValue( (ControlHandle) m_macControl ) ;
}
void wxRadioButton::Command (wxCommandEvent & event)
@@ -98,7 +98,7 @@ void wxRadioButton::Command (wxCommandEvent & event)
ProcessCommand (event);
}
void wxRadioButton::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxRadioButton::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
if ( GetValue() )
return ;

View File

@@ -63,25 +63,25 @@ wxRegion::wxRegion()
wxRegion::wxRegion(WXHRGN hRegion )
{
m_refData = new wxRegionRefData;
CopyRgn( hRegion , M_REGION ) ;
CopyRgn( (RgnHandle) hRegion , (RgnHandle) M_REGION ) ;
}
wxRegion::wxRegion(long x, long y, long w, long h)
{
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)
{
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)
{
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 ) ;
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 ) ;
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() ;
@@ -61,12 +61,12 @@ wxScrollBar::~wxScrollBar()
void wxScrollBar::SetThumbPosition(int viewStart)
{
::SetControlValue( m_macControl , viewStart ) ;
::SetControlValue( (ControlHandle) m_macControl , viewStart ) ;
}
int wxScrollBar::GetThumbPosition() const
{
return ::GetControlValue( m_macControl ) ;
return ::GetControlValue( (ControlHandle) m_macControl ) ;
}
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) ;
SetControlMaximum( m_macControl , range1 ) ;
SetControlMinimum( m_macControl , 0 ) ;
SetControlValue( m_macControl , position ) ;
SetControlMaximum( (ControlHandle) m_macControl , range1 ) ;
SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlValue( (ControlHandle) m_macControl , position ) ;
if ( UMAGetAppearanceVersion() >= 0x0110 )
{
if ( SetControlViewSize != (void*) kUnresolvedCFragSymbolAddress )
{
SetControlViewSize( m_macControl , m_pageSize ) ;
SetControlViewSize( (ControlHandle) m_macControl , m_pageSize ) ;
}
}
Refresh() ;
@@ -99,14 +99,14 @@ void wxScrollBar::Command(wxCommandEvent& 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 ;
int position = GetControlValue( m_macControl) ;
int minPos = GetControlMinimum( m_macControl) ;
int maxPos = GetControlMaximum( m_macControl) ;
int position = GetControlValue( (ControlHandle) m_macControl) ;
int minPos = GetControlMinimum( (ControlHandle) m_macControl) ;
int maxPos = GetControlMaximum( (ControlHandle) m_macControl) ;
wxEventType scrollEvent = wxEVT_NULL;
int nScrollInc;

View File

@@ -17,6 +17,8 @@
#include "wx/gdicmn.h"
#include "wx/utils.h"
#include "wx/mac/uma.h"
// ----------------------------------------------------------------------------
// 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);
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)
{
@@ -127,7 +127,7 @@ wxSlider::~wxSlider()
int wxSlider::GetValue() const
{
return GetControlValue( m_macControl) ;
return GetControlValue( (ControlHandle) m_macControl) ;
}
void wxSlider::SetValue(int value)
@@ -136,7 +136,7 @@ void wxSlider::SetValue(int value)
valuestring.Printf( "%d" , value ) ;
if ( m_macValueStatic )
m_macValueStatic->SetLabel( valuestring ) ;
SetControlValue( m_macControl , value ) ;
SetControlValue( (ControlHandle) m_macControl , value ) ;
}
void wxSlider::SetRange(int minValue, int maxValue)
@@ -146,8 +146,8 @@ void wxSlider::SetRange(int minValue, int maxValue)
m_rangeMin = minValue;
m_rangeMax = maxValue;
SetControlMinimum(m_macControl, m_rangeMin);
SetControlMaximum(m_macControl, m_rangeMax);
SetControlMinimum( (ControlHandle) m_macControl, m_rangeMin);
SetControlMaximum( (ControlHandle) m_macControl, m_rangeMax);
if(m_macMinimumStatic) {
value.Printf("%d", m_rangeMin);
@@ -239,9 +239,9 @@ void wxSlider::Command (wxCommandEvent & 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 ) ;
@@ -372,7 +372,7 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
GetParent()->MacClientToRootWindow(&mac_x, &mac_y);
}
GetControlBounds(m_macControl, &oldbounds);
GetControlBounds( (ControlHandle) m_macControl, &oldbounds);
oldbounds.right = oldbounds.left + m_width;
oldbounds.bottom = oldbounds.top + m_height;
@@ -408,7 +408,7 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
// Update window at old and new positions
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 , &newbounds );
@@ -485,6 +485,6 @@ void wxSlider::MacHandleControlClick( ControlHandle control , SInt16 controlpart
if(GetParent()) {
GetParent()->MacClientToRootWindow(&x, &y);
}
UMAMoveControl(m_macControl, x, y);
UMASizeControl(m_macControl, width - xborder, height - yborder);
UMAMoveControl( (ControlHandle) m_macControl, x, y);
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 ) ;
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 ) ;
wxASSERT_MSG( m_macControl != NULL , "No valid mac control" ) ;
wxASSERT_MSG( (ControlHandle) m_macControl != NULL , "No valid mac control" ) ;
MacPostControlCreate() ;
@@ -90,13 +90,13 @@ void wxSpinButton::SetRange(int minVal, int maxVal)
{
m_min = minVal;
m_max = maxVal;
SetControlMaximum( m_macControl , maxVal ) ;
SetControlMinimum( m_macControl , minVal ) ;
SetControlMaximum( (ControlHandle) m_macControl , maxVal ) ;
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 ;
int oldValue = m_value ;
@@ -142,7 +142,7 @@ void wxSpinButton::MacHandleControlClick( ControlHandle control , SInt16 control
{
m_value = oldValue ;
}
SetControlValue( m_macControl , m_value ) ;
SetControlValue( (ControlHandle) m_macControl , m_value ) ;
/* always send a thumbtrack event */
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 ) ;
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 ) ;
MacPostControlCreate() ;

View File

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

View File

@@ -129,7 +129,7 @@ void wxStaticText::OnDraw( wxDC &dc )
if (m_width <= 0 || m_height <= 0)
return;
if ( !IsWindowHilited( MacGetRootWindow() ) &&
if ( !IsWindowHilited( (WindowRef) MacGetRootWindow() ) &&
( GetBackgroundColour() == wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE )
|| 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 ) ;
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 ) ;
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 ) ;
MacPostControlCreate() ;
@@ -134,7 +134,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
TEHandle teH ;
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 ;
}
@@ -142,7 +142,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
value = wxMacMakeMacStringFromPC( st ) ;
else
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;
}
@@ -150,7 +150,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
wxString wxTextCtrl::GetValue() const
{
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 ;
if( wxApp::s_macDefaultEncodingIsPC )
return wxMacMakePCStringFromMac( wxBuffer ) ;
@@ -164,7 +164,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
TEHandle teH ;
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;
*to = (**teH).selEnd;
@@ -178,7 +178,7 @@ void wxTextCtrl::SetValue(const wxString& st)
value = wxMacMakeMacStringFromPC( st ) ;
else
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() ;
}
@@ -190,7 +190,7 @@ void wxTextCtrl::Copy()
TEHandle teH ;
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 ) ;
ClearCurrentScrap();
TEToScrap() ;
@@ -204,7 +204,7 @@ void wxTextCtrl::Cut()
TEHandle teH ;
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 ) ;
ClearCurrentScrap();
TEToScrap() ;
@@ -219,7 +219,7 @@ void wxTextCtrl::Paste()
TEHandle teH ;
long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEFromScrap() ;
TEPaste( teH ) ;
MacRedrawControl() ;
@@ -280,9 +280,9 @@ bool wxTextCtrl::CanPaste() const
void wxTextCtrl::SetEditable(bool editable)
{
if ( editable )
UMAActivateControl( m_macControl ) ;
UMAActivateControl( (ControlHandle) m_macControl ) ;
else
UMADeactivateControl( m_macControl ) ;
UMADeactivateControl( (ControlHandle) m_macControl ) ;
}
void wxTextCtrl::SetInsertionPoint(long pos)
@@ -302,8 +302,8 @@ long wxTextCtrl::GetInsertionPoint() const
TEHandle teH ;
long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
// ::GetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
// ::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection , &size ) ;
return (**teH).selStart ;
}
@@ -313,9 +313,9 @@ long wxTextCtrl::GetLastPosition() const
TEHandle teH ;
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 ;
}
@@ -328,8 +328,8 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
selection.selStart = from ;
selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TESetSelect( from , to , teH ) ;
TEDelete( teH ) ;
TEInsert( value , value.Length() , teH ) ;
@@ -345,8 +345,8 @@ void wxTextCtrl::Remove(long from, long to)
selection.selStart = from ;
selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEDelete( teH ) ;
Refresh() ;
}
@@ -357,12 +357,12 @@ void wxTextCtrl::SetSelection(long from, long to)
TEHandle teH ;
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.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 ) ;
}
@@ -385,7 +385,7 @@ void wxTextCtrl::WriteText(const wxString& text)
wxBuffer[text.Length() ] = 0 ;
// 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 ) ;
Refresh() ;
@@ -399,7 +399,7 @@ void wxTextCtrl::AppendText(const wxString& text)
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() ;
}
@@ -484,7 +484,7 @@ void wxTextCtrl::DiscardEdits()
int wxTextCtrl::GetNumberOfLines() const
{
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;
for (int i = 0; i < actualsize; i++)
@@ -514,7 +514,7 @@ void wxTextCtrl::ShowPosition(long pos)
int wxTextCtrl::GetLineLength(long lineNo) const
{
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
int count = 0;
@@ -541,7 +541,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const
wxString wxTextCtrl::GetLineText(long lineNo) const
{
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
int count = 0;
@@ -649,12 +649,12 @@ void wxTextCtrl::OnChar(wxKeyEvent& key_event)
break;
}
EventRecord *ev = wxTheApp->MacGetCurrentEvent();
EventRecord *ev = (EventRecord*) wxTheApp->MacGetCurrentEvent();
short keychar = short(ev->message & charCodeMask);
if (!eat_key)
{
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 ||
key_event.KeyCode() == WXK_RETURN ||
@@ -1706,7 +1706,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
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 ) ;
}
else
@@ -1725,13 +1725,13 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
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
{
STPTextPaneVars **tpvars;
/* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* set the text in the record */
TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(),
kTXNStartOffset, kTXNEndOffset);
@@ -1745,14 +1745,14 @@ wxString wxTextCtrl::GetValue() const
Size actualsize;
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
{
STPTextPaneVars **tpvars;
OSStatus err;
/* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* extract the text from the record */
Handle theText ;
err = TXNGetDataEncoded( (**tpvars).fTXNRec, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );
@@ -1783,7 +1783,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
TEHandle teH ;
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;
*to = (**teH).selEnd;
@@ -1793,7 +1793,7 @@ void wxTextCtrl::GetSelection(long* from, long* to) const
STPTextPaneVars **tpvars;
/* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
TXNGetSelection( (**tpvars).fTXNRec , (TXNOffset*) from , (TXNOffset*) to ) ;
@@ -1810,13 +1810,13 @@ void wxTextCtrl::SetValue(const wxString& st)
value = st ;
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
{
STPTextPaneVars **tpvars;
/* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* set the text in the record */
TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(),
kTXNStartOffset, kTXNEndOffset);
@@ -1834,14 +1834,14 @@ void wxTextCtrl::Copy()
TEHandle teH ;
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 ) ;
ClearCurrentScrap();
TEToScrap() ;
}
else
{
mUPDoEditCommand( m_macControl , kmUPCopy ) ;
mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCopy ) ;
}
}
}
@@ -1855,7 +1855,7 @@ void wxTextCtrl::Cut()
TEHandle teH ;
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 ) ;
ClearCurrentScrap();
TEToScrap() ;
@@ -1863,7 +1863,7 @@ void wxTextCtrl::Cut()
}
else
{
mUPDoEditCommand( m_macControl , kmUPCut ) ;
mUPDoEditCommand( (ControlHandle) m_macControl , kmUPCut ) ;
}
}
}
@@ -1877,14 +1877,14 @@ void wxTextCtrl::Paste()
TEHandle teH ;
long size ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEFromScrap() ;
TEPaste( teH ) ;
MacRedrawControl() ;
}
else
{
mUPDoEditCommand( m_macControl , kmUPPaste ) ;
mUPDoEditCommand( (ControlHandle) m_macControl , kmUPPaste ) ;
}
}
}
@@ -1943,9 +1943,9 @@ bool wxTextCtrl::CanPaste() const
void wxTextCtrl::SetEditable(bool editable)
{
if ( editable )
UMAActivateControl( m_macControl ) ;
UMAActivateControl( (ControlHandle) m_macControl ) ;
else
UMADeactivateControl( m_macControl ) ;
UMADeactivateControl( (ControlHandle) m_macControl ) ;
}
void wxTextCtrl::SetInsertionPoint(long pos)
@@ -1975,14 +1975,14 @@ long wxTextCtrl::GetLastPosition() const
TEHandle teH ;
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 ;
}
else
{
STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
STPTextPaneVars** tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
int actualsize = 0 ;
Handle theText ;
@@ -2012,8 +2012,8 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
selection.selStart = from ;
selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TESetSelect( from , to , teH ) ;
TEDelete( teH ) ;
TEInsert( value , value.Length() , teH ) ;
@@ -2036,8 +2036,8 @@ void wxTextCtrl::Remove(long from, long to)
selection.selStart = from ;
selection.selEnd = to ;
::SetControlData( m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
::GetControlData( (ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
TEDelete( teH ) ;
}
else
@@ -2055,19 +2055,19 @@ void wxTextCtrl::SetSelection(long from, long to)
TEHandle teH ;
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.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 ) ;
}
else
{
STPTextPaneVars **tpvars;
/* set up our locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* and our drawing environment as the operation
may force a redraw in the text area. */
SetPort((**tpvars).fDrawingEnvironment);
@@ -2098,14 +2098,14 @@ void wxTextCtrl::WriteText(const wxString& text)
TEHandle teH ;
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 ) ;
}
else
{
STPTextPaneVars **tpvars;
/* set up locals */
tpvars = (STPTextPaneVars **) GetControlReference(m_macControl);
tpvars = (STPTextPaneVars **) GetControlReference( (ControlHandle) m_macControl);
/* set the text in the record */
TXNSetData( (**tpvars).fTXNRec, kTXNTextData, (const char*)value, value.Length(),
kTXNUseCurrentSelection, kTXNUseCurrentSelection);
@@ -2124,11 +2124,11 @@ void wxTextCtrl::Clear()
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
{
mUPDoEditCommand( m_macControl , kmUPClear) ;
mUPDoEditCommand( (ControlHandle) m_macControl , kmUPClear) ;
}
Refresh() ;
}
@@ -2374,7 +2374,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
short keychar ;
keychar = short(ev->message & charCodeMask);
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)
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);

View File

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

View File

@@ -19,6 +19,17 @@
IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject)
#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 pascal void MacTimerProc( TMTask * t )
@@ -38,30 +49,33 @@ static void wxProcessTimer( unsigned long event , void *data )
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()
{
m_info.m_task.tmAddr = NULL ;
m_info.m_task.tmWakeUp = 0 ;
m_info.m_task.tmReserved = 0 ;
m_info.m_task.qType = 0 ;
m_info.m_table = wxMacGetNotifierTable() ;
m_info.m_timer = this ;
m_info = new MacTimerInfo() ;
m_info->m_task.tmAddr = NULL ;
m_info->m_task.tmWakeUp = 0 ;
m_info->m_task.tmReserved = 0 ;
m_info->m_task.qType = 0 ;
m_info->m_table = wxMacGetNotifierTable() ;
m_info->m_timer = this ;
}
bool wxTimer::IsRunning() const
{
return ( m_info.m_task.qType & kTMTaskActive ) ;
return ( m_info->m_task.qType & kTMTaskActive ) ;
}
wxTimer::~wxTimer()
{
Stop();
delete m_info ;
m_info = NULL ;
}
bool wxTimer::Start(int milliseconds,bool mode)
@@ -69,31 +83,31 @@ bool wxTimer::Start(int milliseconds,bool mode)
(void)wxTimerBase::Start(milliseconds, mode);
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;
#if defined(UNIVERSAL_INTERFACES_VERSION) && (UNIVERSAL_INTERFACES_VERSION >= 0x0340)
m_info.m_task.tmAddr = NewTimerUPP( MacTimerProc ) ;
m_info->m_task.tmAddr = NewTimerUPP( MacTimerProc ) ;
#else
m_info.m_task.tmAddr = NewTimerProc( MacTimerProc ) ;
m_info->m_task.tmAddr = NewTimerProc( MacTimerProc ) ;
#endif
m_info.m_task.tmWakeUp = 0 ;
m_info.m_task.tmReserved = 0 ;
m_info.m_task.qType = 0 ;
m_info.m_timer = this ;
InsXTime((QElemPtr) &m_info.m_task ) ;
PrimeTime( (QElemPtr) &m_info.m_task , m_milli ) ;
m_info->m_task.tmWakeUp = 0 ;
m_info->m_task.tmReserved = 0 ;
m_info->m_task.qType = 0 ;
m_info->m_timer = this ;
InsXTime((QElemPtr) &m_info->m_task ) ;
PrimeTime( (QElemPtr) &m_info->m_task , m_milli ) ;
return FALSE;
}
void wxTimer::Stop()
{
m_milli = 0 ;
if ( m_info.m_task.tmAddr )
if ( m_info->m_task.tmAddr )
{
RmvTime( (QElemPtr) &m_info.m_task ) ;
DisposeTimerUPP(m_info.m_task.tmAddr) ;
m_info.m_task.tmAddr = NULL ;
RmvTime( (QElemPtr) &m_info->m_task ) ;
DisposeTimerUPP(m_info->m_task.tmAddr) ;
m_info->m_task.tmAddr = NULL ;
}
wxMacRemoveAllNotifiersForData( wxMacGetNotifierTable() , this ) ;
}

View File

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

View File

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

View File

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

View File

@@ -142,6 +142,7 @@ bool UMAGetProcessModeDoesActivateOnFGSwitch()
void UMASetMenuTitle( MenuRef menu , StringPtr title )
{
/*
#if !TARGET_CARBON
long size = GetHandleSize( (Handle) menu ) ;
const long headersize = 14 ;
@@ -164,8 +165,9 @@ void UMASetMenuTitle( MenuRef menu , StringPtr title )
SetHandleSize( (Handle) menu , size + (newlen - oldlen ) ) ;
}
#else
*/
SetMenuTitle( menu , title ) ;
#endif
//#endif
}
UInt32 UMAMenuEvent( EventRecord *inEvent )
@@ -602,3 +604,55 @@ OSStatus UMAGetHelpMenu(
return helpMenuStatus ;
#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/wave.h"
#ifdef __WXMAC__
#include "wx/mac/private.h"
#endif
wxWave::wxWave()
: 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);
if ((hSnd != NULL) && (SndPlay(m_sndChan, hSnd, async) == noErr))
if ((hSnd != NULL) && (SndPlay((SndChannelPtr)m_sndChan, (SndListHandle) hSnd, async) == noErr))
ret = true;
}

View File

@@ -205,7 +205,7 @@ void wxWindowMac::SetFocus()
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() )
{
UMASetKeyboardFocus( gFocusWindow->MacGetRootWindow() , control->GetMacControl() , kControlFocusNoPart ) ;
UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlFocusNoPart ) ;
control->MacRedrawControl() ;
}
#endif
@@ -230,7 +230,7 @@ void wxWindowMac::SetFocus()
wxControl* control = wxDynamicCast( gFocusWindow , wxControl ) ;
if ( control && control->GetMacControl() )
{
UMASetKeyboardFocus( gFocusWindow->MacGetRootWindow() , control->GetMacControl() , kControlEditTextPart ) ;
UMASetKeyboardFocus( (WindowRef) gFocusWindow->MacGetRootWindow() , (ControlHandle) control->GetMacControl() , kControlEditTextPart ) ;
}
#endif
wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId);
@@ -318,8 +318,8 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
menu->UpdateUI();
ClientToScreen( &x , &y ) ;
::InsertMenu( menu->GetHMenu() , -1 ) ;
long menuResult = ::PopUpMenuSelect(menu->GetHMenu() ,y,x, 0) ;
::InsertMenu( (MenuHandle) menu->GetHMenu() , -1 ) ;
long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() ,y,x, 0) ;
menu->MacMenuSelect( this , TickCount() , HiWord(menuResult) , LoWord(menuResult) ) ;
::DeleteMenu( menu->MacGetMenuId() ) ;
menu->SetInvokingWindow(NULL);
@@ -330,7 +330,7 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
void wxWindowMac::DoScreenToClient(int *x, int *y) const
{
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
Point localwhere = {0,0} ;
@@ -351,7 +351,7 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const
void wxWindowMac::DoClientToScreen(int *x, int *y) const
{
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
MacClientToRootWindow( x , y ) ;
@@ -681,7 +681,7 @@ bool wxWindowMac::Show(bool show)
MacSuperShown( show ) ;
if ( !show )
{
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
wxWindowMac* win = wxFindWinFromMacWindow( window ) ;
if ( win && !win->m_isBeingDeleted )
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
// either a non gray background color or a non control window
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
wxWindowMac* parent = GetParent() ;
while( parent )
@@ -902,7 +902,7 @@ const wxBrush& wxWindowMac::MacGetBackgroundBrush()
extent.top-- ;
extent.right = x + size.x ;
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 ;
}
}
@@ -932,7 +932,7 @@ void wxWindowMac::OnNcPaint( wxNcPaintEvent& event )
wxWindowDC dc(this) ;
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
@@ -1120,7 +1120,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
SectRect( &scrollrect , &r , &scrollrect ) ;
}
ScrollRect( &scrollrect , dx , dy , updateRgn ) ;
InvalWindowRgn( MacGetRootWindow() , updateRgn ) ;
InvalWindowRgn( (WindowRef) MacGetRootWindow() , updateRgn ) ;
DisposeRgn( updateRgn ) ;
}
@@ -1309,7 +1309,7 @@ bool wxWindowMac::MacGetWindowFromPointSub( const wxPoint &point , wxWindowMac**
return FALSE;
}
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
wxPoint newPoint( point ) ;
@@ -1363,7 +1363,7 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event)
if ( IsKindOf( CLASSINFO ( wxStaticBox ) ) )
return FALSE ;
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
event.m_x -= m_x;
event.m_y -= m_y;
@@ -1425,7 +1425,7 @@ void wxWindowMac::Update()
wxTopLevelWindowMac* wxWindowMac::MacGetTopLevelWindow() const
{
wxTopLevelWindowMac* win = NULL ;
WindowRef window = MacGetRootWindow() ;
WindowRef window = (WindowRef) MacGetRootWindow() ;
if ( window )
{
win = wxFindWinFromMacWindow( window ) ;
@@ -1510,19 +1510,20 @@ const wxRegion& wxWindowMac::MacGetVisibleRegion()
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
// 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
RgnHandle ownUpdateRgn = NewRgn() ;
CopyRgn( updatergn , ownUpdateRgn ) ;
SectRgn( ownUpdateRgn , MacGetVisibleRegion().GetWXHRGN() , ownUpdateRgn ) ;
SectRgn( ownUpdateRgn , (RgnHandle) MacGetVisibleRegion().GetWXHRGN() , ownUpdateRgn ) ;
// newupdate is the update region in client coordinates
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 ;
@@ -1711,7 +1712,7 @@ bool wxWindowMac::AcceptsFocus() const
return MacCanFocus() && wxWindowBase::AcceptsFocus();
}
ControlHandle wxWindowMac::MacGetContainerForEmbedding()
WXWidget wxWindowMac::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 ) ;
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 ) ;
MacPostControlCreate() ;
@@ -46,13 +46,13 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
void wxCheckBox::SetValue(bool val)
{
::SetControlValue( m_macControl , val ) ;
::SetControlValue( (ControlHandle) m_macControl , val ) ;
MacRedrawControl() ;
}
bool wxCheckBox::GetValue() const
{
return ::GetControlValue( m_macControl ) ;
return ::GetControlValue( (ControlHandle) m_macControl ) ;
}
void wxCheckBox::Command (wxCommandEvent & event)
@@ -61,7 +61,7 @@ void wxCheckBox::Command (wxCommandEvent & event)
ProcessCommand (event);
}
void wxCheckBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxCheckBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
SetValue( !GetValue() ) ;
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.
if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
}
// Restore the saved clip region.
@@ -127,10 +127,10 @@ static pascal void wxMacCheckListDefinition( short message, Boolean isSelected,
// appropriate QuickDraw transform mode.
GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( (CGrafPtr) grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr) grafPtr, savedPenMode );
break;
default :
break ;
@@ -183,36 +183,36 @@ bool wxCheckListBox::Create(wxWindow *parent,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
14, 14, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag,
GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false);
SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else
long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false ,
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ;
ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL )
if ( (**(ListHandle)m_macList).listDefProc != NULL )
{
(**ldef).instruction = 0x4EF9; /* JMP instruction */
(**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 ;
LCellSize( pt , m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ;
LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif
OptionBits options = 0;
if ( style & wxLB_MULTIPLE )
@@ -227,7 +227,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
{
options = lOnlyOne ;
}
SetListSelectionFlags(m_macList, options);
SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ;
@@ -236,7 +236,7 @@ bool wxCheckListBox::Create(wxWindow *parent,
Append( choices[i] ) ;
}
LSetDrawingMode( true , m_macList ) ;
LSetDrawingMode( true , (ListHandle) m_macList ) ;
return TRUE;
}
@@ -358,8 +358,8 @@ void wxCheckListBox::OnLeftClick(wxMouseEvent& event)
GetListVisibleCells( m_macList , &visible ) ;
topcell = visible.top ;
#else
lineheight = (**m_macList).cellSize.v ;
topcell = (**m_macList).visible.top ;
lineheight = (**(ListHandle)m_macList).cellSize.v ;
topcell = (**(ListHandle)m_macList).visible.top ;
#endif
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 ) ;
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 ) ;
m_macPopUpMenuHandle = NewUniqueMenu() ;
SetControlData( m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
SetControlMinimum( m_macControl , 0 ) ;
SetControlMaximum( m_macControl , 0) ;
SetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlPopupButtonMenuHandleTag , sizeof( MenuHandle ) , (char*) &m_macPopUpMenuHandle) ;
SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( (ControlHandle) m_macControl , 0) ;
if ( n > 0 )
SetControlValue( m_macControl , 1 ) ;
SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ;
@@ -72,12 +72,12 @@ int wxChoice::DoAppend(const wxString& item)
{
Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ;
AppendMenu( MAC_WXHMENU( m_macPopUpMenuHandle ) , label ) ;
m_strings.Add( item ) ;
m_datas.Add( NULL ) ;
int index = m_strings.GetCount() - 1 ;
DoSetItemClientData( index , NULL ) ;
SetControlMaximum( m_macControl , GetCount()) ;
SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
return index ;
}
@@ -90,10 +90,10 @@ void wxChoice::Delete(int n)
delete GetClientObject(n);
}
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ;
::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , n + 1) ;
m_strings.Remove( n ) ;
m_datas.RemoveAt( n ) ;
SetControlMaximum( m_macControl , GetCount()) ;
SetControlMaximum( (ControlHandle) m_macControl , GetCount()) ;
}
void wxChoice::Clear()
@@ -102,11 +102,11 @@ void wxChoice::Clear()
for ( int i = 0 ; i < GetCount() ; i++ )
{
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ;
::DeleteMenuItem( MAC_WXHMENU(m_macPopUpMenuHandle) , 1 ) ;
}
m_strings.Empty() ;
m_datas.Empty() ;
SetControlMaximum( m_macControl , 0 ) ;
SetControlMaximum( (ControlHandle) m_macControl , 0 ) ;
}
void wxChoice::Free()
@@ -127,12 +127,12 @@ void wxChoice::Free()
int wxChoice::GetSelection() const
{
return GetControlValue( m_macControl ) -1 ;
return GetControlValue( (ControlHandle) m_macControl ) -1 ;
}
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);
}
void wxChoice::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
event.SetInt(GetSelection());

View File

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

View File

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

View File

@@ -22,9 +22,12 @@ IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject)
// Colour
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green ) ;
static void wxComposeRGBColor( RGBColor * col , int red, int blue, int green )
#include "wx/mac/private.h"
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->blue = (blue << 8) + blue;
col->green = (green << 8) + green;
@@ -55,7 +58,7 @@ wxColour::wxColour (const wxColour& col)
m_blue = col.m_blue;
m_isInit = col.m_isInit;
m_pixel = col.m_pixel;
memcpy( &m_pixel , &col.m_pixel , 6 ) ;
}
wxColour::wxColour (const wxColour* col)
@@ -65,7 +68,7 @@ wxColour::wxColour (const wxColour* col)
m_blue = col->m_blue;
m_isInit = col->m_isInit;
m_pixel = col->m_pixel;
memcpy( &m_pixel , &col->m_pixel , 6 ) ;
}
wxColour& wxColour::operator =(const wxColour& col)
@@ -75,7 +78,7 @@ wxColour& wxColour::operator =(const wxColour& col)
m_blue = col.m_blue;
m_isInit = col.m_isInit;
m_pixel = col.m_pixel;
memcpy( &m_pixel , &col.m_pixel , 6 ) ;
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 ) ;
}
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 ) ;
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 ) ;
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++ )
{
Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , choices[i] ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ;
AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
}
SetControlMinimum( m_macControl , 0 ) ;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlValue( m_macControl , 1 ) ;
SetControlMinimum( (ControlHandle) m_macControl , 0 ) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
SetControlValue( (ControlHandle) m_macControl , 1 ) ;
MacPostControlCreate() ;
@@ -139,37 +139,37 @@ void wxComboBox::Append(const wxString& item)
{
Str255 label;
wxMenuItem::MacBuildMenuString( label , NULL , NULL , item ,false);
AppendMenu( m_macPopUpMenuHandle , label ) ;
AppendMenu( (MenuHandle) m_macPopUpMenuHandle , label ) ;
m_noStrings ++;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
}
void wxComboBox::Delete(int n)
{
wxASSERT( n < m_noStrings ) ;
::DeleteMenuItem( m_macPopUpMenuHandle , n + 1) ;
::DeleteMenuItem( (MenuHandle) m_macPopUpMenuHandle , n + 1) ;
m_noStrings --;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
}
void wxComboBox::Clear()
{
for ( int i = 0 ; i < m_noStrings ; i++ )
{
::DeleteMenuItem( m_macPopUpMenuHandle , 1 ) ;
::DeleteMenuItem((MenuHandle) m_macPopUpMenuHandle , 1 ) ;
}
m_noStrings = 0;
SetControlMaximum( m_macControl , m_noStrings) ;
SetControlMaximum( (ControlHandle) m_macControl , m_noStrings) ;
}
int wxComboBox::GetSelection() const
{
return GetControlValue( m_macControl ) -1 ;
return GetControlValue( (ControlHandle) m_macControl ) -1 ;
}
void wxComboBox::SetSelection(int n)
{
SetControlValue( m_macControl , n + 1 ) ;
SetControlValue( (ControlHandle) m_macControl , n + 1 ) ;
}
int wxComboBox::FindString(const wxString& s) const
@@ -186,7 +186,7 @@ wxString wxComboBox::GetString(int n) const
{
Str255 p_text ;
char c_text[255];
::GetMenuItemText( m_macPopUpMenuHandle , n+1 , p_text ) ;
::GetMenuItemText( (MenuHandle) m_macPopUpMenuHandle , n+1 , p_text ) ;
#if TARGET_CARBON
p2cstrcpy( c_text, p_text ) ;
#else
@@ -217,7 +217,7 @@ bool wxComboBox::SetStringSelection(const wxString& sel)
return FALSE;
}
void wxComboBox::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
void wxComboBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId );
event.SetInt(GetSelection());

View File

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

View File

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

View File

@@ -20,6 +20,8 @@
#include "wx/region.h"
#include "wx/image.h"
#include "wx/mac/private.h"
#if __MSL__ >= 0x6000
#include "math.h"
#endif
@@ -42,6 +44,10 @@ IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject)
const double M_PI = 3.14159265358979 ;
#endif
const double RAD2DEG = 180.0 / M_PI;
const short kEmulatedMode = -1 ;
const short kUnsupportedMode = -2 ;
#define wxMAC_EXPERIMENTAL_PATTERN 0
//-----------------------------------------------------------------------------
// Local functions
@@ -55,6 +61,95 @@ static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; }
// 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()
{
m_ok = FALSE;
@@ -78,9 +173,6 @@ wxDC::wxDC()
m_needComputeScaleX = FALSE;
m_needComputeScaleY = FALSE;
m_maxX = m_maxY = -100000;
m_minY = m_minY = 100000;
m_macPort = NULL ;
m_macMask = NULL ;
m_ok = FALSE ;
@@ -89,19 +181,19 @@ wxDC::wxDC()
m_macBrushInstalled = false ;
m_macPenInstalled = false ;
m_macLocalOrigin.h = m_macLocalOrigin.v = 0 ;
m_macLocalOrigin.x = m_macLocalOrigin.y = 0 ;
m_macBoundaryClipRgn = NewRgn() ;
m_macCurrentClipRgn = NewRgn() ;
SetRectRgn( m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
SetRectRgn( (RgnHandle) m_macCurrentClipRgn , -32000 , -32000 , 32000 , 32000 ) ;
m_pen = *wxBLACK_PEN;
m_font = *wxNORMAL_FONT;
m_brush = *wxWHITE_BRUSH;
}
wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) :
m_ph( dc->m_macPort )
m_ph( (GrafPtr) dc->m_macPort )
{
wxASSERT( dc->Ok() ) ;
@@ -114,12 +206,12 @@ wxMacPortSetter::~wxMacPortSetter()
wxDC::~wxDC(void)
{
DisposeRgn( m_macBoundaryClipRgn ) ;
DisposeRgn( m_macCurrentClipRgn ) ;
DisposeRgn( (RgnHandle) m_macBoundaryClipRgn ) ;
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_macBrushInstalled = false ;
@@ -159,18 +251,18 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( bmp.GetBitmapType() == kMacBitmapTypePict ) {
Rect bitmaprect = { 0 , 0 , hh, ww };
::OffsetRect( &bitmaprect, xx, yy ) ;
::DrawPicture( bmp.GetPict(), &bitmaprect ) ;
::DrawPicture( (PicHandle) bmp.GetPict(), &bitmaprect ) ;
}
else if ( bmp.GetBitmapType() == kMacBitmapTypeGrafWorld )
{
GWorldPtr bmapworld = bmp.GetHBITMAP();
GWorldPtr bmapworld = MAC_WXHBITMAP( bmp.GetHBITMAP() );
PixMapHandle bmappixels ;
// Set foreground and background colours (for bitmaps depth = 1)
if(bmp.GetDepth() == 1)
{
RGBColor fore = m_textForegroundColour.GetPixel();
RGBColor back = m_textBackgroundColour.GetPixel();
RGBColor fore = MAC_WXCOLORREF(m_textForegroundColour.GetPixel());
RGBColor back = MAC_WXCOLORREF(m_textBackgroundColour.GetPixel());
RGBForeColor(&fore);
RGBBackColor(&back);
}
@@ -192,21 +284,21 @@ void wxDC::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool useMask
if ( useMask && bmp.GetMask() )
{
if( LockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap())))
if( LockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap()))))
{
CopyDeepMask
(
GetPortBitMapForCopyBits(bmapworld),
GetPortBitMapForCopyBits(bmp.GetMask()->GetMaskBitmap()),
GetPortBitMapForCopyBits( m_macPort ),
GetPortBitMapForCopyBits(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())),
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &source, &dest, mode, NULL
);
UnlockPixels(GetGWorldPixMap(bmp.GetMask()->GetMaskBitmap()));
UnlockPixels(GetGWorldPixMap(MAC_WXHBITMAP(bmp.GetMask()->GetMaskBitmap())));
}
}
else {
CopyBits( GetPortBitMapForCopyBits( bmapworld ),
GetPortBitMapForCopyBits( m_macPort ),
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ),
&source, &dest, mode, NULL ) ;
}
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() } ;
OffsetRect( &bitmaprect, xx, yy ) ;
PlotCIconHandle( &bitmaprect , atNone , ttNone , bmp.GetHICON() ) ;
PlotCIconHandle( &bitmaprect , atNone , ttNone , MAC_WXHICON(bmp.GetHICON()) ) ;
}
m_macPenInstalled = false ;
m_macBrushInstalled = false ;
@@ -241,8 +333,8 @@ void wxDC::DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord hei
ww = XLOG2DEVREL(width);
hh = YLOG2DEVREL(height);
SetRectRgn( m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
SectRgn( m_macCurrentClipRgn , m_macBoundaryClipRgn , m_macCurrentClipRgn ) ;
SetRectRgn( (RgnHandle) m_macCurrentClipRgn , xx , yy , xx + ww , yy + hh ) ;
SectRgn( (RgnHandle) m_macCurrentClipRgn , (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
if( m_clipping )
{
@@ -290,12 +382,12 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
}
else
{
CopyRgn( region.GetWXHRGN() , m_macCurrentClipRgn ) ;
CopyRgn( (RgnHandle) region.GetWXHRGN() , (RgnHandle) m_macCurrentClipRgn ) ;
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 )
{
m_clipX1 = wxMax( m_clipX1 , xx );
@@ -318,7 +410,7 @@ void wxDC::DoSetClippingRegionAsRegion( const wxRegion &region )
void wxDC::DestroyClippingRegion()
{
wxMacPortSetter helper(this) ;
CopyRgn( m_macBoundaryClipRgn , m_macCurrentClipRgn ) ;
CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;
m_clipping = FALSE;
}
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_signY = (yBottomUp ? -1 : 1);
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
{
return wxSize(72, 72);
@@ -787,13 +872,19 @@ void wxDC::DoDrawPolygon(int n, wxPoint points[],
y1 = YLOG2DEVMAC(points[0].y + yoffset);
::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);
y2 = YLOG2DEVMAC(points[i+1].y + yoffset);
x2 = XLOG2DEVMAC(points[i].x + xoffset);
y2 = YLOG2DEVMAC(points[i].y + yoffset);
::LineTo(x2, y2);
}
// close the polyline if necessary
if ( x1 != x2 || y1 != y2 )
{
::LineTo(x1,y1 ) ;
}
ClosePoly();
if (m_brush.GetStyle() != wxTRANSPARENT)
@@ -959,25 +1050,20 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
{
wxCHECK_MSG(Ok(), false, wxT("wxDC::DoBlit Illegal dc"));
wxCHECK_MSG(source->Ok(), false, wxT("wxDC::DoBlit Illegal source DC"));
wxMacPortSetter helper(this) ;
/* TODO: use the mask origin when drawing transparently */
if ( logical_func == wxNO_OP )
return TRUE ;
if (xsrcMask == -1 && ysrcMask == -1)
{
xsrcMask = xsrc; ysrcMask = ysrc;
}
CGrafPtr sourcePort = (CGrafPtr) source->m_macPort ;
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 ) ;
// correct the parameter in case this dc does not have a mask at all
if ( useMask && !source->m_macMask )
useMask = false ;
if ( LockPixels(bmappixels) )
{
Rect srcrect , dstrect ;
srcrect.top = source->YLOG2DEVMAC(ysrc) ;
srcrect.left = source->XLOG2DEVMAC(xsrc) ;
@@ -988,54 +1074,199 @@ bool wxDC::DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
dstrect.bottom = YLOG2DEVMAC(ydest + height ) ;
dstrect.right = XLOG2DEVMAC(xdest + width ) ;
short mode = (logical_func == wxCOPY ? srcCopy :
// logical_func == wxCLEAR ? WHITENESS :
// logical_func == wxSET ? BLACKNESS :
logical_func == wxINVERT ? hilite :
// logical_func == wxAND ? MERGECOPY :
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 );
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 ;
PixMapHandle bmappixels = GetGWorldPixMap( sourcePort ) ;
if ( LockPixels(bmappixels) )
{
wxMacPortSetter helper(this) ;
RGBColor tempColor ;
if ( source->GetDepth() == 1 )
{
RGBForeColor( &MAC_WXCOLORREF(m_textForegroundColour.GetPixel()) ) ;
RGBBackColor( &MAC_WXCOLORREF(m_textBackgroundColour.GetPixel()) ) ;
}
else
{
// the modes need this, otherwise we'll end up having really nice colors...
RGBColor white = { 0xFFFF, 0xFFFF,0xFFFF} ;
RGBColor black = { 0,0,0} ;
RGBForeColor( &black ) ;
RGBBackColor( &white ) ;
}
if ( useMask && source->m_macMask )
{
if ( mode == srcCopy )
{
if ( LockPixels( GetGWorldPixMap( source->m_macMask ) ) )
if ( LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) )
{
CopyMask( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( source->m_macMask ) ,
GetPortBitMapForCopyBits( m_macPort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(source->m_macMask) ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &srcrect , &dstrect ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
}
}
else
{
RgnHandle clipRgn = NewRgn() ;
LockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( source->m_macMask ) ) ;
UnlockPixels( GetGWorldPixMap( source->m_macMask ) ) ;
//OffsetRgn( clipRgn , -source->m_macMask->portRect.left , -source->m_macMask->portRect.top ) ;
LockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
BitMapToRegion( clipRgn , (BitMap*) *GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
UnlockPixels( GetGWorldPixMap( MAC_WXHBITMAP(source->m_macMask) ) ) ;
OffsetRgn( clipRgn , -srcrect.left + dstrect.left, -srcrect.top + dstrect.top ) ;
if ( mode == kEmulatedMode )
{
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( m_macPort ) ,
GetPortBitMapForCopyBits( MAC_WXHBITMAP(m_macPort) ) ,
&srcrect, &dstrect, mode, clipRgn ) ;
}
DisposeRgn( clipRgn ) ;
}
}
else
{
if ( mode == kEmulatedMode )
{
CopyBits( GetPortBitMapForCopyBits( sourcePort ) ,
GetPortBitMapForCopyBits( m_macPort ) ,
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 ) ;
}
@@ -1100,8 +1331,8 @@ void wxDC::DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y,
// prepare to blit-with-rotate the bitmap to the DC
wxImage image(src);
RGBColor colText = m_textForegroundColour.GetPixel();
RGBColor colBack = m_textBackgroundColour.GetPixel();
RGBColor colText = MAC_WXCOLORREF( m_textForegroundColour.GetPixel() );
RGBColor colBack = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel() );
unsigned char *data = image.GetData();
@@ -1336,7 +1567,8 @@ void wxDC::Clear(void)
if (m_backgroundBrush.GetStyle() != wxTRANSPARENT)
{
MacInstallBrush() ;
MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
::EraseRect( &rect ) ;
}
}
@@ -1360,8 +1592,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ;
m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel();
RGBColor backcolor = m_textBackgroundColour.GetPixel();
RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor );
}
@@ -1380,8 +1612,8 @@ void wxDC::MacInstallFont() const
m_macBrushInstalled = false ;
m_macPenInstalled = false ;
RGBColor forecolor = m_textForegroundColour.GetPixel();
RGBColor backcolor = m_textBackgroundColour.GetPixel();
RGBColor forecolor = MAC_WXCOLORREF( m_textForegroundColour.GetPixel());
RGBColor backcolor = MAC_WXCOLORREF( m_textBackgroundColour.GetPixel());
::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor );
}
@@ -1470,8 +1702,8 @@ void wxDC::MacInstallPen() const
// if ( m_macPenInstalled )
// return ;
RGBColor forecolor = m_pen.GetColour().GetPixel();
RGBColor backcolor = m_backgroundBrush.GetColour().GetPixel();
RGBColor forecolor = MAC_WXCOLORREF( m_pen.GetColour().GetPixel());
RGBColor backcolor = MAC_WXCOLORREF( m_backgroundBrush.GetColour().GetPixel());
::RGBForeColor( &forecolor );
::RGBBackColor( &backcolor );
@@ -1604,7 +1836,7 @@ void wxDC::MacSetupBackgroundForCurrentPort(const wxBrush& background )
}
case kwxMacBrushColour :
{
::RGBBackColor( &background.GetColour().GetPixel() );
::RGBBackColor( &MAC_WXCOLORREF( background.GetColour().GetPixel()) );
int brushStyle = background.GetStyle();
if (brushStyle == wxSOLID)
::BackPat(GetQDGlobalsWhite(&whiteColor));
@@ -1633,7 +1865,9 @@ void wxDC::MacInstallBrush() const
// foreground
::RGBForeColor( &m_brush.GetColour().GetPixel() );
bool backgroundTransparent = (GetBackgroundMode() == wxTRANSPARENT) ;
::RGBForeColor( &MAC_WXCOLORREF( m_brush.GetColour().GetPixel()) );
int brushStyle = m_brush.GetStyle();
if (brushStyle == wxSOLID)
@@ -1646,62 +1880,109 @@ void wxDC::MacInstallBrush() const
}
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
wxBitmap* bitmap = m_brush.GetStipple() ;
int width = bitmap->GetWidth() ;
int height = bitmap->GetHeight() ;
int depth = bitmap->GetDepth() ;
GWorldPtr gw = NULL ;
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 )
{
GWorldPtr gw = bitmap->GetHBITMAP() ;
if ( width == 8 && height == 8 && depth == 1)
if ( (**gwpixmaphandle).pixelSize == 1 )
isMonochrome = true ;
}
if ( isMonochrome )
{
::RGBForeColor( &MAC_WXCOLORREF( m_textForegroundColour.GetPixel()) );
BitMap* gwbitmap = (BitMap*) *gwpixmaphandle ; // since the color depth is 1 it is a BitMap
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
int alignment = gwbitmap->rowBytes & 0x7FFF ;
if( width == 8 && height == 8 )
{
Pattern pat ;
LockPixels( GetGWorldPixMap( gw ) ) ;
BitMap* gwbitmap = (BitMap*) *GetGWorldPixMap( gw ) ; // since the color depth is 1 it is a BitMap
int alignment = gwbitmap->rowBytes & 0x7FFF ;
UInt8 *gwbits = (UInt8*) gwbitmap->baseAddr ;
for ( int i = 0 ; i < 8 ; ++i )
{
pat.pat[i] = gwbits[i*alignment+0] ;
}
UnlockPixels( GetGWorldPixMap( gw ) ) ;
::PenPat( &pat ) ;
}
else
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
}
else if (m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE )
#if wxMAC_EXPERIMENTAL_PATTERN
// 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 )
{
::RGBForeColor( &m_textForegroundColour.GetPixel() );
::RGBForeColor( &m_textBackgroundColour.GetPixel() );
::PenPat(GetQDGlobalsBlack(&blackColor));
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
{
}
UnlockPixels( gwpixmaphandle ) ;
}
else
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
// background
MacSetupBackgroundForCurrentPort( m_backgroundBrush ) ;
// todo :
if ( !backgroundTransparent )
::RGBBackColor( &MAC_WXCOLORREF( m_textBackgroundColour.GetPixel()) ) ;
short mode = patCopy ;
switch( m_logicalFunction )
{
case wxCOPY: // src
if ( backgroundTransparent )
mode = patOr ;
else
mode = patCopy ;
break ;
case wxINVERT: // NOT dst
if ( !backgroundTransparent )
{
::PenPat(GetQDGlobalsBlack(&blackColor));
}
mode = patXor ;
break ;
case wxXOR: // src XOR dst

View File

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

View File

@@ -14,6 +14,7 @@
#endif
#include "wx/dcmemory.h"
#include "wx/mac/private.h"
//-----------------------------------------------------------------------------
// wxMemoryDC
@@ -43,7 +44,7 @@ wxMemoryDC::~wxMemoryDC()
{
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() )
{
UnlockPixels( GetGWorldPixMap(m_selected.GetHBITMAP()) );
UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );
}
m_selected = bitmap;
if (m_selected.Ok())

View File

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

View File

@@ -20,6 +20,8 @@
#include "wx/cmndata.h"
#include "wx/mac/private.h"
#ifdef __DARWIN__
#include <Carbon/Carbon.h>
#else
@@ -30,423 +32,11 @@
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
#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,
const wxString& defaultPath,
long style, const wxPoint& pos)
{
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message;
m_dialogStyle = style;
m_parent = parent;
@@ -455,51 +45,6 @@ wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
int wxDirDialog::ShowModal()
{
#if !TARGET_CARBON
if ( !gUseNavServices )
{
Str255 prompt ;
Str255 path ;
#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);
DisposeRoutineDescriptor(invisiblesExcludedCustomFilterUPP);
if ( reply.sfGood == false )
{
m_path = "" ;
return wxID_CANCEL ;
}
else
{
m_path = wxMacFSSpec2MacFilename( &reply.sfFile ) ;
return wxID_OK ;
}
return wxID_CANCEL;
}
else
#endif
{
NavDialogOptions mNavOptions;
NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ;
@@ -593,7 +138,5 @@ int wxDirDialog::ShowModal()
return wxID_OK ;
}
return wxID_CANCEL;
}
}

View File

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

View File

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

View File

@@ -31,6 +31,8 @@ IMPLEMENT_CLASS(wxFileDialog, wxDialog)
// begin wxmac
#include "wx/mac/private.h"
#include <Navigation.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 )
{
@@ -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)
{
Str255 filename ;
@@ -541,6 +310,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
long style, const wxPoint& pos)
{
wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
m_message = message;
m_dialogStyle = style;
m_parent = parent;
@@ -578,70 +348,6 @@ pascal Boolean CrossPlatformFilterCallback (
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;
NavObjectFilterUPP mNavFilterUPP = NULL;
NavPreviewUPP mNavPreviewUPP = NULL ;
@@ -800,7 +506,6 @@ int wxFileDialog::ShowModal()
return wxID_OK ;
}
return wxID_CANCEL;
}
}
// Generic file load/save dialog

View File

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

View File

@@ -37,6 +37,8 @@
#include "wx/fontmap.h"
#include "wx/fontutil.h"
#include "wx/mac/private.h"
// ----------------------------------------------------------------------------
// 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 ) ;
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 ) ;
MacPostControlCreate() ;
@@ -60,13 +60,13 @@ void wxGauge::SetBezelFace(int w)
void wxGauge::SetRange(int r)
{
m_rangeMax = r;
::SetControlMaximum( m_macControl , m_rangeMax ) ;
::SetControlMaximum( (ControlHandle) m_macControl , m_rangeMax ) ;
}
void wxGauge::SetValue(int pos)
{
m_gaugePos = pos;
::SetControlValue( m_macControl , m_gaugePos ) ;
::SetControlValue( (ControlHandle) m_macControl , m_gaugePos ) ;
}
int wxGauge::GetShadowWidth() const

View File

@@ -45,7 +45,7 @@ wxGLContext::wxGLContext(
{
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);
wxCHECK_RET( m_glContext, wxT("Couldn't create OpenGl context") );
@@ -251,7 +251,7 @@ void wxGLCanvas::SetViewport()
int width, height;
GetClientSize(& width, & height);
Rect bounds ;
GetWindowPortBounds( MacGetRootWindow() , &bounds ) ;
GetWindowPortBounds( MAC_WXHWND(MacGetRootWindow()) , &bounds ) ;
GLint parms[4] ;
parms[0] = x ;
parms[1] = bounds.bottom - bounds.top - ( y + height ) ;

View File

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

View File

@@ -19,6 +19,9 @@
IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)
#endif
#include "wx/mac/private.h"
/*
* 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)
{
LoadFile(icon_file, flags, desiredWidth, desiredHeight);
LoadFile(icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight);
}
wxIcon::~wxIcon()
{
}
bool wxIcon::LoadFile(const wxString& filename, long type,
bool wxIcon::LoadFile(const wxString& filename, wxBitmapType type,
int desiredWidth, int desiredHeight)
{
UnRef();

View File

@@ -93,10 +93,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode.
if( isSelected ) {
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr) grafPtr );
SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
}
// Restore the saved clip region.
@@ -111,10 +111,10 @@ static pascal void wxMacListDefinition( short message, Boolean isSelected, Rect
// appropriate QuickDraw transform mode.
GetPort( &grafPtr );
savedPenMode = GetPortPenMode( grafPtr );
SetPortPenMode( grafPtr, hilitetransfermode );
savedPenMode = GetPortPenMode( (CGrafPtr)grafPtr );
SetPortPenMode( (CGrafPtr)grafPtr, hilitetransfermode );
PaintRect( drawRect );
SetPortPenMode( grafPtr, savedPenMode );
SetPortPenMode( (CGrafPtr)grafPtr, savedPenMode );
break;
default :
break ;
@@ -171,36 +171,36 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
CreateListBoxControl( parent->MacGetRootWindow(), &bounds, false, 0, 1, false, true,
kwxMacListItemHeight, kwxMacListItemHeight, false, &listDef, &m_macControl );
GetControlData(m_macControl, kControlNoPart, kControlListBoxListHandleTag,
GetControlData( (ControlHandle) m_macControl, kControlNoPart, kControlListBoxListHandleTag,
sizeof(ListHandle), (Ptr) &m_macList, &asize);
SetControlReference(m_macControl, (long) this);
SetControlVisibility(m_macControl, false, false);
SetControlReference( (ControlHandle) m_macControl, (long) this);
SetControlVisibility( (ControlHandle) m_macControl, false, false);
#else
long result ;
m_macControl = ::NewControl( parent->MacGetRootWindow() , &bounds , title , false ,
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false ,
kwxMacListWithVerticalScrollbar , 0 , 0,
kControlListBoxProc , (long) this ) ;
::GetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
::GetControlData( (ControlHandle) m_macControl , kControlNoPart , kControlListBoxListHandleTag ,
sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
HLock( (Handle) m_macList ) ;
ldefHandle ldef ;
ldef = (ldefHandle) NewHandle( sizeof(ldefRec) ) ;
if ( (**m_macList).listDefProc != NULL )
if ( (**(ListHandle)m_macList).listDefProc != NULL )
{
(**ldef).instruction = 0x4EF9; /* JMP instruction */
(**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 ;
LCellSize( pt , m_macList ) ;
LAddColumn( 1 , 0 , m_macList ) ;
LCellSize( pt , (ListHandle)m_macList ) ;
LAddColumn( 1 , 0 , (ListHandle)m_macList ) ;
#endif
OptionBits options = 0;
if ( style & wxLB_MULTIPLE )
@@ -215,7 +215,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
{
options = lOnlyOne ;
}
SetListSelectionFlags(m_macList, options);
SetListSelectionFlags((ListHandle)m_macList, options);
MacPostControlCreate() ;
@@ -224,7 +224,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
Append( choices[i] ) ;
}
LSetDrawingMode( true , m_macList ) ;
LSetDrawingMode( true , (ListHandle)m_macList ) ;
return TRUE;
}
@@ -235,8 +235,8 @@ wxListBox::~wxListBox()
if ( m_macList )
{
#if !TARGET_CARBON
DisposeHandle( (**m_macList).listDefProc ) ;
(**m_macList).listDefProc = NULL ;
DisposeHandle( (**(ListHandle)m_macList).listDefProc ) ;
(**(ListHandle)m_macList).listDefProc = NULL ;
#endif
m_macList = NULL ;
}
@@ -272,7 +272,7 @@ void wxListBox::DoSetSize(int x, int y,
wxControl::DoSetSize( x , y , width , height , sizeFlags ) ;
#if TARGET_CARBON
Rect bounds ;
GetControlBounds( m_macControl , &bounds ) ;
GetControlBounds( (ControlHandle) m_macControl , &bounds ) ;
ControlRef control = GetListVerticalScrollBar( m_macList ) ;
if ( control )
{
@@ -633,7 +633,7 @@ void MacDrawStringCell(Rect *cellRect, Cell lCell, ListHandle theList, long refC
void wxListBox::MacDelete( int N )
{
LDelRow( 1 , N , m_macList) ;
LDelRow( 1 , N , (ListHandle)m_macList) ;
Refresh();
}
@@ -641,7 +641,7 @@ void wxListBox::MacInsert( int n , const char * text)
{
Cell cell = { 0 , 0 } ;
cell.v = n ;
LAddRow( 1 , cell.v , m_macList ) ;
LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList);
Refresh();
}
@@ -649,15 +649,15 @@ void wxListBox::MacInsert( int n , const char * text)
void wxListBox::MacAppend( const char * text)
{
Cell cell = { 0 , 0 } ;
cell.v = (**m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , m_macList ) ;
cell.v = (**(ListHandle)m_macList).dataBounds.bottom ;
LAddRow( 1 , cell.v , (ListHandle)m_macList ) ;
// LSetCell(text, strlen(text), cell, m_macList);
Refresh();
}
void wxListBox::MacClear()
{
LDelRow( (**m_macList).dataBounds.bottom , 0 , m_macList ) ;
LDelRow( (**(ListHandle)m_macList).dataBounds.bottom , 0 ,(ListHandle) m_macList ) ;
Refresh();
}
@@ -666,15 +666,15 @@ void wxListBox::MacSetSelection( int n , bool select )
Cell cell = { 0 , 0 } ;
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 ;
LSetSelect( select , cell , m_macList ) ;
LAutoScroll( m_macList ) ;
LSetSelect( select , cell , (ListHandle)m_macList ) ;
LAutoScroll( (ListHandle)m_macList ) ;
Refresh();
}
@@ -682,7 +682,7 @@ bool wxListBox::MacIsSelected( int n ) const
{
Cell cell = { 0 , 0 } ;
cell.v = n ;
return LGetSelect( false , &cell , m_macList ) ;
return LGetSelect( false , &cell , (ListHandle)m_macList ) ;
}
void wxListBox::MacDestroy()
@@ -693,7 +693,7 @@ void wxListBox::MacDestroy()
int wxListBox::MacGetSelection() const
{
Cell cell = { 0 , 0 } ;
if ( LGetSelect( true , &cell , m_macList ) )
if ( LGetSelect( true , &cell , (ListHandle)m_macList ) )
return cell.v ;
else
return -1 ;
@@ -708,7 +708,7 @@ int wxListBox::MacGetSelections( wxArrayInt& aSelections ) const
Cell cell = { 0 , 0 } ;
cell.v = 0 ;
while ( LGetSelect( true , &cell , m_macList ) )
while ( LGetSelect( true , &cell ,(ListHandle) m_macList ) )
{
aSelections.Add( cell.v ) ;
no_sel++ ;
@@ -739,18 +739,18 @@ void wxListBox::OnSize( const wxSizeEvent &event)
#if TARGET_CARBON
GetListCellSize(m_macList, &pt);
#else
pt = (**m_macList).cellSize ;
pt = (**(ListHandle)m_macList).cellSize ;
#endif
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 ;
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 )
{
MacDoClick() ;
@@ -763,7 +763,7 @@ void wxListBox::MacHandleControlClick( ControlHandle control , SInt16 controlpar
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/mac/private.h"
#include "wx/mac/macnotfy.h"
const short kMaxEvents = 1000 ;
@@ -74,6 +77,7 @@ void wxMacAddEvent(
short wakeUp )
{
wxMacNotificationEvents *e = (wxMacNotificationEvents *) table ;
wxASSERT_MSG( handler != NULL , "illegal notification proc ptr" ) ;
/* this should be protected eventually */
short index = e->top++ ;
@@ -125,6 +129,7 @@ void wxMacProcessNotifierEvents()
gMacNotificationEvents.events[index] = NULL ;
gMacNotificationEvents.proc[index] = NULL ;
if ( handler )
handler( event , data ) ;
}
gInProcessing = false ;

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