X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2078220ed6605d5d3bba16afe1a231b3e92fa9d8..e7300ec6d9ebbd1cfa2fcf12c0ce6e5aee85a152:/src/mac/window.cpp diff --git a/src/mac/window.cpp b/src/mac/window.cpp index 7462e3ab8e..fd36642550 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -254,7 +254,7 @@ bool wxWindowMac::Enable(bool enable) return TRUE; } -void wxWindowMac::CaptureMouse() +void wxWindowMac::DoCaptureMouse() { wxTheApp->s_captureWindow = this ; } @@ -264,7 +264,7 @@ wxWindow* wxWindowBase::GetCapture() return wxTheApp->s_captureWindow ; } -void wxWindowMac::ReleaseMouse() +void wxWindowMac::DoReleaseMouse() { wxTheApp->s_captureWindow = NULL ; } @@ -352,9 +352,9 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const MacRootWindowToWindow( x , y ) ; if ( x ) - x -= MacGetLeftBorderSize() ; + x -= MacGetLeftBorderSize() ; if ( y ) - y -= MacGetTopBorderSize() ; + y -= MacGetTopBorderSize() ; } void wxWindowMac::DoClientToScreen(int *x, int *y) const @@ -362,10 +362,10 @@ void wxWindowMac::DoClientToScreen(int *x, int *y) const WindowRef window = (WindowRef) MacGetRootWindow() ; if ( x ) - x += MacGetLeftBorderSize() ; + x += MacGetLeftBorderSize() ; if ( y ) - y += MacGetTopBorderSize() ; - + y += MacGetTopBorderSize() ; + MacWindowToRootWindow( x , y ) ; Point localwhere = { 0,0 }; @@ -678,12 +678,12 @@ wxPoint wxWindowMac::GetClientAreaOrigin() const void wxWindow::SetTitle(const wxString& title) { - m_label = title ; + m_label = title ; } wxString wxWindow::GetTitle() const { - return m_label ; + return m_label ; } bool wxWindowMac::Show(bool show) @@ -1023,17 +1023,17 @@ void wxWindowMac::MacPaintBorders( int left , int top ) if (HasFlag(wxRAISED_BORDER) || HasFlag( wxSUNKEN_BORDER) || HasFlag(wxDOUBLE_BORDER) ) { #if wxMAC_USE_THEME_BORDER - Rect rect = { top , left , m_height + top , m_width + left } ; - SInt32 border = 0 ; - /* - GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ; - InsetRect( &rect , border , border ); + Rect rect = { top , left , m_height + top , m_width + left } ; + SInt32 border = 0 ; + /* + GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ; + InsetRect( &rect , border , border ); DrawThemeListBoxFrame(&rect,IsEnabled() ? kThemeStateActive : kThemeStateInactive) ; */ DrawThemePrimaryGroup(&rect ,IsEnabled() ? kThemeStateActive : kThemeStateInactive) ; #else - bool sunken = HasFlag( wxSUNKEN_BORDER ) ; + bool sunken = HasFlag( wxSUNKEN_BORDER ) ; RGBForeColor( &face ); MoveTo( left + 0 , top + m_height - 2 ); LineTo( left + 0 , top + 0 ); @@ -1066,12 +1066,22 @@ void wxWindowMac::MacPaintBorders( int left , int top ) } else if (HasFlag(wxSIMPLE_BORDER)) { - Rect rect = { top , left , m_height + top , m_width + left } ; + Rect rect = { top , left , m_height + top , m_width + left } ; RGBForeColor( &black ) ; FrameRect( &rect ) ; } } +void wxWindowMac::RemoveChild( wxWindowBase *child ) +{ + if ( child == m_hScrollBar ) + m_hScrollBar = NULL ; + if ( child == m_vScrollBar ) + m_vScrollBar = NULL ; + + wxWindowBase::RemoveChild( child ) ; +} + // New function that will replace some of the above. void wxWindowMac::SetScrollbar(int orient, int pos, int thumbVisible, int range, bool refresh) @@ -1350,15 +1360,25 @@ bool wxWindowMac::MacGetWindowFromPointSub( const wxPoint &point , wxWindowMac** bool wxWindowMac::MacGetWindowFromPoint( const wxPoint &screenpoint , wxWindowMac** outWin ) { WindowRef window ; + Point pt = { screenpoint.y , screenpoint.x } ; if ( ::FindWindow( pt , &window ) == 3 ) { - wxPoint point( screenpoint ) ; + wxWindowMac* win = wxFindWinFromMacWindow( window ) ; if ( win ) { - point = win->ScreenToClient( point ) ; - point += win->GetClientAreaOrigin() ; + // No, this yields the CLIENT are, we need the whole frame. RR. + // point = win->ScreenToClient( point ) ; + + GrafPtr port; + ::GetPort( &port ) ; + ::SetPort( UMAGetWindowPort( window ) ) ; + ::GlobalToLocal( &pt ) ; + ::SetPort( port ) ; + + wxPoint point( pt.h, pt.v ) ; + return win->MacGetWindowFromPointSub( point , outWin ) ; } } @@ -1416,7 +1436,9 @@ bool wxWindowMac::MacDispatchMouseEvent(wxMouseEvent& event) || event.GetEventType() == wxEVT_LEAVE_WINDOW ) wxToolTip::RelayEvent( this , event); #endif // wxUSE_TOOLTIPS + GetEventHandler()->ProcessEvent( event ) ; + return TRUE; } @@ -1435,11 +1457,13 @@ void wxWindowMac::Update() if ( win ) { win->MacUpdate( 0 ) ; - if ( QDIsPortBuffered( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) ) ) - { - QDFlushPortBuffer( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) , NULL ) ; - } - } +#if TARGET_API_MAC_CARBON + if ( QDIsPortBuffered( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) ) ) + { + QDFlushPortBuffer( GetWindowPort( (WindowRef) win->MacGetWindowRef() ) , NULL ) ; + } +#endif + } } wxTopLevelWindowMac* wxWindowMac::MacGetTopLevelWindow() const @@ -1769,23 +1793,23 @@ long wxWindowMac::MacGetLeftBorderSize( ) const if (m_windowStyle & wxRAISED_BORDER || m_windowStyle & wxSUNKEN_BORDER ) { - SInt32 border = 3 ; + SInt32 border = 3 ; #if wxMAC_USE_THEME_BORDER -#if TARGET_CARBON - GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ; +#if TARGET_CARBON + GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ; #endif #endif - return border ; + return border ; } else if ( m_windowStyle &wxDOUBLE_BORDER) { - SInt32 border = 3 ; + SInt32 border = 3 ; #if wxMAC_USE_THEME_BORDER -#if TARGET_CARBON - GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ; +#if TARGET_CARBON + GetThemeMetric( kThemeMetricListBoxFrameOutset , &border ) ; #endif #endif - return border ; + return border ; } else if (m_windowStyle &wxSIMPLE_BORDER) {