implement Layout() so that sizers work correctly when the window is scrolled (1st part of the patch 1439905)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38780 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-04-17 02:00:48 +00:00
parent f5e209857f
commit 61bb5a9c1b
2 changed files with 23 additions and 0 deletions

View File

@@ -135,6 +135,8 @@ public:
// is kept for backwards compatibility
size_t GetLastVisibleLine() const { return GetVisibleEnd() - 1; }
// layout the children (including the sizer if needed)
virtual bool Layout();
protected:
// this function must be overridden in the derived class and it should

View File

@@ -282,6 +282,27 @@ void wxVScrolledWindow::RefreshAll()
Refresh();
}
bool wxVScrolledWindow::Layout()
{
if ( GetSizer() )
{
// adjust the sizer dimensions/position taking into account the
// virtual size and scrolled position of the window.
int w, h;
GetVirtualSize(&w, &h);
// x is always 0 so no variable needed
int y = -GetLinesHeight(0, GetFirstVisibleLine());
GetSizer()->SetDimension(0, y, w, h);
return true;
}
// fall back to default for LayoutConstraints
return wxPanel::Layout();
}
int wxVScrolledWindow::HitTest(wxCoord WXUNUSED(x), wxCoord y) const
{
const size_t lineMax = GetVisibleEnd();