Use correct separator sizes in MSW wxToolBar best size calculation
Don't assume that all the items (except for the controls) have the same size in wxToolBar::DoGetBestSize(), this is manifestly not true at least for the separators and resulted in too much space left over at the end of the toolbar.
This commit is contained in:
@@ -596,16 +596,19 @@ wxSize wxToolBar::DoGetBestSize() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
wxToolBarToolsList::compatibility_iterator node;
|
wxToolBarToolsList::compatibility_iterator node;
|
||||||
|
int toolIndex = 0;
|
||||||
for ( node = m_tools.GetFirst(); node; node = node->GetNext() )
|
for ( node = m_tools.GetFirst(); node; node = node->GetNext() )
|
||||||
{
|
{
|
||||||
wxToolBarTool * const
|
wxToolBarTool * const
|
||||||
tool = static_cast<wxToolBarTool *>(node->GetData());
|
tool = static_cast<wxToolBarTool *>(node->GetData());
|
||||||
|
|
||||||
|
RECT rcItem = wxGetTBItemRect(GetHwnd(), toolIndex++);
|
||||||
|
|
||||||
if ( IsVertical() )
|
if ( IsVertical() )
|
||||||
{
|
{
|
||||||
if ( !tool->IsControl() )
|
if ( !tool->IsControl() )
|
||||||
{
|
{
|
||||||
sizeBest.y += sizeTool.y;
|
sizeBest.y += rcItem.bottom - rcItem.top;
|
||||||
}
|
}
|
||||||
//else: Controls are not shown in vertical toolbars at all.
|
//else: Controls are not shown in vertical toolbars at all.
|
||||||
}
|
}
|
||||||
@@ -622,7 +625,7 @@ wxSize wxToolBar::DoGetBestSize() const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sizeBest.x += sizeTool.x;
|
sizeBest.x += rcItem.right - rcItem.left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user