Fix assert when computing best column width in generic wxDVC
Do not invoke a renderer's PrepareForItem when estimating best column width in generic wxDVC for items with no value because PrepareForItem fails for items with no value when the null variant cannot be converted to the expected type. Closes https://github.com/wxWidgets/wxWidgets/pull/2149
This commit is contained in:
committed by
Vadim Zeitlin
parent
f5bc0a9b31
commit
9640f0027f
@@ -5937,22 +5937,27 @@ public:
|
||||
|
||||
virtual void UpdateWithRow(int row) wxOVERRIDE
|
||||
{
|
||||
int indent = 0;
|
||||
int width = 0;
|
||||
wxDataViewItem item;
|
||||
|
||||
if ( m_isExpanderCol )
|
||||
{
|
||||
wxDataViewTreeNode *node = m_clientArea->GetTreeNodeByRow(row);
|
||||
item = node->GetItem();
|
||||
indent = m_dvc->GetIndent() * node->GetIndentLevel() + m_expanderSize;
|
||||
width = m_dvc->GetIndent() * node->GetIndentLevel() + m_expanderSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
item = m_clientArea->GetItemByRow(row);
|
||||
}
|
||||
|
||||
m_renderer->PrepareForItem(m_model, item, GetColumn());
|
||||
UpdateWithWidth(m_renderer->GetSize().x + indent);
|
||||
if ( m_model->HasValue(item, GetColumn()) )
|
||||
{
|
||||
m_renderer->PrepareForItem(m_model, item, GetColumn());
|
||||
width += m_renderer->GetSize().x;
|
||||
}
|
||||
|
||||
UpdateWithWidth(width);
|
||||
}
|
||||
|
||||
private:
|
||||
|
Reference in New Issue
Block a user