Corrected/implemented sorting (by way of clicking on

on the header button) for the generic code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-04-18 12:31:35 +00:00
parent b553626907
commit c3112d560e
4 changed files with 30 additions and 6 deletions

View File

@@ -24,7 +24,7 @@
#if defined(__WXGTK20__) #if defined(__WXGTK20__)
// for testing // for testing
// #define wxUSE_GENERICDATAVIEWCTRL 1 #define wxUSE_GENERICDATAVIEWCTRL 1
#elif defined(__WXMAC__) #elif defined(__WXMAC__)
#define wxUSE_GENERICDATAVIEWCTRL 1 #define wxUSE_GENERICDATAVIEWCTRL 1
#else #else

View File

@@ -297,6 +297,7 @@ private:
int m_flags; int m_flags;
wxAlignment m_align; wxAlignment m_align;
wxString m_title; wxString m_title;
bool m_ascending;
void Init(int width); void Init(int width);

View File

@@ -348,6 +348,9 @@ void wxDataViewSortedListModel::Resort()
unsigned int i; unsigned int i;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
m_array.Add( i ); m_array.Add( i );
// do we need the neworder?
wxDataViewListModel::RowsReordered( NULL );
} }
#if 0 #if 0

View File

@@ -176,6 +176,8 @@ public:
delete m_resizeCursor; delete m_resizeCursor;
} }
virtual void UpdateDisplay() { Refresh(); }
// event handlers: // event handlers:
void OnPaint( wxPaintEvent &event ); void OnPaint( wxPaintEvent &event );
@@ -819,6 +821,7 @@ void wxDataViewColumn::Init( int width )
{ {
m_width = width; m_width = width;
m_minWidth = wxDVC_DEFAULT_MINWIDTH; m_minWidth = wxDVC_DEFAULT_MINWIDTH;
m_ascending = true;
} }
void wxDataViewColumn::SetResizeable( bool resizeable ) void wxDataViewColumn::SetResizeable( bool resizeable )
@@ -847,17 +850,24 @@ void wxDataViewColumn::SetSortable( bool sortable )
m_flags |= wxDATAVIEW_COL_SORTABLE; m_flags |= wxDATAVIEW_COL_SORTABLE;
else else
m_flags &= ~wxDATAVIEW_COL_SORTABLE; m_flags &= ~wxDATAVIEW_COL_SORTABLE;
// Update header button
if (GetOwner())
GetOwner()->OnColumnChange();
} }
void wxDataViewColumn::SetSortOrder( bool WXUNUSED(ascending) ) void wxDataViewColumn::SetSortOrder( bool ascending )
{ {
// TODO m_ascending = ascending;
// Update header button
if (GetOwner())
GetOwner()->OnColumnChange();
} }
bool wxDataViewColumn::IsSortOrderAscending() const bool wxDataViewColumn::IsSortOrderAscending() const
{ {
// TODO return m_ascending;
return true;
} }
void wxDataViewColumn::SetInternalWidth( int width ) void wxDataViewColumn::SetInternalWidth( int width )
@@ -1279,13 +1289,23 @@ void wxGenericDataViewHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
int cw = col->GetWidth(); int cw = col->GetWidth();
int ch = h; int ch = h;
wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE;
if (col->IsSortable())
{
if (col->IsSortOrderAscending())
sortArrow = wxHDR_SORT_ICON_UP;
else
sortArrow = wxHDR_SORT_ICON_DOWN;
}
wxRendererNative::Get().DrawHeaderButton wxRendererNative::Get().DrawHeaderButton
( (
this, this,
dc, dc,
wxRect(xpos, 0, cw, ch-1), wxRect(xpos, 0, cw, ch-1),
m_parent->IsEnabled() ? 0 m_parent->IsEnabled() ? 0
: (int)wxCONTROL_DISABLED : (int)wxCONTROL_DISABLED,
sortArrow
); );
// align as required the column title: // align as required the column title: