X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e766c8a9ad51ecf73e8f1641992f1007ee9e5e0a..c10f20703e5b4e9c605b908f480b863c89ca31ee:/src/mac/window.cpp?ds=sidebyside diff --git a/src/mac/window.cpp b/src/mac/window.cpp index 35f8c0ef6d..7f2c51c279 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -56,9 +56,15 @@ extern wxList wxPendingDelete; wxWindowMac* gFocusWindow = NULL ; +#ifdef __WXUNIVERSAL__ + IMPLEMENT_ABSTRACT_CLASS(wxWindowMac, wxWindowBase) +#else // __WXMAC__ + IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase) +#endif // __WXUNIVERSAL__/__WXMAC__ + #if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindowMac, wxEvtHandler) -BEGIN_EVENT_TABLE(wxWindowMac, wxEvtHandler) + +BEGIN_EVENT_TABLE(wxWindowMac, wxWindowBase) EVT_ERASE_BACKGROUND(wxWindowMac::OnEraseBackground) EVT_SYS_COLOUR_CHANGED(wxWindowMac::OnSysColourChanged) EVT_INIT_DIALOG(wxWindowMac::OnInitDialog) @@ -335,20 +341,24 @@ void wxWindowMac::DragAcceptFiles(bool accept) // Get total size void wxWindowMac::DoGetSize(int *x, int *y) const { - *x = m_width ; - *y = m_height ; + if(x) *x = m_width ; + if(y) *y = m_height ; } void wxWindowMac::DoGetPosition(int *x, int *y) const { - *x = m_x ; - *y = m_y ; + int xx,yy; + + xx = m_x ; + yy = m_y ; if (GetParent()) { wxPoint pt(GetParent()->GetClientAreaOrigin()); - *x -= pt.x; - *y -= pt.y; + xx -= pt.x; + yy -= pt.y; } + if(x) *x = xx; + if(y) *y = yy; } #if wxUSE_MENUS @@ -372,9 +382,10 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const { WindowRef window = GetMacRootWindow() ; - Point localwhere ; - localwhere.h = * x ; - localwhere.v = * y ; + Point localwhere = {0,0} ; + + if(x) localwhere.h = * x ; + if(y) localwhere.v = * y ; GrafPtr port ; ::GetPort( &port ) ; @@ -382,8 +393,8 @@ void wxWindowMac::DoScreenToClient(int *x, int *y) const ::GlobalToLocal( &localwhere ) ; ::SetPort( port ) ; - *x = localwhere.h ; - *y = localwhere.v ; + if(x) *x = localwhere.h ; + if(y) *y = localwhere.v ; MacRootWindowToClient( x , y ) ; } @@ -394,9 +405,9 @@ void wxWindowMac::DoClientToScreen(int *x, int *y) const MacClientToRootWindow( x , y ) ; - Point localwhere ; - localwhere.h = * x ; - localwhere.v = * y ; + Point localwhere = { 0,0 }; + if(x) localwhere.h = * x ; + if(y) localwhere.v = * y ; GrafPtr port ; ::GetPort( &port ) ; @@ -404,32 +415,26 @@ void wxWindowMac::DoClientToScreen(int *x, int *y) const ::SetOrigin( 0 , 0 ) ; ::LocalToGlobal( &localwhere ) ; ::SetPort( port ) ; - *x = localwhere.h ; - *y = localwhere.v ; + if(x) *x = localwhere.h ; + if(y) *y = localwhere.v ; } void wxWindowMac::MacClientToRootWindow( int *x , int *y ) const { - if ( m_macWindowData ) + if ( m_macWindowData == NULL) { - } - else - { - *x += m_x ; - *y += m_y ; + if(x) *x += m_x ; + if(y) *y += m_y ; GetParent()->MacClientToRootWindow( x , y ) ; } } void wxWindowMac::MacRootWindowToClient( int *x , int *y ) const { - if ( m_macWindowData ) + if ( m_macWindowData == NULL) { - } - else - { - *x -= m_x ; - *y -= m_y ; + if(x) *x -= m_x ; + if(y) *y -= m_y ; GetParent()->MacRootWindowToClient( x , y ) ; } } @@ -474,11 +479,12 @@ bool wxWindowMac::SetCursor(const wxCursor& cursor) // Get size *available for subwindows* i.e. excluding menu bar etc. void wxWindowMac::DoGetClientSize(int *x, int *y) const { - *x = m_width ; - *y = m_height ; + int ww, hh; + ww = m_width ; + hh = m_height ; - *x -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ; - *y -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( ); + ww -= MacGetLeftBorderSize( ) + MacGetRightBorderSize( ) ; + hh -= MacGetTopBorderSize( ) + MacGetBottomBorderSize( ); if ( (m_vScrollBar && m_vScrollBar->IsShown()) || (m_hScrollBar && m_hScrollBar->IsShown()) ) { @@ -490,7 +496,6 @@ void wxWindowMac::DoGetClientSize(int *x, int *y) const MacClientToRootWindow( &x1 , &y1 ) ; MacClientToRootWindow( &w , &h ) ; - WindowRef window = NULL ; wxWindowMac *iter = (wxWindowMac*)this ; int totW = 10000 , totH = 10000; @@ -508,21 +513,23 @@ void wxWindowMac::DoGetClientSize(int *x, int *y) const if (m_hScrollBar && m_hScrollBar->IsShown() ) { - (*y) -= MAC_SCROLLBAR_SIZE; + hh -= MAC_SCROLLBAR_SIZE; if ( h-y1 >= totH ) { - (*y)+= 1 ; + hh += 1 ; } } if (m_vScrollBar && m_vScrollBar->IsShown() ) { - (*x) -= MAC_SCROLLBAR_SIZE; + ww -= MAC_SCROLLBAR_SIZE; if ( w-x1 >= totW ) { - (*x) += 1 ; + ww += 1 ; } } } + if(x) *x = ww; + if(y) *y = hh; } @@ -705,11 +712,11 @@ void wxWindowMac::DoSetSize(int x, int y, int width, int height, int sizeFlags) } if ( doResize ) { - MacRepositionScrollBars() ; - wxSize size(m_width, m_height); - wxSizeEvent event(size, m_windowId); - event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + MacRepositionScrollBars() ; + wxSize size(m_width, m_height); + wxSizeEvent event(size, m_windowId); + event.SetEventObject(this); + GetEventHandler()->ProcessEvent(event); } } } @@ -783,7 +790,7 @@ bool wxWindowMac::Show(bool show) { WindowRef window = GetMacRootWindow() ; wxWindowMac* win = wxFindWinFromMacWindow( window ) ; - if ( !win->m_isBeingDeleted ) + if ( win && !win->m_isBeingDeleted ) Refresh() ; } else @@ -1791,7 +1798,6 @@ void wxWindowMac::MacMouseDown( EventRecord *ev , short part) void wxWindowMac::MacMouseUp( EventRecord *ev , short part) { - WindowPtr frontWindow ; switch (part) { case inContent: @@ -1804,7 +1810,6 @@ void wxWindowMac::MacMouseUp( EventRecord *ev , short part) void wxWindowMac::MacMouseMoved( EventRecord *ev , short part) { - WindowPtr frontWindow ; switch (part) { case inContent: @@ -1837,7 +1842,7 @@ void wxWindowMac::MacRedraw( RgnHandle updatergn , long time) // ownUpdateRgn is the area that this window has to invalidate i.e. its own area without its children RgnHandle ownUpdateRgn = NewRgn() ; CopyRgn( updatergn , ownUpdateRgn ) ; - wxWindowMac* win = wxFindWinFromMacWindow( window ) ; + { wxMacDrawingHelper focus( this ) ; // was client if ( focus.Ok() ) @@ -2036,7 +2041,6 @@ void wxWindowMac::MacUpdate( EventRecord *ev ) WindowRef wxWindowMac::GetMacRootWindow() const { - WindowRef window = NULL ; wxWindowMac *iter = (wxWindowMac*)this ; while( iter ) @@ -2115,7 +2119,6 @@ void wxWindowMac::MacRepositionScrollBars() MacClientToRootWindow( &x , &y ) ; MacClientToRootWindow( &w , &h ) ; - WindowRef window = NULL ; wxWindowMac *iter = (wxWindowMac*)this ; int totW = 10000 , totH = 10000;