virtual void UnsetAsSortKey() { m_sort = false; UpdateDisplay(); }
- virtual void SetSortOrder(bool ascending)
- {
- m_sort = true;
- m_sortAscending = ascending;
- UpdateDisplay();
- }
+ virtual void SetSortOrder(bool ascending);
virtual bool IsSortOrderAscending() const { return m_sortAscending; }
}
}
+void wxDataViewColumn::SetSortOrder(bool ascending)
+{
+ if ( !m_owner )
+ return;
+
+ // First unset the old sort column if any.
+ int oldSortKey = m_owner->GetSortingColumnIndex();
+ if ( oldSortKey != wxNOT_FOUND )
+ {
+ m_owner->GetColumn(oldSortKey)->UnsetAsSortKey();
+ }
+
+ // Now set this one as the new sort column.
+ const int idx = m_owner->GetColumnIndex(this);
+ m_owner->SetSortingColumnIndex(idx);
+
+ m_sort = true;
+ m_sortAscending = ascending;
+
+ // Call this directly instead of using UpdateDisplay() as we already have
+ // the column index, no need to look it up again.
+ m_owner->OnColumnChange(idx);
+}
+
//-----------------------------------------------------------------------------
// wxDataViewHeaderWindow
//-----------------------------------------------------------------------------
}
else // not using this column for sorting yet
{
- // first unset the old sort column if any
- int oldSortKey = owner->GetSortingColumnIndex();
- if ( oldSortKey != wxNOT_FOUND )
- {
- owner->GetColumn(oldSortKey)->UnsetAsSortKey();
- owner->OnColumnChange(oldSortKey);
- }
-
- owner->SetSortingColumnIndex(idx);
col->SetSortOrder(true);
}