X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce5abbf9f5dc0208d9fbc91ad48101f7777299ea..a5655d37db9baabce654849fd66173f95f74e230:/src/generic/datavgen.cpp diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 8f53d7663d..db9fe4be06 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -471,6 +471,7 @@ public: void ScrollWindow( int dx, int dy, const wxRect *rect = NULL ); void ScrollTo( int rows, int column ); + unsigned GetCurrentRow() const { return m_currentRow; } bool HasCurrentRow() { return m_currentRow != (unsigned int)-1; } void ChangeCurrentRow( unsigned int row ); @@ -1378,7 +1379,7 @@ wxDragResult wxDataViewMainWindow::OnDragOver( wxDataFormat format, wxCoord x, m_owner->CalcUnscrolledPosition( xx, yy, &xx, &yy ); unsigned int row = GetLineAt( yy ); - if ((row >= GetRowCount()) || (yy > GetEndOfLastCol())) + if ((row >= GetRowCount()) || (xx > GetEndOfLastCol())) { RemoveDropHint(); return wxDragNone; @@ -1424,7 +1425,7 @@ bool wxDataViewMainWindow::OnDrop( wxDataFormat format, wxCoord x, wxCoord y ) m_owner->CalcUnscrolledPosition( xx, yy, &xx, &yy ); unsigned int row = GetLineAt( yy ); - if ((row >= GetRowCount()) || (yy > GetEndOfLastCol())) + if ((row >= GetRowCount()) || (xx > GetEndOfLastCol())) return false; wxDataViewItem item = GetItemByRow( row ); @@ -1453,7 +1454,7 @@ wxDragResult wxDataViewMainWindow::OnData( wxDataFormat format, wxCoord x, wxCoo m_owner->CalcUnscrolledPosition( xx, yy, &xx, &yy ); unsigned int row = GetLineAt( yy ); - if ((row >= GetRowCount()) || (yy > GetEndOfLastCol())) + if ((row >= GetRowCount()) || (xx > GetEndOfLastCol())) return wxDragNone; wxDataViewItem item = GetItemByRow( row ); @@ -3888,9 +3889,13 @@ void wxDataViewCtrl::Init() m_headerArea = NULL; } -bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator ) +bool wxDataViewCtrl::Create(wxWindow *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name) { // if ( (style & wxBORDER_MASK) == 0) // style |= wxBORDER_SUNKEN; @@ -3898,7 +3903,7 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id, Init(); if (!wxControl::Create( parent, id, pos, size, - style | wxScrolledWindowStyle, validator)) + style | wxScrolledWindowStyle, validator, name)) return false; SetInitialSize(size); @@ -4170,6 +4175,24 @@ wxDataViewColumn *wxDataViewCtrl::GetSortingColumn() const : GetColumn(m_sortingColumnIdx); } +wxDataViewItem wxDataViewCtrl::DoGetCurrentItem() const +{ + return GetItemByRow(m_clientArea->GetCurrentRow()); +} + +void wxDataViewCtrl::DoSetCurrentItem(const wxDataViewItem& item) +{ + const int row = m_clientArea->GetRowByItem(item); + + const unsigned oldCurrent = m_clientArea->GetCurrentRow(); + if ( static_cast(row) != oldCurrent ) + { + m_clientArea->ChangeCurrentRow(row); + m_clientArea->RefreshRow(oldCurrent); + m_clientArea->RefreshRow(row); + } +} + // Selection code with wxDataViewItem as parameters wxDataViewItem wxDataViewCtrl::GetSelection() const {