From d467e0c72da3a270592719f1e819db3c4984c0ca Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sat, 19 Aug 2000 08:58:19 +0000 Subject: [PATCH 1/1] Added child window scrolling git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/window.cpp | 20 ++++++++++++++++---- src/mac/window.cpp | 20 ++++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp index 3dd198b369..8c14292b7d 100644 --- a/src/mac/carbon/window.cpp +++ b/src/mac/carbon/window.cpp @@ -1246,6 +1246,20 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) InvalWindowRgn( GetMacRootWindow() , updateRgn ) ; DisposeRgn( updateRgn ) ; } + + for (wxNode *node = GetChildren().First(); node; node = node->Next()) + { + wxWindow *child = (wxWindow*)node->Data(); + if (child == m_vScrollBar) continue; + if (child == m_hScrollBar) continue; + if (child->IsTopLevel()) continue; + int x,y; + child->GetPosition( &x, &y ); + int w,h; + child->GetSize( &w, &h ); + child->SetSize( x+dx, y+dy, w, h ); + } + } void wxWindow::MacOnScroll(wxScrollEvent &event ) @@ -1741,6 +1755,7 @@ void wxWindow::MacRedraw( RgnHandle updatergn , long time) RgnHandle newupdate = NewRgn() ; wxSize point = GetClientSize() ; wxPoint origin = GetClientAreaOrigin() ; + SetRectRgn( newupdate , origin.x , origin.y , origin.x + point.x , origin.y+point.y ) ; SectRgn( newupdate , m_macUpdateRgn , newupdate ) ; OffsetRgn( newupdate , -origin.x , -origin.y ) ; @@ -1754,13 +1769,10 @@ void wxWindow::MacRedraw( RgnHandle updatergn , long time) event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } - { - } - RgnHandle childupdate = NewRgn() ; - + for (wxNode *node = GetChildren().First(); node; node = node->Next()) { wxWindow *child = (wxWindow*)node->Data(); diff --git a/src/mac/window.cpp b/src/mac/window.cpp index 3dd198b369..8c14292b7d 100644 --- a/src/mac/window.cpp +++ b/src/mac/window.cpp @@ -1246,6 +1246,20 @@ void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) InvalWindowRgn( GetMacRootWindow() , updateRgn ) ; DisposeRgn( updateRgn ) ; } + + for (wxNode *node = GetChildren().First(); node; node = node->Next()) + { + wxWindow *child = (wxWindow*)node->Data(); + if (child == m_vScrollBar) continue; + if (child == m_hScrollBar) continue; + if (child->IsTopLevel()) continue; + int x,y; + child->GetPosition( &x, &y ); + int w,h; + child->GetSize( &w, &h ); + child->SetSize( x+dx, y+dy, w, h ); + } + } void wxWindow::MacOnScroll(wxScrollEvent &event ) @@ -1741,6 +1755,7 @@ void wxWindow::MacRedraw( RgnHandle updatergn , long time) RgnHandle newupdate = NewRgn() ; wxSize point = GetClientSize() ; wxPoint origin = GetClientAreaOrigin() ; + SetRectRgn( newupdate , origin.x , origin.y , origin.x + point.x , origin.y+point.y ) ; SectRgn( newupdate , m_macUpdateRgn , newupdate ) ; OffsetRgn( newupdate , -origin.x , -origin.y ) ; @@ -1754,13 +1769,10 @@ void wxWindow::MacRedraw( RgnHandle updatergn , long time) event.SetEventObject(this); GetEventHandler()->ProcessEvent(event); } - { - } - RgnHandle childupdate = NewRgn() ; - + for (wxNode *node = GetChildren().First(); node; node = node->Next()) { wxWindow *child = (wxWindow*)node->Data(); -- 2.47.2