X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bf4a027ddba692bb28e7ebbe5b64c2411adbdd06..7c15086ca4f60f714a17a21677c26476469afbdb:/src/mac/control.cpp diff --git a/src/mac/control.cpp b/src/mac/control.cpp index e2be8c3b92..9b86af18d1 100644 --- a/src/mac/control.cpp +++ b/src/mac/control.cpp @@ -87,7 +87,7 @@ pascal void wxMacLiveScrollbarActionProc( ControlHandle control , ControlPartCod ControlColorUPP wxMacSetupControlBackgroundUPP = NULL ; ControlDefUPP wxMacControlActionUPP = NULL ; -pascal SInt32 wxMacControlDefintion(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param) +pascal SInt32 wxMacControlDefinition(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param) { wxControl* wx = (wxControl*) wxFindControlFromMacControl( theControl ) ; @@ -115,7 +115,17 @@ pascal OSStatus wxMacSetupControlBackground( ControlRef iControl , SInt16 iMessa if ( wx != NULL && wx->IsKindOf( CLASSINFO( wxControl ) ) ) { wxDC::MacSetupBackgroundForCurrentPort( wx->MacGetBackgroundBrush() ) ; - // SetThemeBackground( iDepth , iIsColor ) ; +#if TARGET_CARBON + // under classic this would lead to partial redraws + RgnHandle clip = NewRgn() ; + int x = 0 , y = 0; + + wx->MacWindowToRootWindow( &x,&y ) ; + CopyRgn( (RgnHandle) wx->MacGetVisibleRegion(false).GetWXHRGN() , clip ) ; + OffsetRgn( clip , x , y ) ; + SetClip( clip ) ; + DisposeRgn( clip ) ; +#endif } else { @@ -295,7 +305,7 @@ wxControl *wxFindControlFromMacControl(ControlHandle inControl ) wxNode *node = wxWinMacControlList->Find((long)inControl); if (!node) return NULL; - return (wxControl *)node->Data(); + return (wxControl *)node->GetData(); } void wxAssociateControlWithMacControl(ControlHandle inControl, wxControl *control) @@ -398,8 +408,12 @@ void wxControl::MacPostControlCreate() } if ( wxMacControlActionUPP == NULL ) { - wxMacControlActionUPP = NewControlDefUPP( wxMacControlDefintion ) ; + wxMacControlActionUPP = NewControlDefUPP( wxMacControlDefinition ) ; } + // The following block of code is responsible for crashes when switching + // back to windows, which can be seen in the dialogs sample. + // It is disabled until a proper solution can be found. +#if 0 #if TARGET_CARBON /* only working under classic carbon @@ -417,6 +431,7 @@ void wxControl::MacPostControlCreate() (**cdef).function = (void(*)()) wxMacControlActionUPP; (**(ControlHandle)m_macControl).contrlDefProc = (Handle) cdef ; } +#endif #endif SetControlColorProc( (ControlHandle) m_macControl , wxMacSetupControlBackgroundUPP ) ; @@ -589,6 +604,23 @@ void wxControl::DoSetSize(int x, int y, int sizeFlags ) { wxWindow::DoSetSize( x , y ,width , height ,sizeFlags ) ; +#if 0 + { + Rect meta , control ; + GetControlBounds( (ControlHandle) m_macControl , &control ) ; + RgnHandle rgn = NewRgn() ; + GetControlRegion( (ControlHandle) m_macControl , kControlStructureMetaPart , rgn ) ; + GetRegionBounds( rgn , &meta ) ; + if ( !EmptyRect( &meta ) ) + { + wxASSERT( meta.left >= control.left - m_macHorizontalBorder ) ; + wxASSERT( meta.right <= control.right + m_macHorizontalBorder ) ; + wxASSERT( meta.top >= control.top - m_macVerticalBorder ) ; + wxASSERT( meta.bottom <= control.bottom + m_macVerticalBorder ) ; + } + DisposeRgn( rgn ) ; + } +#endif return ; /*