summaryrefslogtreecommitdiff
path: root/sc/source/ui/dialogs/searchresults.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-06-09 09:27:56 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-06-09 13:30:44 +0200
commit066d70da9391b43e9586736812b1064028aa53fc (patch)
treead6f8e14a5f7b00199e2f85b60cff8e50f52d02d /sc/source/ui/dialogs/searchresults.cxx
parent341cc5bfa06e895f091523bbf8c159ca626b6f1a (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.cxx31
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)