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
|
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;
|
||||||
|
Reference in New Issue
Block a user