X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/efc49a216c2b3356ef7f96716a564f1457b79546..9b49405777342458dc1666001865eef7309b6c30:/src/generic/grid.cpp diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 13014fdb15..80c7a07be7 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -3459,7 +3459,7 @@ void wxGrid::ChangeCursorMode(CursorMode mode, wxWindow *win, bool captureMouse) { -#ifdef __WXDEBUG__ +#if wxUSE_LOG_TRACE static const wxChar *cursorModes[] = { _T("SELECT_CELL"), @@ -3476,7 +3476,7 @@ void wxGrid::ChangeCursorMode(CursorMode mode, : win ? _T("rowLabelWin") : _T("gridWin"), cursorModes[m_cursorMode], cursorModes[mode]); -#endif +#endif // wxUSE_LOG_TRACE if ( mode == m_cursorMode && win == m_winCapture && @@ -5976,7 +5976,7 @@ void wxGrid::SaveEditControlValue() wxGridCellEditor* editor = attr->GetEditor(this, row, col); wxString newval; - bool changed = editor->EndEdit(oldval, &newval); + bool changed = editor->EndEdit(row, col, this, oldval, &newval); if ( changed && SendEvent(wxEVT_GRID_CELL_CHANGING, newval) != -1 ) { @@ -8083,7 +8083,8 @@ void wxGrid::DeselectLine(int line, const wxGridOperations& oper) return; const wxGridSelectionModes mode = m_selection->GetSelectionMode(); - if ( mode == oper.GetSelectionMode() ) + if ( mode == oper.GetSelectionMode() || + mode == wxGrid::wxGridSelectRowsOrColumns ) { const wxGridCellCoords c(oper.MakeCoords(line, 0)); if ( m_selection->IsInSelection(c) ) @@ -8336,6 +8337,48 @@ wxRect wxGrid::BlockToDeviceRect( const wxGridCellCoords& topLeft, return resultRect; } +void wxGrid::DoSetSizes(const wxGridSizesInfo& sizeInfo, + const wxGridOperations& oper) +{ + BeginBatch(); + oper.SetDefaultLineSize(this, sizeInfo.m_sizeDefault, true); + const int numLines = oper.GetNumberOfLines(this); + for ( int i = 0; i < numLines; i++ ) + { + int size = sizeInfo.GetSize(i); + if ( size != sizeInfo.m_sizeDefault) + oper.SetLineSize(this, i, size); + } + EndBatch(); +} + +void wxGrid::SetColSizes(const wxGridSizesInfo& sizeInfo) +{ + DoSetSizes(sizeInfo, wxGridColumnOperations()); +} + +void wxGrid::SetRowSizes(const wxGridSizesInfo& sizeInfo) +{ + DoSetSizes(sizeInfo, wxGridRowOperations()); +} + +wxGridSizesInfo::wxGridSizesInfo(int defSize, const wxArrayInt& allSizes) +{ + m_sizeDefault = defSize; + for ( size_t i = 0; i < allSizes.size(); i++ ) + { + if ( allSizes[i] != defSize ) + m_customSizes[i] = allSizes[i]; + } +} + +int wxGridSizesInfo::GetSize(unsigned pos) const +{ + wxUnsignedToIntHashMap::const_iterator it = m_customSizes.find(pos); + + return it == m_customSizes.end() ? m_sizeDefault : it->second; +} + // ---------------------------------------------------------------------------- // drop target // ----------------------------------------------------------------------------