]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/grideditors.cpp
A patch adding wxHTMLDataObject which can be used for handling the standard platform...
[wxWidgets.git] / src / generic / grideditors.cpp
index d3113c686747dbacb862d08bb934a6e0a041dcfb..6af6ad1462735bf873ddbb81f11b501b78015559 100644 (file)
@@ -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)
 {
@@ -1445,6 +1468,14 @@ void wxGridCellChoiceEditor::BeginEdit(int row, int col, wxGrid* grid)
 
     Combo()->SetFocus();
 
+#ifdef __WXOSX_COCOA__
+    // This is a work around for the combobox being simply dismissed when a
+    // choice is made in it under OS X. The bug is almost certainly due to a
+    // problem in focus events generation logic but it's not obvious to fix and
+    // for now this at least allows to use wxGrid.
+    Combo()->Popup();
+#endif
+
     if (evtHandler)
     {
         // When dropping down the menu, a kill focus event