diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-06-09 09:27:56 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-06-09 13:30:44 +0200 |
commit | 066d70da9391b43e9586736812b1064028aa53fc (patch) | |
tree | ad6f8e14a5f7b00199e2f85b60cff8e50f52d02d /sc/source/ui/dialogs/searchresults.cxx | |
parent | 341cc5bfa06e895f091523bbf8c159ca626b6f1a (diff) |
Resolves: tdf#133780 allow sorting search result treeview columns
Change-Id: I7d5b1ffdaf99fd2e28dfd124db0fbbd4036e2dd6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95896
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc/source/ui/dialogs/searchresults.cxx')
-rw-r--r-- | sc/source/ui/dialogs/searchresults.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sc/source/ui/dialogs/searchresults.cxx b/sc/source/ui/dialogs/searchresults.cxx index 76cffa4664a5..8032a7962549 100644 --- a/sc/source/ui/dialogs/searchresults.cxx +++ b/sc/source/ui/dialogs/searchresults.cxx @@ -24,6 +24,7 @@ SearchResultsDlg::SearchResultsDlg(SfxBindings* _pBindings, weld::Window* pParen , aSkipped(ScResId(SCSTR_SKIPPED)) , mpBindings(_pBindings) , mpDoc(nullptr) + , mbSorted(false) , mxList(m_xBuilder->weld_tree_view("results")) , mxSearchResults(m_xBuilder->weld_label("lbSearchResults")) , mxShowDialog(m_xBuilder->weld_check_button("cbShow")) @@ -35,6 +36,7 @@ SearchResultsDlg::SearchResultsDlg(SfxBindings* _pBindings, weld::Window* pParen aWidths.push_back(mxList->get_approximate_digit_width() * 10); mxList->set_column_fixed_widths(aWidths); mxList->connect_changed(LINK(this, SearchResultsDlg, ListSelectHdl)); + mxList->connect_column_clicked(LINK(this, SearchResultsDlg, HeaderBarClick)); } SearchResultsDlg::~SearchResultsDlg() @@ -161,6 +163,35 @@ void SearchResultsDlg::Close() SfxDialogController::Close(); } +IMPL_LINK(SearchResultsDlg, HeaderBarClick, int, nColumn, void) +{ + if (!mbSorted) + { + mxList->make_sorted(); + mbSorted = true; + } + + bool bSortAtoZ = mxList->get_sort_order(); + + //set new arrow positions in headerbar + if (nColumn == mxList->get_sort_column()) + { + bSortAtoZ = !bSortAtoZ; + mxList->set_sort_order(bSortAtoZ); + } + else + { + mxList->set_sort_indicator(TRISTATE_INDET, mxList->get_sort_column()); + mxList->set_sort_column(nColumn); + } + + if (nColumn != -1) + { + //sort lists + mxList->set_sort_indicator(bSortAtoZ ? TRISTATE_TRUE : TRISTATE_FALSE, nColumn); + } +} + IMPL_LINK_NOARG( SearchResultsDlg, ListSelectHdl, weld::TreeView&, void ) { if (!mpDoc) |