X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77eddfb7f55ba85099e109ec65cf084ebf3dd77c..7890a36c9c34b5626ceada90956d0c69941a56af:/src/mac/carbon/uma.cpp diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index ba57727478..807f122922 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -33,6 +33,9 @@ #endif #include "wx/mac/uma.h" +#if TARGET_API_MAC_OSX +#include "wx/toplevel.h" +#endif // since we have decided that we only support 8.6 upwards we are // checking for these minimum requirements in the startup code of @@ -790,33 +793,17 @@ OSStatus UMAPutScrap( Size size , OSType type , void *data ) Rect* UMAGetControlBoundsInWindowCoords(ControlRef theControl, Rect *bounds) { - wxWindow* win = wxFindControlFromMacControl( theControl ) ; - GetControlBounds( theControl , bounds ) ; #if TARGET_API_MAC_OSX - if ( win != NULL && win->MacGetTopLevelWindow() != NULL ) + WindowRef tlwref = GetControlOwner( theControl ) ; + + wxTopLevelWindowMac* tlwwx = wxFindWinFromMacWindow( tlwref ) ; + if ( tlwwx->MacUsesCompositing() ) { - wxWindow* parent = win->GetParent() ; - if ( parent ) - { - // the parent controls 'origin' expressed in its own - // window coordinates (explanation in window.cpp) - int x , y ; - x = 0 ; - y = 0 ; - - if ( !parent->IsTopLevel() ) - { - x += parent->MacGetLeftBorderSize() ; - y += parent->MacGetTopBorderSize() ; - } - - parent->MacWindowToRootWindow( &x , & y ) ; - bounds->left += x ; - bounds->right += x ; - bounds->top += y ; - bounds->bottom += y ; - } + ControlRef rootControl = tlwwx->GetPeer()->GetControlRef() ; + HIPoint hiPoint = CGPointMake( 0 , 0 ) ; + HIViewConvertPoint( &hiPoint , HIViewGetSuperview(theControl) , rootControl ) ; + OffsetRect( bounds , (short) hiPoint.x , (short) hiPoint.y ) ; } #endif return bounds ;