wxEvtHandler* evtHandler,
long style)
{
-#if defined(__WXMSW__)
style |= wxTE_PROCESS_ENTER |
wxTE_PROCESS_TAB |
wxTE_AUTO_SCROLL |
wxNO_BORDER;
-#endif
m_control = new wxTextCtrl(parent, id, wxEmptyString,
wxDefaultPosition, wxDefaultSize,
wxWindowID id,
wxEvtHandler* evtHandler)
{
+ int style = wxBORDER_NONE;
+ if (!m_allowOthers)
+ style |= wxCB_READONLY;
m_control = new wxComboBox(parent, id, wxEmptyString,
wxDefaultPosition, wxDefaultSize,
- m_choices,
- m_allowOthers ? 0 : wxCB_READONLY);
+ m_choices, style );
wxGridCellEditor::Create(parent, id, evtHandler);
}
wxSize size = checkbox->GetBestSize();
wxCoord checkSize = size.y + 2 * wxGRID_CHECKMARK_MARGIN;
- // FIXME wxGTK::wxCheckBox::GetBestSize() gives "wrong" result
-#if defined(__WXGTK__) || defined(__WXMOTIF__)
+#if defined(__WXMOTIF__)
checkSize -= size.y / 2;
#endif
if ( size.x >= minSize || size.y >= minSize )
{
// and even leave (at least) 1 pixel margin
- size.x = size.y = minSize - 2;
+ size.x = size.y = minSize;
}
// draw a border around checkmark
value = wxGridCellBoolEditor::IsTrueValue(cellval);
}
- if ( value )
- {
- wxRect rectMark = rectBorder;
-
-#ifdef __WXMSW__
- // MSW DrawCheckMark() is weird (and should probably be changed...)
- rectMark.Inflate(-wxGRID_CHECKMARK_MARGIN / 2);
- rectMark.x++;
- rectMark.y++;
-#else
- rectMark.Inflate(-wxGRID_CHECKMARK_MARGIN);
-#endif
-
- dc.SetTextForeground(attr.GetTextColour());
- dc.DrawCheckMark(rectMark);
- }
-
- dc.SetBrush(*wxTRANSPARENT_BRUSH);
- dc.SetPen(wxPen(attr.GetTextColour(), 1, wxSOLID));
- dc.DrawRectangle(rectBorder);
+ int flags = 0;
+ if (value)
+ flags |= wxCONTROL_CHECKED;
+
+ wxRendererNative::Get().DrawCheckBox( &grid, dc, rectBorder, flags );
}
// ----------------------------------------------------------------------------
return;
}
-#if !(defined(__WXMAC__) && wxMAC_USE_CORE_GRAPHICS)
+#if !defined(__WXMAC__)
wxClientDC dc( m_gridWin );
PrepareDC( dc );
#endif
// Otherwise refresh redraws the highlight!
m_currentCellCoords = coords;
-#if defined(__WXMAC__) && wxMAC_USE_CORE_GRAPHICS
+#if defined(__WXMAC__)
m_gridWin->Refresh(true /*, & r */);
#else
DrawGridCellArea( dc, cells );
m_currentCellCoords = coords;
wxGridCellAttr *attr = GetCellAttr( coords );
-#if !(defined(__WXMAC__) && wxMAC_USE_CORE_GRAPHICS)
+#if !defined(__WXMAC__)
DrawCellHighlight( dc, attr );
#endif
attr->DecRef();
int rightCol = GetColPos( internalXToCol(right) );
int bottomRow = internalYToRow(bottom);
-#if !defined(__WXMAC__) || wxMAC_USE_CORE_GRAPHICS
wxRegion clippedcells(0, 0, cw, ch);
int i, j, cell_rows, cell_cols;
}
}
}
-#else
- wxRegion clippedcells( left, top, right - left, bottom - top );
-
- int i, j, cell_rows, cell_cols;
- wxRect rect;
-
- for (j=topRow; j<=bottomRow; j++)
- {
- for (i=leftCol; i<=rightCol; i++)
- {
- GetCellSize( j, i, &cell_rows, &cell_cols );
- if ((cell_rows > 1) || (cell_cols > 1))
- {
- rect = CellToRect(j, i);
- clippedcells.Subtract(rect);
- }
- else if ((cell_rows < 0) || (cell_cols < 0))
- {
- rect = CellToRect(j + cell_rows, i + cell_cols);
- clippedcells.Subtract(rect);
- }
- }
- }
-#endif
dc.SetClippingRegion( clippedcells );
if (rect.GetRight() > client_right)
rect.SetRight( client_right - 1 );
}
-
+
editor->SetCellAttr( attr );
editor->SetSize( rect );
if (nXMove != 0)
if ( column )
{
+ // Ensure automatic width is not less than minimal width. See the
+ // comment in SetColSize() for explanation of why this isn't done
+ // in SetColSize().
+ if ( !setAsMin )
+ extentMax = wxMax(extentMax, GetColMinimalWidth(col));
+
SetColSize( col, extentMax );
if ( !GetBatchCount() )
{
}
else
{
+ // Ensure automatic width is not less than minimal height. See the
+ // comment in SetColSize() for explanation of why this isn't done
+ // in SetRowSize().
+ if ( !setAsMin )
+ extentMax = wxMax(extentMax, GetRowMinimalHeight(row));
+
SetRowSize(row, extentMax);
if ( !GetBatchCount() )
{