add methods to get/set sortability of listbox

This commit is contained in:
beru 2015-04-27 06:18:28 +09:00
parent 458c6b1d3c
commit 77c039be42
2 changed files with 26 additions and 2 deletions

View File

@ -552,7 +552,10 @@ By \a clicking on a header the list get \a reordered, first up, and then down al
_m_ease_key(&key);
}
///Sets a strict weak ordering comparer for a column
bool sortable() const;
void sortable(bool enable);
///Sets a strict weak ordering comparer for a column
void set_sort_compare(size_type col, std::function<bool(const nana::string&, nana::any*,
const nana::string&, nana::any*, bool reverse)> strick_ordering);

View File

@ -348,6 +348,16 @@ namespace nana
return false;
}
bool sortable() const
{
return sortable_;
}
void sortable(bool enable)
{
sortable_ = enable;
}
std::function<bool(const nana::string&, nana::any*, const nana::string&, nana::any*, bool reverse)> fetch_comp(std::size_t index) const
{
if(index < cont_.size())
@ -507,6 +517,7 @@ namespace nana
}
private:
bool visible_{true};
bool sortable_{true};
container cont_;
};
@ -3183,7 +3194,7 @@ namespace nana
auto prev_state = essence_->ptr_state;
essence_->ptr_state = item_state::highlighted;
//Do sort
if (essence_->pointer_where.first == parts::header && prev_state == item_state::pressed)
if (essence_->header.sortable() && essence_->pointer_where.first == parts::header && prev_state == item_state::pressed)
{
if(essence_->pointer_where.second < essence_->header.cont().size())
{
@ -4018,6 +4029,16 @@ namespace nana
return item_proxy(ess);
}
bool listbox::sortable() const
{
return _m_ess().header.sortable();
}
void listbox::sortable(bool enable)
{
_m_ess().header.sortable(enable);
}
void listbox::set_sort_compare(size_type col, std::function<bool(const nana::string&, nana::any*, const nana::string&, nana::any*, bool reverse)> strick_ordering)
{
_m_ess().header.column(col).weak_ordering = std::move(strick_ordering);