X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..3c5487b14442ddbc6e43ee2f4475b5a6ba251fb1:/src/mac/carbon/toplevel.cpp diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index b9d6baed24..e97fc6b17a 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -6,7 +6,7 @@ // Created: 24.09.01 // RCS-ID: $Id$ // Copyright: (c) 2001-2004 Stefan Csomor -// License: wxWidgets licence +// License: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -351,7 +351,7 @@ ControlRef wxMacFindSubControl( Point location , ControlRef superControl , Contr if ( IsControlVisible( sibling ) ) { Rect r ; - GetControlBounds( sibling , &r ) ; + UMAGetControlBoundsInWindowCoords( sibling , &r ) ; if ( MacPtInRect( location , &r ) ) { ControlHandle child = wxMacFindSubControl( location , sibling , outPart ) ; @@ -359,7 +359,12 @@ ControlRef wxMacFindSubControl( Point location , ControlRef superControl , Contr return child ; else { - *outPart = TestControl( sibling , location ) ; + Point testLocation = location ; +#if TARGET_API_MAC_OSX + testLocation.h -= r.left ; + testLocation.v -= r.top ; +#endif + *outPart = TestControl( sibling , testLocation ) ; return sibling ; } } @@ -397,12 +402,7 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev if ( window ) { - // calculate window relative coordinates - GrafPtr port; - ::GetPort( &port ) ; - ::SetPort( UMAGetWindowPort(window ) ) ; - ::GlobalToLocal( &windowMouseLocation ) ; - ::SetPort( port ) ; + QDGlobalToLocalPoint( UMAGetWindowPort(window ) , &windowMouseLocation ) ; if ( wxTheApp->s_captureWindow && wxTheApp->s_captureWindow->MacGetTopLevelWindowRef() == (WXWindow) window && windowPart == inContent ) { @@ -509,7 +509,11 @@ pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , Ev wxMacFindControlUnderMouse( windowMouseLocation , window , &dummyPart ) ) ) { EventModifiers modifiers = cEvent.GetParameter(kEventParamKeyModifiers, typeUInt32) ; - HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , windowMouseLocation , + Point clickLocation = windowMouseLocation ; +#if TARGET_API_MAC_OSX + currentMouseWindow->MacRootWindowToWindow( &clickLocation.h , &clickLocation.v ) ; +#endif + HandleControlClick( (ControlRef) currentMouseWindow->GetHandle() , clickLocation , modifiers , (ControlActionUPP ) -1 ) ; result = noErr ; } @@ -789,25 +793,6 @@ void wxTopLevelWindowMac::Maximize(bool maximize) wxMacPortStateHelper help( (GrafPtr) GetWindowPort( (WindowRef) m_macWindow) ) ; wxMacWindowClipper clip (this); ZoomWindow( (WindowRef)m_macWindow , maximize ? inZoomOut : inZoomIn , false ) ; -/* - Rect r ; - GDHandle device = NULL ; - verify_noerr( GetWindowGreatestAreaDevice( (WindowRef) m_macWindow , kWindowContentRgn , - &device , NULL ) ; - verify_noerr( GetAvailableWindowPositioningBounds( GetMainDevice() , &r ) ) ; - - Rect tempRect ; - GrafPtr port ; - GetPort( &port ) ; - Point pt = { 0, 0 } ; - SetPortWindowPort((WindowRef)m_macWindow) ; - LocalToGlobal( &pt ) ; - SetPort( port ) ; - - GetWindowPortBounds((WindowRef)m_macWindow, &tempRect ) ; - SetSize( pt.h , pt.v , tempRect.right-tempRect.left , - tempRect.bottom-tempRect.top, wxSIZE_USE_EXISTING); -*/ } bool wxTopLevelWindowMac::IsMaximized() const @@ -987,14 +972,14 @@ void wxTopLevelWindowMac::MacCreateRealWindow( const wxString& title, wxAssociateWinWithMacWindow( (WindowRef) m_macWindow , this ) ; UMASetWTitle( (WindowRef) m_macWindow , title , m_font.GetEncoding() ) ; - if ( m_macUsesCompositing ) - { - ::GetRootControl( (WindowRef)m_macWindow, (ControlRef*)&m_macControl ) ; - } - else - { - ::CreateRootControl( (WindowRef)m_macWindow , (ControlRef*)&m_macControl ) ; - } +#if TARGET_API_MAC_OSX + // There is a bug in 10.2.X for ::GetRootControl returning the window view instead of + // the content view, so we have to retrieve it explicitely + HIViewFindByID( HIViewGetRoot( (WindowRef) m_macWindow ) , kHIViewWindowContentID , + (ControlRef*)&m_macControl ) ; +#else + ::CreateRootControl( (WindowRef)m_macWindow , (ControlRef*)&m_macControl ) ; +#endif // the root control level handleer MacInstallEventHandler() ; @@ -1223,8 +1208,7 @@ static void wxShapedMacWindowGetPos(WindowRef window, Rect* inRect) { GetWindowPortBounds(window, inRect); Point pt = {inRect->left, inRect->top}; - SetPort((GrafPtr) GetWindowPort(window)); - LocalToGlobal(&pt); + QDLocalToGlobalPoint( GetWindowPort(window) , &pt ) ; inRect->top = pt.v; inRect->left = pt.h; inRect->bottom += pt.v;