diff options
author | Jaume Pujantell <jaume.pujantell@collabora.com> | 2024-07-30 16:45:31 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2024-08-07 08:28:31 +0200 |
commit | 88219419bd99349453471272e9c59424c014826d (patch) | |
tree | 5cccee2791a7bb809ef65001841fc548c64159f6 | |
parent | 3a6e28a489132afd12a9bee023c4ba94a3678e4e (diff) |
cool#9704 calc jsdialog autofilter send disabled entry information
Added the code necessary to disable already filtered entries on
jsdialog autofilter, like it is done on desktop UI.
Change-Id: I095b7fe0054efcaff2717d05a2ab7bd1d8248b29
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171246
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
(cherry picked from commit 2815d11bb608a933e14b799cc802825423426d28)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171530
Tested-by: Jenkins
-rw-r--r-- | include/vcl/toolkit/treelistbox.hxx | 1 | ||||
-rw-r--r-- | vcl/inc/jsdialog/jsdialogbuilder.hxx | 5 | ||||
-rw-r--r-- | vcl/jsdialog/jsdialogbuilder.cxx | 20 | ||||
-rw-r--r-- | vcl/source/treelist/svtabbx.cxx | 1 | ||||
-rw-r--r-- | vcl/source/treelist/treelistbox.cxx | 12 |
5 files changed, 39 insertions, 0 deletions
diff --git a/include/vcl/toolkit/treelistbox.hxx b/include/vcl/toolkit/treelistbox.hxx index f116b82efcb2..7d3213bfa1bc 100644 --- a/include/vcl/toolkit/treelistbox.hxx +++ b/include/vcl/toolkit/treelistbox.hxx @@ -563,6 +563,7 @@ public: void SetCheckButtonState( SvTreeListEntry*, SvButtonState ); SvButtonState GetCheckButtonState( SvTreeListEntry* ) const; + bool GetCheckButtonEnabled(SvTreeListEntry* pEntry) const; void SetEntryText(SvTreeListEntry*, const OUString& ); void SetExpandedEntryBmp( SvTreeListEntry* _pEntry, const Image& _rImage ); diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index ee4105e5d7b4..28435d6536f1 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -774,6 +774,11 @@ public: virtual void set_toggle(int pos, TriState eState, int col = -1) override; virtual void set_toggle(const weld::TreeIter& rIter, TriState bOn, int col = -1) override; + using SalInstanceTreeView::set_sensitive; + /// pos is used differently here, it defines how many steps of iterator we need to perform to take entry + virtual void set_sensitive(int pos, bool bSensitive, int col = -1) override; + virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, int col = -1) override; + using SalInstanceTreeView::select; /// pos is used differently here, it defines how many steps of iterator we need to perform to take entry virtual void select(int pos) override; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index aba9d5381855..8cc2d0f38c86 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -2056,6 +2056,26 @@ void JSTreeView::set_toggle(const weld::TreeIter& rIter, TriState bOn, int col) sendUpdate(); } +void JSTreeView::set_sensitive(int pos, bool bSensitive, int col) +{ + SvTreeListEntry* pEntry = m_xTreeView->GetEntry(nullptr, 0); + + while (pEntry && pos--) + pEntry = m_xTreeView->Next(pEntry); + + if (pEntry) + { + SalInstanceTreeView::set_sensitive(pEntry, bSensitive, col); + sendUpdate(); + } +} + +void JSTreeView::set_sensitive(const weld::TreeIter& rIter, bool bSensitive, int col) +{ + SalInstanceTreeView::set_sensitive(rIter, bSensitive, col); + sendUpdate(); +} + void JSTreeView::select(int pos) { assert(m_xTreeView->IsUpdateMode() && "don't select when frozen"); diff --git a/vcl/source/treelist/svtabbx.cxx b/vcl/source/treelist/svtabbx.cxx index 9614c7493c90..7968635362ad 100644 --- a/vcl/source/treelist/svtabbx.cxx +++ b/vcl/source/treelist/svtabbx.cxx @@ -161,6 +161,7 @@ static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, rJsonWriter.put("state", false); else if (eCheckState == SvButtonState::Checked) rJsonWriter.put("state", true); + rJsonWriter.put("enabled", pTabListBox->GetCheckButtonEnabled(pEntry)); } if (pTabListBox->IsSelected(pEntry)) diff --git a/vcl/source/treelist/treelistbox.cxx b/vcl/source/treelist/treelistbox.cxx index a16758e3eaba..2984d1aeb38c 100644 --- a/vcl/source/treelist/treelistbox.cxx +++ b/vcl/source/treelist/treelistbox.cxx @@ -1707,6 +1707,18 @@ SvButtonState SvTreeListBox::GetCheckButtonState( SvTreeListEntry* pEntry ) cons return eState; } +bool SvTreeListBox::GetCheckButtonEnabled(SvTreeListEntry* pEntry) const +{ + if (pEntry && (nTreeFlags & SvTreeFlags::CHKBTN)) + { + SvLBoxButton* pItem + = static_cast<SvLBoxButton*>(pEntry->GetFirstItem(SvLBoxItemType::Button)); + if (pItem) + return pItem->isEnable(); + } + return false; +} + void SvTreeListBox::CheckButtonHdl() { if ( pCheckButtonData ) |