include/vcl/toolkit/treelistbox.hxx | 1 + vcl/inc/jsdialog/jsdialogbuilder.hxx | 5 +++++ vcl/jsdialog/jsdialogbuilder.cxx | 20 ++++++++++++++++++++ vcl/source/treelist/svtabbx.cxx | 1 + vcl/source/treelist/treelistbox.cxx | 12 ++++++++++++ 5 files changed, 39 insertions(+)
New commits: commit 2815d11bb608a933e14b799cc802825423426d28 Author: Jaume Pujantell <[email protected]> AuthorDate: Tue Jul 30 16:45:31 2024 +0200 Commit: Miklos Vajna <[email protected]> CommitDate: Tue Aug 6 08:25:51 2024 +0200 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 <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> diff --git a/include/vcl/toolkit/treelistbox.hxx b/include/vcl/toolkit/treelistbox.hxx index ecbd489fd853..007c119c5257 100644 --- a/include/vcl/toolkit/treelistbox.hxx +++ b/include/vcl/toolkit/treelistbox.hxx @@ -561,6 +561,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 58f8d431d258..0008f9f5fda9 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -771,6 +771,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 7a38aff47873..d68a52b7e441 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -2060,6 +2060,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 feb4f0b2011f..658584650e15 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 6dd915e23996..67292505671f 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 )
