more woodoo in DoGetBestSize() to get rid of tree borders for default-sizes controls

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43744 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-12-02 12:51:34 +00:00
parent 24bc71f48b
commit 1f640c45d4

View File

@@ -3649,6 +3649,11 @@ void wxGenericTreeCtrl::DoDirtyProcessing()
wxSize wxGenericTreeCtrl::DoGetBestSize() const wxSize wxGenericTreeCtrl::DoGetBestSize() const
{ {
// make sure all positions are calculated as normally this only done during
// idle time but we need them for base class DoGetBestSize() to return the
// correct result
wxConstCast(this, wxGenericTreeCtrl)->CalculatePositions();
wxSize size = wxTreeCtrlBase::DoGetBestSize(); wxSize size = wxTreeCtrlBase::DoGetBestSize();
// there seems to be an implicit extra border around the items, although // there seems to be an implicit extra border around the items, although
@@ -3656,8 +3661,18 @@ wxSize wxGenericTreeCtrl::DoGetBestSize() const
// scrollbars appear in a tree with default/best size // scrollbars appear in a tree with default/best size
size.IncBy(4, 4); size.IncBy(4, 4);
// avoid caching (necessarily arbitrary) default size for empty tree // and the border has to be rounded up to a multiple of PIXELS_PER_UNIT or
if ( GetRootItem().IsOk() ) // scrollbars still appear
const wxSize& borderSize = GetWindowBorderSize();
int dx = (size.x - borderSize.x) % PIXELS_PER_UNIT;
if ( dx )
size.x += PIXELS_PER_UNIT - dx;
int dy = (size.y - borderSize.y) % PIXELS_PER_UNIT;
if ( dy )
size.y += PIXELS_PER_UNIT - dy;
// we need to update the cache too as the base class cached its own value
CacheBestSize(size); CacheBestSize(size);
return size; return size;