Ensure that combobox editor used by wxGrid is tall enough.
Set the rectangle of wxGridCellChoiceEditor to be at least as tall as the best (i.e. minimal) wxComboBox size because otherwise the control can be unusable. Closes #13818. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70693 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4dfc0ca0c5
commit
e59e670c9b
@ -295,6 +295,8 @@ public:
|
||||
wxWindowID id,
|
||||
wxEvtHandler* evtHandler);
|
||||
|
||||
virtual void SetSize(const wxRect& rect);
|
||||
|
||||
virtual void PaintBackground(const wxRect& rectCell, wxGridCellAttr *attr);
|
||||
|
||||
virtual void BeginEdit(int row, int col, wxGrid* grid);
|
||||
|
@ -1414,6 +1414,29 @@ void wxGridCellChoiceEditor::Create(wxWindow* parent,
|
||||
wxGridCellEditor::Create(parent, id, evtHandler);
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
void wxGridCellChoiceEditor::PaintBackground(const wxRect& rectCell,
|
||||
wxGridCellAttr * attr)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user