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:
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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:
|
||||||
|
Reference in New Issue
Block a user