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:
@@ -3649,6 +3649,11 @@ void wxGenericTreeCtrl::DoDirtyProcessing()
|
||||
|
||||
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();
|
||||
|
||||
// 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
|
||||
size.IncBy(4, 4);
|
||||
|
||||
// avoid caching (necessarily arbitrary) default size for empty tree
|
||||
if ( GetRootItem().IsOk() )
|
||||
// and the border has to be rounded up to a multiple of PIXELS_PER_UNIT or
|
||||
// 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);
|
||||
|
||||
return size;
|
||||
|
Reference in New Issue
Block a user