sc/source/ui/dialogs/searchresults.cxx | 31 +++++++++++++++++++++++++++++++ sc/source/ui/inc/searchresults.hxx | 2 ++ sc/uiconfig/scalc/ui/searchresults.ui | 3 +++ 3 files changed, 36 insertions(+)
New commits: commit e8a4fae1cdc2373bfb1fd9e5f8ac55499f58f9a5 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Jun 9 09:27:56 2020 +0100 Commit: Eike Rathke <er...@redhat.com> CommitDate: Tue Jun 16 17:58:52 2020 +0200 Resolves: tdf#133780 allow sorting search result treeview columns Change-Id: I7d5b1ffdaf99fd2e28dfd124db0fbbd4036e2dd6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95878 Tested-by: Jenkins Reviewed-by: Eike Rathke <er...@redhat.com> diff --git a/sc/source/ui/dialogs/searchresults.cxx b/sc/source/ui/dialogs/searchresults.cxx index 8b896b466ab6..3604e1599a16 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) diff --git a/sc/source/ui/inc/searchresults.hxx b/sc/source/ui/inc/searchresults.hxx index 137b999d967c..a0ca894141d9 100644 --- a/sc/source/ui/inc/searchresults.hxx +++ b/sc/source/ui/inc/searchresults.hxx @@ -24,11 +24,13 @@ class SearchResultsDlg : public SfxDialogController OUString const aSkipped; SfxBindings* const mpBindings; ScDocument* mpDoc; + bool mbSorted; std::unique_ptr<weld::TreeView> mxList; std::unique_ptr<weld::Label> mxSearchResults; std::unique_ptr<weld::CheckButton> mxShowDialog; DECL_LINK(ListSelectHdl, weld::TreeView&, void); + DECL_LINK(HeaderBarClick, int, void); DECL_STATIC_LINK(SearchResultsDlg, OnShowToggled, weld::ToggleButton&, void); public: SearchResultsDlg(SfxBindings* _pBindings, weld::Window* pParent); diff --git a/sc/uiconfig/scalc/ui/searchresults.ui b/sc/uiconfig/scalc/ui/searchresults.ui index cb8fbaf44e7e..ca56a9950a7f 100644 --- a/sc/uiconfig/scalc/ui/searchresults.ui +++ b/sc/uiconfig/scalc/ui/searchresults.ui @@ -100,6 +100,7 @@ <property name="resizable">True</property> <property name="spacing">6</property> <property name="title" translatable="yes" context="searchresults|sheet">Sheet</property> + <property name="clickable">True</property> <child> <object class="GtkCellRendererText" id="cellrenderer1"/> <attributes> @@ -113,6 +114,7 @@ <property name="resizable">True</property> <property name="spacing">6</property> <property name="title" translatable="yes" context="searchresults|cell">Cell</property> + <property name="clickable">True</property> <child> <object class="GtkCellRendererText" id="cellrenderer2"/> <attributes> @@ -126,6 +128,7 @@ <property name="resizable">True</property> <property name="spacing">6</property> <property name="title" translatable="yes" context="searchresults|content">Content</property> + <property name="clickable">True</property> <child> <object class="GtkCellRendererText" id="cellrenderer3"/> <attributes> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits