X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a76342da418c75ead546ce2025db24dad261d237..6270539bcf24f2ec32150a09f8aad383f5de0671:/src/mac/carbon/uma.cpp diff --git a/src/mac/carbon/uma.cpp b/src/mac/carbon/uma.cpp index 3e60338538..8588e85260 100644 --- a/src/mac/carbon/uma.cpp +++ b/src/mac/carbon/uma.cpp @@ -9,14 +9,14 @@ // Licence: The wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/defs.h" +#include "wx/wxprec.h" #if wxUSE_GUI #include "wx/dc.h" -#include #ifndef __DARWIN__ +# include # include # if defined(TARGET_CARBON) # if PM_USE_SESSION_APIS @@ -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 @@ -194,7 +197,7 @@ long UMAGetProcessMode() ProcessInfoRec processinfo; ProcessSerialNumber procno ; - procno.highLongOfPSN = NULL ; + procno.highLongOfPSN = 0 ; procno.lowLongOfPSN = kCurrentProcess ; processinfo.processInfoLength = sizeof(ProcessInfoRec); processinfo.processName = NULL; @@ -670,7 +673,7 @@ void UMAHighlightAndActivateWindow( WindowRef inWindowRef , bool inActivate ) if ( inWindowRef ) { // bool isHighlighted = IsWindowHighlited( inWindowRef ) ; -// if ( inActivate != isHightlited ) +// if ( inActivate != isHighlighted ) GrafPtr port ; GetPort( &port ) ; SetPortWindowPort( inWindowRef ) ; @@ -790,21 +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 != NULL && tlwwx->MacUsesCompositing() ) { - int x , y ; - x = 0 ; - y = 0 ; - - win->GetParent()->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 ;