more reformatting

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Surovell
2005-12-15 08:55:15 +00:00
parent b21d67a04d
commit 898d9035fb

View File

@@ -45,6 +45,7 @@
#define MAC_SMALL_SCROLLBAR_SIZE 11 #define MAC_SMALL_SCROLLBAR_SIZE 11
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
#ifndef __DARWIN__ #ifndef __DARWIN__
#include <Windows.h> #include <Windows.h>
#include <ToolUtils.h> #include <ToolUtils.h>
@@ -68,9 +69,9 @@ extern wxList wxPendingDelete;
#ifdef __WXUNIVERSAL__ #ifdef __WXUNIVERSAL__
IMPLEMENT_ABSTRACT_CLASS(wxWindowMac, wxWindowBase) IMPLEMENT_ABSTRACT_CLASS(wxWindowMac, wxWindowBase)
#else // __WXMAC__ #else
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase) IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase)
#endif // __WXUNIVERSAL__/__WXMAC__ #endif
BEGIN_EVENT_TABLE(wxWindowMac, wxWindowBase) BEGIN_EVENT_TABLE(wxWindowMac, wxWindowBase)
EVT_NC_PAINT(wxWindowMac::OnNcPaint) EVT_NC_PAINT(wxWindowMac::OnNcPaint)
@@ -147,8 +148,9 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3 #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3
enum { enum
kEventControlVisibilityChanged = 157 {
kEventControlVisibilityChanged = 157
}; };
#endif #endif
@@ -157,6 +159,7 @@ enum {
static const EventTypeSpec eventList[] = static const EventTypeSpec eventList[] =
{ {
{ kEventClassControl , kEventControlHit } , { kEventClassControl , kEventControlHit } ,
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
{ kEventClassControl , kEventControlDraw } , { kEventClassControl , kEventControlDraw } ,
{ kEventClassControl , kEventControlVisibilityChanged } , { kEventClassControl , kEventControlVisibilityChanged } ,
@@ -168,8 +171,8 @@ static const EventTypeSpec eventList[] =
{ kEventClassService , kEventServiceCopy }, { kEventClassService , kEventServiceCopy },
{ kEventClassService , kEventServicePaste }, { kEventClassService , kEventServicePaste },
// { kEventClassControl , kEventControlInvalidateForSizeChange } , // 10.3 only // { kEventClassControl , kEventControlInvalidateForSizeChange } , // 10.3 only
// { kEventClassControl , kEventControlBoundsChanged } , // { kEventClassControl , kEventControlBoundsChanged } ,
#endif #endif
} ; } ;
@@ -184,7 +187,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
cEvent.GetParameter( kEventParamDirectObject , &controlRef ) ; cEvent.GetParameter( kEventParamDirectObject , &controlRef ) ;
switch( GetEventKind( event ) ) switch ( GetEventKind( event ) )
{ {
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
case kEventControlDraw : case kEventControlDraw :
@@ -193,12 +196,13 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
RgnHandle allocatedRgn = NULL ; RgnHandle allocatedRgn = NULL ;
wxRegion visRegion = thisWindow->MacGetVisibleRegion() ; wxRegion visRegion = thisWindow->MacGetVisibleRegion() ;
Rect controlBounds ; Rect controlBounds ;
if ( thisWindow->GetPeer()->IsCompositing() == false )
if ( ! thisWindow->GetPeer()->IsCompositing() )
{ {
if ( thisWindow->GetPeer()->IsRootControl() == false ) if ( thisWindow->GetPeer()->IsRootControl() )
GetControlBounds( thisWindow->GetPeer()->GetControlRef() , &controlBounds ) ;
else
thisWindow->GetPeer()->GetRect( &controlBounds ) ; thisWindow->GetPeer()->GetRect( &controlBounds ) ;
else
GetControlBounds( thisWindow->GetPeer()->GetControlRef() , &controlBounds ) ;
} }
if ( cEvent.GetParameter<RgnHandle>(kEventParamRgnHandle, &updateRgn) != noErr ) if ( cEvent.GetParameter<RgnHandle>(kEventParamRgnHandle, &updateRgn) != noErr )
@@ -207,11 +211,12 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
} }
else else
{ {
if ( thisWindow->GetPeer()->IsCompositing() == false ) if ( ! thisWindow->GetPeer()->IsCompositing() )
{ {
allocatedRgn = NewRgn() ; allocatedRgn = NewRgn() ;
CopyRgn( updateRgn , allocatedRgn ) ; CopyRgn( updateRgn , allocatedRgn ) ;
OffsetRgn( allocatedRgn , -controlBounds.left , -controlBounds.top ) ; OffsetRgn( allocatedRgn , -controlBounds.left , -controlBounds.top ) ;
// hide the given region by the new region that must be shifted // hide the given region by the new region that must be shifted
wxMacNativeToWindow( thisWindow , allocatedRgn ) ; wxMacNativeToWindow( thisWindow , allocatedRgn ) ;
updateRgn = allocatedRgn ; updateRgn = allocatedRgn ;
@@ -223,6 +228,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
// as this update region is in native window locals we must adapt it to wx window local // as this update region is in native window locals we must adapt it to wx window local
allocatedRgn = NewRgn() ; allocatedRgn = NewRgn() ;
CopyRgn( updateRgn , allocatedRgn ) ; CopyRgn( updateRgn , allocatedRgn ) ;
// hide the given region by the new region that must be shifted // hide the given region by the new region that must be shifted
wxMacNativeToWindow( thisWindow , allocatedRgn ) ; wxMacNativeToWindow( thisWindow , allocatedRgn ) ;
updateRgn = allocatedRgn ; updateRgn = allocatedRgn ;
@@ -232,14 +238,16 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
Rect rgnBounds ; Rect rgnBounds ;
GetRegionBounds( updateRgn , &rgnBounds ) ; GetRegionBounds( updateRgn , &rgnBounds ) ;
#if wxMAC_DEBUG_REDRAW #if wxMAC_DEBUG_REDRAW
if ( thisWindow->MacIsUserPane() ) if ( thisWindow->MacIsUserPane() )
{ {
CGContextRef cgContext = cEvent.GetParameter<CGContextRef>(kEventParamCGContextRef) ;
static float color = 0.5 ; static float color = 0.5 ;
static channel = 0 ; static channel = 0 ;
HIRect bounds; HIRect bounds;
HIViewGetBounds( controlRef, &bounds ); CGContextRef cgContext = cEvent.GetParameter<CGContextRef>(kEventParamCGContextRef) ;
HIViewGetBounds( controlRef, &bounds );
CGContextSetRGBFillColor( cgContext, channel == 0 ? color : 0.5 , CGContextSetRGBFillColor( cgContext, channel == 0 ? color : 0.5 ,
channel == 1 ? color : 0.5 , channel == 2 ? color : 0.5 , 1 ); channel == 1 ? color : 0.5 , channel == 2 ? color : 0.5 , 1 );
CGContextFillRect( cgContext, bounds ); CGContextFillRect( cgContext, bounds );
@@ -253,6 +261,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
} }
} }
#endif #endif
{ {
#if wxMAC_USE_CORE_GRAPHICS #if wxMAC_USE_CORE_GRAPHICS
bool created = false ; bool created = false ;
@@ -263,6 +272,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
// this parameter is not provided on non-composited windows // this parameter is not provided on non-composited windows
created = true ; created = true ;
// rest of the code expects this to be already transformed and clipped for local // rest of the code expects this to be already transformed and clipped for local
CGrafPtr port = GetWindowPort( (WindowRef) thisWindow->MacGetTopLevelWindowRef() ) ; CGrafPtr port = GetWindowPort( (WindowRef) thisWindow->MacGetTopLevelWindowRef() ) ;
Rect bounds ; Rect bounds ;
@@ -288,15 +298,19 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
#endif #endif
} }
thisWindow->MacSetCGContextRef( cgContext ) ; thisWindow->MacSetCGContextRef( cgContext ) ;
{ {
wxMacCGContextStateSaver sg( cgContext ) ; wxMacCGContextStateSaver sg( cgContext ) ;
#endif #endif
if ( thisWindow->MacDoRedraw( updateRgn , cEvent.GetTicks() ) ) if ( thisWindow->MacDoRedraw( updateRgn , cEvent.GetTicks() ) )
result = noErr ; result = noErr ;
#if wxMAC_USE_CORE_GRAPHICS #if wxMAC_USE_CORE_GRAPHICS
thisWindow->MacSetCGContextRef( NULL ) ; thisWindow->MacSetCGContextRef( NULL ) ;
} }
if ( created ) if ( created )
CGContextRelease( cgContext ) ; CGContextRelease( cgContext ) ;
#endif #endif
@@ -325,6 +339,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
{ {
Boolean focusEverything = false ; Boolean focusEverything = false ;
ControlPartCode controlPart = cEvent.GetParameter<ControlPartCode>(kEventParamControlPart , typeControlPartCode ); ControlPartCode controlPart = cEvent.GetParameter<ControlPartCode>(kEventParamControlPart , typeControlPartCode );
#ifdef __WXMAC_OSX__ #ifdef __WXMAC_OSX__
if ( cEvent.GetParameter<Boolean>(kEventParamControlFocusEverything , &focusEverything ) == noErr ) if ( cEvent.GetParameter<Boolean>(kEventParamControlFocusEverything , &focusEverything ) == noErr )
{ {
@@ -339,6 +354,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl
#endif #endif
static bool inKillFocusEvent = false ; static bool inKillFocusEvent = false ;
if ( !inKillFocusEvent ) if ( !inKillFocusEvent )
{ {
inKillFocusEvent = true ; inKillFocusEvent = true ;
@@ -405,16 +421,16 @@ static pascal OSStatus wxMacWindowServiceEventHandler( EventHandlerCallRef handl
if ( textCtrl->IsEditable() ) if ( textCtrl->IsEditable() )
pasteTypes = cEvent.GetParameter< CFMutableArrayRef >( kEventParamServicePasteTypes , typeCFMutableArrayRef ) ; pasteTypes = cEvent.GetParameter< CFMutableArrayRef >( kEventParamServicePasteTypes , typeCFMutableArrayRef ) ;
static const OSType textDataTypes[] = { kTXNTextData /* , 'utxt' , 'PICT', 'MooV', 'AIFF' */ }; static const OSType textDataTypes[] = { kTXNTextData /* , 'utxt', 'PICT', 'MooV', 'AIFF' */ };
for ( size_t i = 0 ; i < WXSIZEOF(textDataTypes) ; ++i ) for ( size_t i = 0 ; i < WXSIZEOF(textDataTypes) ; ++i )
{ {
CFStringRef typestring = CreateTypeStringWithOSType(textDataTypes[i]); CFStringRef typestring = CreateTypeStringWithOSType(textDataTypes[i]);
if ( typestring ) if ( typestring )
{ {
if ( copyTypes ) if ( copyTypes )
CFArrayAppendValue (copyTypes, typestring) ; CFArrayAppendValue(copyTypes, typestring) ;
if ( pasteTypes ) if ( pasteTypes )
CFArrayAppendValue (pasteTypes, typestring) ; CFArrayAppendValue(pasteTypes, typestring) ;
CFRelease( typestring ) ; CFRelease( typestring ) ;
} }
@@ -444,11 +460,11 @@ static pascal OSStatus wxMacWindowServiceEventHandler( EventHandlerCallRef handl
{ {
ScrapRef scrapRef = cEvent.GetParameter< ScrapRef > ( kEventParamScrapRef , typeScrapRef ) ; ScrapRef scrapRef = cEvent.GetParameter< ScrapRef > ( kEventParamScrapRef , typeScrapRef ) ;
Size textSize, pastedSize ; Size textSize, pastedSize ;
verify_noerr( GetScrapFlavorSize (scrapRef, kTXNTextData, &textSize) ) ; verify_noerr( GetScrapFlavorSize(scrapRef, kTXNTextData, &textSize) ) ;
textSize++ ; textSize++ ;
char *content = new char[textSize] ; char *content = new char[textSize] ;
GetScrapFlavorData (scrapRef, kTXNTextData, &pastedSize, content ); GetScrapFlavorData(scrapRef, kTXNTextData, &pastedSize, content );
content[textSize-1] = 0 ; content[textSize - 1] = 0 ;
#if wxUSE_UNICODE #if wxUSE_UNICODE
textCtrl->WriteText( wxString( content , wxConvLocal ) ); textCtrl->WriteText( wxString( content , wxConvLocal ) );
@@ -711,6 +727,7 @@ void wxWindowMac::Init()
{ {
m_peer = NULL ; m_peer = NULL ;
m_frozenness = 0 ; m_frozenness = 0 ;
#if WXWIN_COMPATIBILITY_2_4 #if WXWIN_COMPATIBILITY_2_4
m_backgroundTransparent = false; m_backgroundTransparent = false;
#endif #endif
@@ -807,25 +824,24 @@ WXWidget wxWindowMac::GetHandle() const
return (WXWidget) m_peer->GetControlRef() ; return (WXWidget) m_peer->GetControlRef() ;
} }
void wxWindowMac::MacInstallEventHandler( WXWidget control ) void wxWindowMac::MacInstallEventHandler( WXWidget control )
{ {
wxAssociateControlWithMacControl( (ControlRef) control , this ) ; wxAssociateControlWithMacControl( (ControlRef) control , this ) ;
InstallControlEventHandler( (ControlRef) control , GetwxMacWindowEventHandlerUPP(), InstallControlEventHandler( (ControlRef)control , GetwxMacWindowEventHandlerUPP(),
GetEventTypeCount(eventList), eventList, this, GetEventTypeCount(eventList), eventList, this,
(EventHandlerRef *)&m_macControlEventHandler); (EventHandlerRef *)&m_macControlEventHandler);
#if !TARGET_API_MAC_OSX #if !TARGET_API_MAC_OSX
if ( (ControlRef) control == m_peer->GetControlRef() ) if ( (ControlRef) control == m_peer->GetControlRef() )
{ {
m_peer->SetData<ControlUserPaneDrawUPP>(kControlEntireControl,kControlUserPaneDrawProcTag,GetwxMacControlUserPaneDrawProc()) ; m_peer->SetData<ControlUserPaneDrawUPP>(kControlEntireControl, kControlUserPaneDrawProcTag, GetwxMacControlUserPaneDrawProc()) ;
m_peer->SetData<ControlUserPaneHitTestUPP>(kControlEntireControl,kControlUserPaneHitTestProcTag,GetwxMacControlUserPaneHitTestProc()) ; m_peer->SetData<ControlUserPaneHitTestUPP>(kControlEntireControl, kControlUserPaneHitTestProcTag, GetwxMacControlUserPaneHitTestProc()) ;
m_peer->SetData<ControlUserPaneTrackingUPP>(kControlEntireControl,kControlUserPaneTrackingProcTag,GetwxMacControlUserPaneTrackingProc()) ; m_peer->SetData<ControlUserPaneTrackingUPP>(kControlEntireControl, kControlUserPaneTrackingProcTag, GetwxMacControlUserPaneTrackingProc()) ;
m_peer->SetData<ControlUserPaneIdleUPP>(kControlEntireControl,kControlUserPaneIdleProcTag,GetwxMacControlUserPaneIdleProc()) ; m_peer->SetData<ControlUserPaneIdleUPP>(kControlEntireControl, kControlUserPaneIdleProcTag, GetwxMacControlUserPaneIdleProc()) ;
m_peer->SetData<ControlUserPaneKeyDownUPP>(kControlEntireControl,kControlUserPaneKeyDownProcTag,GetwxMacControlUserPaneKeyDownProc()) ; m_peer->SetData<ControlUserPaneKeyDownUPP>(kControlEntireControl, kControlUserPaneKeyDownProcTag, GetwxMacControlUserPaneKeyDownProc()) ;
m_peer->SetData<ControlUserPaneActivateUPP>(kControlEntireControl,kControlUserPaneActivateProcTag,GetwxMacControlUserPaneActivateProc()) ; m_peer->SetData<ControlUserPaneActivateUPP>(kControlEntireControl, kControlUserPaneActivateProcTag, GetwxMacControlUserPaneActivateProc()) ;
m_peer->SetData<ControlUserPaneFocusUPP>(kControlEntireControl,kControlUserPaneFocusProcTag,GetwxMacControlUserPaneFocusProc()) ; m_peer->SetData<ControlUserPaneFocusUPP>(kControlEntireControl, kControlUserPaneFocusProcTag, GetwxMacControlUserPaneFocusProc()) ;
m_peer->SetData<ControlUserPaneBackgroundUPP>(kControlEntireControl,kControlUserPaneBackgroundProcTag,GetwxMacControlUserPaneBackgroundProc()) ; m_peer->SetData<ControlUserPaneBackgroundUPP>(kControlEntireControl, kControlUserPaneBackgroundProcTag, GetwxMacControlUserPaneBackgroundProc()) ;
} }
#endif #endif
} }
@@ -863,9 +879,9 @@ bool wxWindowMac::Create(wxWindowMac *parent, wxWindowID id,
m_peer = new wxMacControl(this) ; m_peer = new wxMacControl(this) ;
::CreateUserPaneControl( MAC_WXHWND(GetParent()->MacGetTopLevelWindowRef()) , &bounds, features , m_peer->GetControlRefAddr() ); ::CreateUserPaneControl( MAC_WXHWND(GetParent()->MacGetTopLevelWindowRef()) , &bounds, features , m_peer->GetControlRefAddr() );
MacPostControlCreate(pos, size) ;
MacPostControlCreate(pos,size) ;
} }
#ifndef __WXUNIVERSAL__ #ifndef __WXUNIVERSAL__
// Don't give scrollbars to wxControls unless they ask for them // Don't give scrollbars to wxControls unless they ask for them
if ( (! IsKindOf(CLASSINFO(wxControl)) && ! IsKindOf(CLASSINFO(wxStatusBar))) || if ( (! IsKindOf(CLASSINFO(wxControl)) && ! IsKindOf(CLASSINFO(wxStatusBar))) ||
@@ -968,7 +984,7 @@ void wxWindowMac::DoSetWindowVariant( wxWindowVariant variant )
break ; break ;
} }
m_peer->SetData<ControlSize>(kControlEntireControl, kControlSizeTag,&size ) ; m_peer->SetData<ControlSize>(kControlEntireControl, kControlSizeTag, &size ) ;
wxFont font ; wxFont font ;
font.MacCreateThemeFont( themeFont ) ; font.MacCreateThemeFont( themeFont ) ;
@@ -992,12 +1008,12 @@ bool wxWindowMac::SetFont(const wxFont& font)
bool wxWindowMac::SetForegroundColour(const wxColour& col ) bool wxWindowMac::SetForegroundColour(const wxColour& col )
{ {
if ( !wxWindowBase::SetForegroundColour(col) ) bool retval = wxWindowBase::SetForegroundColour(col);
return false ;
MacUpdateControlFont() ; if (retval)
MacUpdateControlFont() ;
return true ; return retval;
} }
bool wxWindowMac::SetBackgroundColour(const wxColour& col ) bool wxWindowMac::SetBackgroundColour(const wxColour& col )
@@ -1034,7 +1050,7 @@ bool wxWindowMac::MacCanFocus() const
// to issue a SetKeyboardFocus event and verify after whether it succeeded, this would risk problems // to issue a SetKeyboardFocus event and verify after whether it succeeded, this would risk problems
// in event handlers... // in event handlers...
UInt32 features = 0 ; UInt32 features = 0 ;
m_peer->GetFeatures( & features ) ; m_peer->GetFeatures( &features ) ;
return features & ( kControlSupportsFocus | kControlGetsFocusOnClick ) ; return features & ( kControlSupportsFocus | kControlGetsFocusOnClick ) ;
} }
@@ -1134,15 +1150,16 @@ void wxWindowMac::DragAcceptFiles(bool accept)
void wxWindowMac::MacGetPositionAndSizeFromControl(int& x, int& y, void wxWindowMac::MacGetPositionAndSizeFromControl(int& x, int& y,
int& w, int& h) const int& w, int& h) const
{ {
wxFAIL_MSG( wxT("Not supported anymore") ) ; wxFAIL_MSG( wxT("Not currently supported") ) ;
} }
// From a wx position / size calculate the appropriate size of the native control // From a wx position / size calculate the appropriate size of the native control
bool wxWindowMac::MacGetBoundsForControl(const wxPoint& pos, bool wxWindowMac::MacGetBoundsForControl(
const wxSize& size, const wxPoint& pos,
int& x, int& y, const wxSize& size,
int& w, int& h , bool adjustOrigin ) const int& x, int& y,
int& w, int& h , bool adjustOrigin ) const
{ {
bool isCompositing = MacGetTopLevelWindow()->MacUsesCompositing() ; bool isCompositing = MacGetTopLevelWindow()->MacUsesCompositing() ;
@@ -1151,8 +1168,8 @@ bool wxWindowMac::MacGetBoundsForControl(const wxPoint& pos,
x = (int)pos.x; x = (int)pos.x;
y = (int)pos.y; y = (int)pos.y;
// todo the default calls may be used as soon as PostCreateControl Is moved here // todo the default calls may be used as soon as PostCreateControl Is moved here
w = wxMax(size.x,0) ; // WidthDefault( size.x ); w = wxMax(size.x, 0) ; // WidthDefault( size.x );
h = wxMax(size.y,0) ; // HeightDefault( size.y ) ; h = wxMax(size.y, 0) ; // HeightDefault( size.y ) ;
if ( !isCompositing ) if ( !isCompositing )
GetParent()->MacWindowToRootWindow( &x , &y ) ; GetParent()->MacWindowToRootWindow( &x , &y ) ;
@@ -1393,16 +1410,17 @@ void wxWindowMac::MacRootWindowToWindow( short *x , short *y ) const
void wxWindowMac::MacGetContentAreaInset( int &left , int &top , int &right , int &bottom ) void wxWindowMac::MacGetContentAreaInset( int &left , int &top , int &right , int &bottom )
{ {
RgnHandle rgn = NewRgn() ; RgnHandle rgn = NewRgn() ;
if ( m_peer->GetRegion( kControlContentMetaPart , rgn ) == noErr ) if ( m_peer->GetRegion( kControlContentMetaPart , rgn ) == noErr )
{ {
Rect structure ; Rect structure, content ;
Rect content ;
GetRegionBounds( rgn , &content ) ; GetRegionBounds( rgn , &content ) ;
m_peer->GetRect( &structure ) ; m_peer->GetRect( &structure ) ;
OffsetRect( &structure, -structure.left , -structure.top ) ; OffsetRect( &structure, -structure.left , -structure.top ) ;
left = content.left - structure.left ; left = content.left - structure.left ;
top = content.top - structure.top ; top = content.top - structure.top ;
right = structure.right - content.right ; right = structure.right - content.right ;
bottom = structure.bottom - content.bottom ; bottom = structure.bottom - content.bottom ;
} }
@@ -1410,6 +1428,7 @@ void wxWindowMac::MacGetContentAreaInset( int &left , int &top , int &right , in
{ {
left = top = right = bottom = 0 ; left = top = right = bottom = 0 ;
} }
DisposeRgn( rgn ) ; DisposeRgn( rgn ) ;
} }
@@ -1420,16 +1439,16 @@ wxSize wxWindowMac::DoGetSizeFromClientSize( const wxSize & size ) const
RgnHandle rgn = NewRgn() ; RgnHandle rgn = NewRgn() ;
if ( m_peer->GetRegion( kControlContentMetaPart , rgn ) == noErr ) if ( m_peer->GetRegion( kControlContentMetaPart , rgn ) == noErr )
{ {
Rect content ; Rect content, structure ;
Rect structure ;
GetRegionBounds( rgn , &content ) ; GetRegionBounds( rgn , &content ) ;
m_peer->GetRect( &structure ) ; m_peer->GetRect( &structure ) ;
// structure is in parent coordinates, but we only need width and height, so it's ok // structure is in parent coordinates, but we only need width and height, so it's ok
sizeTotal.x += (structure.right - structure.left) - (content.right - content.left) ; sizeTotal.x += (structure.right - structure.left) - (content.right - content.left) ;
sizeTotal.y += (structure.bottom - structure.top) - (content.bottom - content.top ) ; sizeTotal.y += (structure.bottom - structure.top) - (content.bottom - content.top ) ;
} }
DisposeRgn( rgn ) ; DisposeRgn( rgn ) ;
sizeTotal.x += MacGetLeftBorderSize() + MacGetRightBorderSize() ; sizeTotal.x += MacGetLeftBorderSize() + MacGetRightBorderSize() ;
@@ -1464,7 +1483,6 @@ void wxWindowMac::DoGetClientSize( int *x, int *y ) const
*x = ww; *x = ww;
if (y) if (y)
*y = hh; *y = hh;
} }
bool wxWindowMac::SetCursor(const wxCursor& cursor) bool wxWindowMac::SetCursor(const wxCursor& cursor)
@@ -1523,7 +1541,8 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
if ( x == -1 && y == -1 ) if ( x == -1 && y == -1 )
{ {
wxPoint mouse = wxGetMousePosition(); wxPoint mouse = wxGetMousePosition();
x = mouse.x; y = mouse.y; x = mouse.x;
y = mouse.y;
} }
else else
{ {
@@ -1531,7 +1550,7 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
} }
menu->MacBeforeDisplay( true ) ; menu->MacBeforeDisplay( true ) ;
long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() ,y,x, 0) ; long menuResult = ::PopUpMenuSelect((MenuHandle) menu->GetHMenu() , y, x, 0) ;
if ( HiWord(menuResult) != 0 ) if ( HiWord(menuResult) != 0 )
{ {
MenuCommand id ; MenuCommand id ;
@@ -1544,8 +1563,8 @@ bool wxWindowMac::DoPopupMenu(wxMenu *menu, int x, int y)
menu->SendEvent( id , item->IsCheckable() ? item->IsChecked() : -1 ) ; menu->SendEvent( id , item->IsCheckable() ? item->IsChecked() : -1 ) ;
} }
menu->MacAfterDisplay( true ) ;
menu->MacAfterDisplay( true ) ;
menu->SetInvokingWindow(NULL); menu->SetInvokingWindow(NULL);
return true; return true;
@@ -1566,7 +1585,7 @@ void wxWindowMac::DoSetToolTip(wxToolTip *tooltip)
m_tooltip->SetWindow(this); m_tooltip->SetWindow(this);
} }
#endif // wxUSE_TOOLTIPS #endif
void wxWindowMac::MacInvalidateBorders() void wxWindowMac::MacInvalidateBorders()
{ {
@@ -1593,10 +1612,10 @@ void wxWindowMac::MacInvalidateBorders()
// this rectangle is in HIViewCoordinates under OSX and in Window Coordinates under Carbon // this rectangle is in HIViewCoordinates under OSX and in Window Coordinates under Carbon
Rect rect ; Rect rect ;
m_peer->GetRect( &rect ) ; m_peer->GetRect( &rect ) ;
RectRgn( updateInner , &rect ) ; RectRgn( updateInner, &rect ) ;
InsetRect( &rect , -outerBorder , -outerBorder ) ; InsetRect( &rect , -outerBorder , -outerBorder ) ;
RectRgn( updateOuter , &rect ) ; RectRgn( updateOuter, &rect ) ;
DiffRgn( updateOuter , updateInner ,updateOuter ) ; DiffRgn( updateOuter, updateInner , updateOuter ) ;
#ifdef __WXMAC_OSX__ #ifdef __WXMAC_OSX__
GetParent()->m_peer->SetNeedsDisplay( updateOuter ) ; GetParent()->m_peer->SetNeedsDisplay( updateOuter ) ;
@@ -1614,8 +1633,8 @@ void wxWindowMac::MacInvalidateBorders()
RectRgn( updateInner , &rect ) ; RectRgn( updateInner , &rect ) ;
InsetRect( &rect , -4 , -4 ) ; InsetRect( &rect , -4 , -4 ) ;
RectRgn( updateOuter , &rect ) ; RectRgn( updateOuter , &rect ) ;
DiffRgn( updateOuter , updateInner ,updateOuter ) ; DiffRgn( updateOuter , updateInner , updateOuter ) ;
wxPoint parent(0,0); wxPoint parent(0, 0);
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ; GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
parent -= GetParent()->GetClientAreaOrigin() ; parent -= GetParent()->GetClientAreaOrigin() ;
OffsetRgn( updateOuter , -parent.x , -parent.y ) ; OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
@@ -1642,7 +1661,7 @@ void wxWindowMac::MacInvalidateBorders()
InsetRect( &rect , -outerBorder , -outerBorder ) ; InsetRect( &rect , -outerBorder , -outerBorder ) ;
RectRgn( updateOuter , &rect ) ; RectRgn( updateOuter , &rect ) ;
DiffRgn( updateOuter , updateInner ,updateOuter ) ; DiffRgn( updateOuter , updateInner ,updateOuter ) ;
wxPoint parent(0,0); wxPoint parent(0, 0);
GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ; GetParent()->MacWindowToRootWindow( &parent.x , &parent.y ) ;
parent -= GetParent()->GetClientAreaOrigin() ; parent -= GetParent()->GetClientAreaOrigin() ;
OffsetRgn( updateOuter , -parent.x , -parent.y ) ; OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
@@ -1675,8 +1694,9 @@ void wxWindowMac::MacInvalidateBorders()
InsetRect( &rect , -outerBorder , -outerBorder ) ; InsetRect( &rect , -outerBorder , -outerBorder ) ;
RectRgn( updateOuter , &rect ) ; RectRgn( updateOuter , &rect ) ;
DiffRgn( updateOuter , updateInner ,updateOuter ) ; DiffRgn( updateOuter , updateInner ,updateOuter ) ;
/* /*
wxPoint parent(0,0); wxPoint parent(0, 0);
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
// no offsetting needed when compositing // no offsetting needed when compositing
#else #else
@@ -1691,7 +1711,7 @@ void wxWindowMac::MacInvalidateBorders()
RectRgn( updateInner , &rect ) ; RectRgn( updateInner , &rect ) ;
InsetRect( &rect , -outerBorder , -outerBorder ) ; InsetRect( &rect , -outerBorder , -outerBorder ) ;
RectRgn( updateOuter , &rect ) ; RectRgn( updateOuter , &rect ) ;
DiffRgn( updateOuter , updateInner ,updateOuter ) ; DiffRgn( updateOuter , updateInner , updateOuter ) ;
/* /*
OffsetRgn( updateOuter , -parent.x , -parent.y ) ; OffsetRgn( updateOuter , -parent.x , -parent.y ) ;
*/ */
@@ -1736,8 +1756,7 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
if ((m_maxHeight != -1) && (actualHeight > m_maxHeight)) if ((m_maxHeight != -1) && (actualHeight > m_maxHeight))
actualHeight = m_maxHeight; actualHeight = m_maxHeight;
bool doMove = false ; bool doMove = false, doResize = false ;
bool doResize = false ;
if ( actualX != former_x || actualY != former_y ) if ( actualX != former_x || actualY != former_y )
doMove = true ; doMove = true ;
@@ -1771,7 +1790,7 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
MacRepositionScrollBars() ; MacRepositionScrollBars() ;
if ( doMove ) if ( doMove )
{ {
wxPoint point(actualX,actualY); wxPoint point(actualX, actualY);
wxMoveEvent event(point, m_windowId); wxMoveEvent event(point, m_windowId);
event.SetEventObject(this); event.SetEventObject(this);
GetEventHandler()->ProcessEvent(event) ; GetEventHandler()->ProcessEvent(event) ;
@@ -1795,13 +1814,15 @@ wxSize wxWindowMac::DoGetBestSize() const
Rect bestsize = { 0 , 0 , 0 , 0 } ; Rect bestsize = { 0 , 0 , 0 , 0 } ;
int bestWidth, bestHeight ; int bestWidth, bestHeight ;
m_peer->GetBestRect( &bestsize ) ;
m_peer->GetBestRect( &bestsize ) ;
if ( EmptyRect( &bestsize ) ) if ( EmptyRect( &bestsize ) )
{ {
bestsize.left = bestsize.top = 0 ; bestsize.left =
bestsize.right = 16 ; bestsize.top = 0 ;
bestsize.right =
bestsize.bottom = 16 ; bestsize.bottom = 16 ;
if ( IsKindOf( CLASSINFO( wxScrollBar ) ) ) if ( IsKindOf( CLASSINFO( wxScrollBar ) ) )
{ {
bestsize.bottom = 16 ; bestsize.bottom = 16 ;
@@ -1811,7 +1832,7 @@ wxSize wxWindowMac::DoGetBestSize() const
{ {
bestsize.bottom = 24 ; bestsize.bottom = 24 ;
} }
#endif // wxUSE_SPINBTN #endif
else else
{ {
// return wxWindowBase::DoGetBestSize() ; // return wxWindowBase::DoGetBestSize() ;
@@ -1838,9 +1859,9 @@ void wxWindowMac::DoSetSize(int x, int y, int width, int height, int sizeFlags)
{ {
// get the current size and position... // get the current size and position...
int currentX, currentY; int currentX, currentY;
GetPosition(&currentX, &currentY); int currentW, currentH;
int currentW,currentH; GetPosition(&currentX, &currentY);
GetSize(&currentW, &currentH); GetSize(&currentW, &currentH);
// ... and don't do anything (avoiding flicker) if it's already ok // ... and don't do anything (avoiding flicker) if it's already ok
@@ -1849,6 +1870,7 @@ void wxWindowMac::DoSetSize(int x, int y, int width, int height, int sizeFlags)
{ {
// TODO: REMOVE // TODO: REMOVE
MacRepositionScrollBars() ; // we might have a real position shift MacRepositionScrollBars() ; // we might have a real position shift
return; return;
} }
@@ -1879,10 +1901,8 @@ void wxWindowMac::DoSetSize(int x, int y, int width, int height, int sizeFlags)
if ( sizeFlags & wxSIZE_AUTO_HEIGHT ) if ( sizeFlags & wxSIZE_AUTO_HEIGHT )
{ {
if ( size.x == wxDefaultCoord ) if ( size.x == wxDefaultCoord )
{
size = DoGetBestSize(); size = DoGetBestSize();
} // else: already called DoGetBestSize() above
//else: already called DoGetBestSize() above
height = size.y; height = size.y;
} }
@@ -1906,8 +1926,10 @@ wxPoint wxWindowMac::GetClientAreaOrigin() const
} }
else else
{ {
content.left = content.top = 0 ; content.left =
content.top = 0 ;
} }
DisposeRgn( rgn ) ; DisposeRgn( rgn ) ;
return wxPoint( content.left + MacGetLeftBorderSize() , content.top + MacGetTopBorderSize() ); return wxPoint( content.left + MacGetLeftBorderSize() , content.top + MacGetTopBorderSize() );
@@ -1955,6 +1977,14 @@ bool wxWindowMac::Show(bool show)
if ( former != MacIsReallyShown() ) if ( former != MacIsReallyShown() )
MacPropagateVisibilityChanged() ; MacPropagateVisibilityChanged() ;
#if 1
// patch from Sailesh Agrawal
wxShowEvent eventShow(GetId(), show);
eventShow.SetEventObject(this);
GetEventHandler()->ProcessEvent(eventShow);
#endif
return true; return true;
} }
@@ -2023,7 +2053,7 @@ void wxWindowMac::MacPropagateHiliteChanged()
while ( node ) while ( node )
{ {
child = node->GetData(); child = node->GetData();
// if ( child->IsEnabled() ) if (child /* && child->IsEnabled() */)
child->MacPropagateHiliteChanged() ; child->MacPropagateHiliteChanged() ;
node = node->GetNext(); node = node->GetNext();
@@ -2063,7 +2093,7 @@ bool wxWindowMac::MacIsReallyShown()
#endif #endif
wxWindow* win = this ; wxWindow* win = this ;
while ( win->IsShown() ) while ( win->IsShown() )
{ {
if ( win->IsTopLevel() ) if ( win->IsTopLevel() )
return true ; return true ;
@@ -2143,6 +2173,7 @@ void wxWindowMac::Refresh(bool eraseBack, const wxRect *rect)
if ( rect ) if ( rect )
{ {
Rect r ; Rect r ;
wxMacRectToNative( rect , &r ) ; wxMacRectToNative( rect , &r ) ;
m_peer->SetNeedsDisplay( &r ) ; m_peer->SetNeedsDisplay( &r ) ;
} }
@@ -2166,7 +2197,7 @@ void wxWindowMac::Freeze()
void wxWindowMac::Thaw() void wxWindowMac::Thaw()
{ {
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
wxASSERT_MSG( m_frozenness > 0, _T("Thaw() without matching Freeze()") ); wxASSERT_MSG( m_frozenness > 0, wxT("Thaw() without matching Freeze()") );
if ( !--m_frozenness ) if ( !--m_frozenness )
{ {
@@ -2186,7 +2217,7 @@ wxWindowMac *wxGetActiveWindow()
} }
// Coordinates relative to the window // Coordinates relative to the window
void wxWindowMac::WarpPointer (int x_pos, int y_pos) void wxWindowMac::WarpPointer(int x_pos, int y_pos)
{ {
// We really don't move the mouse programmatically under Mac. // We really don't move the mouse programmatically under Mac.
} }
@@ -2195,8 +2226,9 @@ void wxWindowMac::OnEraseBackground(wxEraseEvent& event)
{ {
if ( MacGetTopLevelWindow() == NULL ) if ( MacGetTopLevelWindow() == NULL )
return ; return ;
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
if ( MacGetTopLevelWindow()->MacUsesCompositing() && (m_macBackgroundBrush.Ok() == false || m_macBackgroundBrush.GetStyle() == wxTRANSPARENT ) ) if ( MacGetTopLevelWindow()->MacUsesCompositing() && (!m_macBackgroundBrush.Ok() || m_macBackgroundBrush.GetStyle() == wxTRANSPARENT ) )
{ {
event.Skip() ; event.Skip() ;
} }
@@ -2426,7 +2458,7 @@ void wxWindowMac::SetScrollbar(int orient, int pos, int thumbVisible,
// Does a physical scroll // Does a physical scroll
void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect) void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
{ {
if ( dx == 0 && dy ==0 ) if ( dx == 0 && dy == 0 )
return ; return ;
int width , height ; int width , height ;
@@ -2438,7 +2470,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
// note there currently is a bug in OSX which makes inefficient refreshes in case an entire control // note there currently is a bug in OSX which makes inefficient refreshes in case an entire control
// area is scrolled, this does not occur if width and height are 2 pixels less, // area is scrolled, this does not occur if width and height are 2 pixels less,
// TODO write optimal workaround // TODO write optimal workaround
wxRect scrollrect( MacGetLeftBorderSize() , MacGetTopBorderSize() , width , height ) ; wxRect scrollrect( MacGetLeftBorderSize() , MacGetTopBorderSize() , width , height ) ;
if ( rect ) if ( rect )
scrollrect.Intersect( *rect ) ; scrollrect.Intersect( *rect ) ;
@@ -2463,7 +2495,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
// as the native control might be not a 0/0 wx window coordinates, we have to offset // as the native control might be not a 0/0 wx window coordinates, we have to offset
scrollrect.Offset( -MacGetLeftBorderSize() , -MacGetTopBorderSize() ) ; scrollrect.Offset( -MacGetLeftBorderSize() , -MacGetTopBorderSize() ) ;
m_peer->ScrollRect( (&scrollrect) , dx , dy ) ; m_peer->ScrollRect( &scrollrect , dx , dy ) ;
// becuase HIViewScrollRect does not scroll the already invalidated area we have two options // becuase HIViewScrollRect does not scroll the already invalidated area we have two options
// either immediate redraw or full invalidate // either immediate redraw or full invalidate
@@ -2479,15 +2511,14 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
else else
#endif #endif
Update() ; Update() ;
#endif #endif
} }
else else
#endif #endif
{ {
wxPoint pos; wxPoint pos;
pos.x = pos.y = 0; pos.x =
pos.y = 0;
Rect scrollrect; Rect scrollrect;
RgnHandle updateRgn = NewRgn() ; RgnHandle updateRgn = NewRgn() ;
@@ -2517,7 +2548,7 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
RgnHandle scrollRgn = NewRgn() ; RgnHandle scrollRgn = NewRgn() ;
RectRgn( scrollRgn , &scrollrect ) ; RectRgn( scrollRgn , &scrollrect ) ;
GetWindowUpdateRgn( rootWindow , formerUpdateRgn ) ; GetWindowUpdateRgn( rootWindow , formerUpdateRgn ) ;
Point pt = {0,0} ; Point pt = {0, 0} ;
LocalToGlobal( &pt ) ; LocalToGlobal( &pt ) ;
OffsetRgn( formerUpdateRgn , -pt.h , -pt.v ) ; OffsetRgn( formerUpdateRgn , -pt.h , -pt.v ) ;
SectRgn( formerUpdateRgn , scrollRgn , formerUpdateRgn ) ; SectRgn( formerUpdateRgn , scrollRgn , formerUpdateRgn ) ;
@@ -2526,10 +2557,10 @@ void wxWindowMac::ScrollWindow(int dx, int dy, const wxRect *rect)
{ {
MacOffsetRgn( formerUpdateRgn , dx , dy ) ; MacOffsetRgn( formerUpdateRgn , dx , dy ) ;
SectRgn( formerUpdateRgn , scrollRgn , formerUpdateRgn ) ; SectRgn( formerUpdateRgn , scrollRgn , formerUpdateRgn ) ;
InvalWindowRgn( rootWindow, formerUpdateRgn ) ; InvalWindowRgn( rootWindow, formerUpdateRgn ) ;
} }
InvalWindowRgn(rootWindow , updateRgn ) ; InvalWindowRgn(rootWindow, updateRgn ) ;
DisposeRgn( updateRgn ) ; DisposeRgn( updateRgn ) ;
DisposeRgn( formerUpdateRgn ) ; DisposeRgn( formerUpdateRgn ) ;
DisposeRgn( scrollRgn ) ; DisposeRgn( scrollRgn ) ;
@@ -2643,7 +2674,7 @@ void wxWindowMac::OnSetFocus( wxFocusEvent& event )
wxTopLevelWindowMac* top = MacGetTopLevelWindow(); wxTopLevelWindowMac* top = MacGetTopLevelWindow();
if ( top ) if ( top )
{ {
wxPoint pt(0,0) ; wxPoint pt(0, 0) ;
wxMacControl::Convert( &pt , GetParent()->m_peer , top->m_peer ) ; wxMacControl::Convert( &pt , GetParent()->m_peer , top->m_peer ) ;
rect.left += pt.x ; rect.left += pt.x ;
rect.right += pt.x ; rect.right += pt.x ;
@@ -2782,6 +2813,7 @@ const wxRect&wxWindowMac:: MacGetClippedRectWithOuterStructure() const
const wxRegion& wxWindowMac::MacGetVisibleRegion( bool includeOuterStructures ) const wxRegion& wxWindowMac::MacGetVisibleRegion( bool includeOuterStructures )
{ {
static wxRegion emptyrgn ; static wxRegion emptyrgn ;
if ( !m_isBeingDeleted && MacIsReallyShown() /*m_peer->IsVisible() */ ) if ( !m_isBeingDeleted && MacIsReallyShown() /*m_peer->IsVisible() */ )
{ {
MacUpdateClippedRects() ; MacUpdateClippedRects() ;
@@ -2829,6 +2861,7 @@ void wxWindowMac::MacUpdateClippedRects() const
wxSize size ; wxSize size ;
const wxWindow* child = this ; const wxWindow* child = this ;
const wxWindow* parent = NULL ; const wxWindow* parent = NULL ;
while ( !child->IsTopLevel() && ( parent = child->GetParent() ) != NULL ) while ( !child->IsTopLevel() && ( parent = child->GetParent() ) != NULL )
{ {
if ( parent->MacIsChildOfClientArea(child) ) if ( parent->MacIsChildOfClientArea(child) )
@@ -2984,7 +3017,7 @@ bool wxWindowMac::MacDoRedraw( WXHRGN updatergnr , long time )
wxWindowDC dc(this) ; wxWindowDC dc(this) ;
dc.SetClippingRegion(wxRegion(updatergn)); dc.SetClippingRegion(wxRegion(updatergn));
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
child->MacPaintBorders(0, 0) ; child->MacPaintBorders(0, 0) ;
} }
} }
} }
@@ -3031,9 +3064,9 @@ void wxWindowMac::MacCreateScrollBars( long style )
int width, height ; int width, height ;
GetClientSize( &width , &height ) ; GetClientSize( &width , &height ) ;
wxPoint vPoint(width-scrlsize, 0) ; wxPoint vPoint(width - scrlsize, 0) ;
wxSize vSize(scrlsize, height - adjust) ; wxSize vSize(scrlsize, height - adjust) ;
wxPoint hPoint(0 , height-scrlsize ) ; wxPoint hPoint(0 , height - scrlsize ) ;
wxSize hSize( width - adjust, scrlsize) ; wxSize hSize( width - adjust, scrlsize) ;
if ( style & wxVSCROLL ) if ( style & wxVSCROLL )
@@ -3230,6 +3263,8 @@ wxPoint wxGetMousePosition()
void wxWindowMac::OnMouseEvent( wxMouseEvent &event ) void wxWindowMac::OnMouseEvent( wxMouseEvent &event )
{ {
long evtType = event.GetEventType();
// if ((evtType == ewxEVT_RIGHT_DOWN) || (evtType == wxEVT_CONTEXT_MENU))
if ( event.GetEventType() == wxEVT_RIGHT_DOWN ) if ( event.GetEventType() == wxEVT_RIGHT_DOWN )
{ {
// copied from wxGTK : CS // copied from wxGTK : CS