Reset sorting column in generic wxDataViewCtrl properly.

We could keep using the column previously used for sorting even after
UnsetAsSortKey() was called on it. Ensure that this doesn't happen by
resetting the owner wxDataViewCtrl sort column index too.

Closes #15160.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73834 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2013-04-21 17:18:44 +00:00
parent 62a58fbef5
commit 732a176cf3
2 changed files with 29 additions and 12 deletions

View File

@ -70,7 +70,7 @@ public:
virtual bool IsSortKey() const { return m_sort; }
virtual void UnsetAsSortKey() { m_sort = false; UpdateDisplay(); }
virtual void UnsetAsSortKey();
virtual void SetSortOrder(bool ascending);

View File

@ -161,6 +161,16 @@ void wxDataViewColumn::UpdateDisplay()
}
}
void wxDataViewColumn::UnsetAsSortKey()
{
m_sort = false;
if ( m_owner )
m_owner->SetSortingColumnIndex(wxNOT_FOUND);
UpdateDisplay();
}
void wxDataViewColumn::SetSortOrder(bool ascending)
{
if ( !m_owner )
@ -613,6 +623,24 @@ public:
{
g_model = GetModel();
wxDataViewColumn* col = GetOwner()->GetSortingColumn();
if( !col )
{
if (g_model->HasDefaultCompare())
{
// See below for the explanation of IsFrozen() test.
if ( IsFrozen() )
g_column = SortColumn_OnThaw;
else
g_column = SortColumn_Default;
}
else
g_column = SortColumn_None;
g_asending = true;
return;
}
// Avoid sorting while the window is frozen, this allows to quickly add
// many items without resorting after each addition and only resort
// them all at once when the window is finally thawed, see above.
@ -622,17 +650,6 @@ public:
return;
}
wxDataViewColumn* col = GetOwner()->GetSortingColumn();
if( !col )
{
if (g_model->HasDefaultCompare())
g_column = SortColumn_Default;
else
g_column = SortColumn_None;
g_asending = true;
return;
}
g_column = col->GetModelColumn();
g_asending = col->IsSortOrderAscending();
}