- bool ok = wxPanel::Create(parent, id, pos, size, style, name);
-
- return ok;
-}
-
-wxScrolledWindow::~wxScrolledWindow()
-{
-}
-
-void wxScrolledWindow::OnPaint(wxPaintEvent& event)
-{
- // the user code didn't really draw the window if we got here, so set this
- // flag to try to call OnDraw() later
- m_handler->ResetDrawnFlag();
+ if ( win->GetAutoLayout() )
+ {
+ // Only use the content to set the window size in the direction
+ // where there's no scrolling; otherwise we're going to get a huge
+ // window in the direction in which scrolling is enabled
+ int ppuX, ppuY;
+ helper->GetScrollPixelsPerUnit(&ppuX, &ppuY);
+
+ // NB: This code used to use *current* size if min size wasn't
+ // specified, presumably to get some reasonable (i.e., larger than
+ // minimal) size. But that's a wrong thing to do in GetBestSize(),
+ // so we use minimal size as specified. If the app needs some
+ // minimal size for its scrolled window, it should set it and put
+ // the window into sizer as expandable so that it can use all space
+ // available to it.
+ //
+ // See also http://svn.wxwidgets.org/viewvc/wx?view=rev&revision=45864
+
+ wxSize minSize = win->GetMinSize();
+
+ if ( ppuX > 0 )
+ best.x = minSize.x + wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
+
+ if ( ppuY > 0 )
+ best.y = minSize.y + wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y);
+ }