Make wxGridCellChoiceEditor big enough in both directions
Previously, we ensured that the combobox was tall enough, but not that it was wide enough, which could result in truncation of its contents if the cell rectangle was too small. Fix this by increasing the size in both directions, if necessary. Also make the code simpler by using higher-level wxSize and wxRect methods instead of fiddling with the coordinates directly.
This commit is contained in:
@@ -1451,22 +1451,12 @@ void wxGridCellChoiceEditor::SetSize(const wxRect& rect)
|
||||
wxASSERT_MSG(m_control,
|
||||
wxT("The wxGridCellChoiceEditor must be created first!"));
|
||||
|
||||
// Check that the height is not too small to fit the combobox.
|
||||
wxRect rectTallEnough = rect;
|
||||
const wxSize bestSize = m_control->GetBestSize();
|
||||
const wxCoord diffY = bestSize.GetHeight() - rectTallEnough.GetHeight();
|
||||
if ( diffY > 0 )
|
||||
{
|
||||
// Do make it tall enough.
|
||||
rectTallEnough.height += diffY;
|
||||
// Check that the rectangle is big enough to fit the combobox, we can't
|
||||
// afford truncating it.
|
||||
wxSize size = rect.GetSize();
|
||||
size.IncTo(m_control->GetBestSize());
|
||||
|
||||
// Also centre the effective rectangle vertically with respect to the
|
||||
// original one.
|
||||
rectTallEnough.y -= diffY/2;
|
||||
}
|
||||
//else: The rectangle provided is already tall enough.
|
||||
|
||||
wxGridCellEditor::SetSize(rectTallEnough);
|
||||
wxGridCellEditor::SetSize(wxRect(size).CentreIn(rect));
|
||||
}
|
||||
|
||||
void wxGridCellChoiceEditor::PaintBackground(wxDC& dc,
|
||||
|
Reference in New Issue
Block a user