compilerplugins/clang/mergeclasses.results | 1 fpicker/source/office/fpdialogbase.hxx | 1 include/vcl/toolkit/svtabbx.hxx | 29 ++++++++++++++++++++++++ vcl/inc/treeglue.hxx | 35 ----------------------------- vcl/source/app/salvtables.cxx | 20 ++++++++-------- vcl/source/window/builder.cxx | 2 - 6 files changed, 40 insertions(+), 48 deletions(-)
New commits: commit fb0bd0e39bd8ccc618ef34bc6f830067723c1b4d Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Jan 31 15:36:05 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Feb 4 00:39:43 2025 +0100 fpicker: Drop unused SvTabListBox forward decl Change-Id: I4e6a7cae9d7f932fcd7c0449ce490920227ea57d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181023 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/fpicker/source/office/fpdialogbase.hxx b/fpicker/source/office/fpdialogbase.hxx index 60205695b719..fea0f6e9766e 100644 --- a/fpicker/source/office/fpdialogbase.hxx +++ b/fpicker/source/office/fpdialogbase.hxx @@ -24,7 +24,6 @@ #include <com/sun/star/uno/Sequence.hxx> #include "pickercallbacks.hxx" -class SvTabListBox; class SvtFileView; class SvtFileDialogFilter_Impl; commit a3befdae52513f04ce57b1f9ecab61ea439ebed9 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Jan 31 15:27:24 2025 +0100 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Tue Feb 4 00:39:37 2025 +0100 vcl: Merge LclHeaderTabListBox into SvHeaderTabListBox By now LclHeaderTabListBox is the only SvHeaderTabListBox subclass and SvHeaderTabListBox is not used by itself. Merge the former into the latter to make the class hierarchy a little less complex. The "plain" SvHeaderTabListBox or other subclasses used to be used in the past, but that is no longer the case, see e.g. commit 4e07b178f58b1dabbb48bc9f26155b8270a4a72d Date: Tue Feb 18 10:16:40 2020 +0000 weld WatchWindow panel which eliminated one use. Copy the comment about the default NotifyStartDrag implementation in the base class being weird from vcl/inc/treeglue.hxx but also leave it there, as it applies for the LclTabListBox class that is still there just the same. Change-Id: I658332a9675a9c67c7250f2577a6eb1a0cc491f7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181022 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/compilerplugins/clang/mergeclasses.results b/compilerplugins/clang/mergeclasses.results index 7d96c32e075e..e3ddbd3d0576 100644 --- a/compilerplugins/clang/mergeclasses.results +++ b/compilerplugins/clang/mergeclasses.results @@ -221,7 +221,6 @@ merge StgAvlIterator with StgIterator merge StgAvlNode with StgDirEntry merge StgCache with StgIo merge StylesPreviewWindow_Base with StylesPreviewWindow_Impl -merge SvHeaderTabListBox with LclHeaderTabListBox merge SvIdlDataBase with SvIdlWorkingBase merge SvListView with SvTreeListBox maybe merge SvLockBytes with utl::UcbLockBytes, in modules tools and unotools diff --git a/include/vcl/toolkit/svtabbx.hxx b/include/vcl/toolkit/svtabbx.hxx index 4e6eb66b2969..65e6d106db7d 100644 --- a/include/vcl/toolkit/svtabbx.hxx +++ b/include/vcl/toolkit/svtabbx.hxx @@ -100,6 +100,9 @@ private: rtl::Reference<AccessibleTabListBox> m_xAccessible; std::vector<css::uno::Reference<css::accessibility::XAccessible>> m_aAccessibleChildren; + Link<SvTreeListEntry*, bool> m_aEditingEntryHdl; + Link<const IterString&, bool> m_aEditedEntryHdl; + DECL_DLLPRIVATE_LINK( ScrollHdl_Impl, SvTreeListBox*, void ); DECL_DLLPRIVATE_LINK( CreateAccessibleHdl_Impl, HeaderBar*, void ); @@ -203,6 +206,32 @@ public: virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint) override; virtual void DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) override; + + void SetEditingEntryHdl(const Link<SvTreeListEntry*, bool>& rLink) + { + m_aEditingEntryHdl = rLink; + } + + void SetEditedEntryHdl(const Link<const IterString&, bool>& rLink) + { + m_aEditedEntryHdl = rLink; + } + + //the default NotifyStartDrag is weird to me, and defaults to enabling all + //possibilities when drag starts, while restricting it to some subset of + //the configured drag drop mode would make more sense to me, but I'm not + //going to change the baseclass + virtual DragDropMode NotifyStartDrag() override { return GetDragDropMode(); } + + virtual bool EditingEntry(SvTreeListEntry* pEntry) override + { + return m_aEditingEntryHdl.Call(pEntry); + } + + virtual bool EditedEntry(SvTreeListEntry* pEntry, const OUString& rNewText) override + { + return m_aEditedEntryHdl.Call(IterString(pEntry, rNewText)); + } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/treeglue.hxx b/vcl/inc/treeglue.hxx index 16fc52a3a7ed..9c18057b0eb3 100644 --- a/vcl/inc/treeglue.hxx +++ b/vcl/inc/treeglue.hxx @@ -15,41 +15,6 @@ //the configured drag drop mode would make more sense to me, but I'm not //going to change the baseclass -class LclHeaderTabListBox final : public SvHeaderTabListBox -{ -private: - Link<SvTreeListEntry*, bool> m_aEditingEntryHdl; - Link<const IterString&, bool> m_aEditedEntryHdl; - -public: - LclHeaderTabListBox(vcl::Window* pParent, WinBits nWinStyle, HeaderBar* pHeaderBar) - : SvHeaderTabListBox(pParent, nWinStyle, pHeaderBar) - { - } - - void SetEditingEntryHdl(const Link<SvTreeListEntry*, bool>& rLink) - { - m_aEditingEntryHdl = rLink; - } - - void SetEditedEntryHdl(const Link<const IterString&, bool>& rLink) - { - m_aEditedEntryHdl = rLink; - } - - virtual DragDropMode NotifyStartDrag() override { return GetDragDropMode(); } - - virtual bool EditingEntry(SvTreeListEntry* pEntry) override - { - return m_aEditingEntryHdl.Call(pEntry); - } - - virtual bool EditedEntry(SvTreeListEntry* pEntry, const OUString& rNewText) override - { - return m_aEditedEntryHdl.Call(IterString(pEntry, rNewText)); - } -}; - class LclTabListBox final : public SvTabListBox { Link<SvTreeListBox*, void> m_aModelChangedHdl; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 6fa75a18e258..8eb8721cd910 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3849,7 +3849,7 @@ bool SalInstanceTreeView::get_text_emphasis(SvTreeListEntry* pEntry, int col) co void SalInstanceTreeView::set_header_item_width(const std::vector<int>& rWidths) { - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { for (size_t i = 0; i < rWidths.size(); ++i) @@ -3877,7 +3877,7 @@ SalInstanceTreeView::SalInstanceTreeView(SvTabListBox* pTreeView, SalInstanceBui m_xTreeView->SetCustomMeasureHdl(LINK(this, SalInstanceTreeView, CustomMeasureHdl)); const std::vector<tools::Long> aTabPositions{ 0 }; m_xTreeView->SetTabs(aTabPositions); - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (pHeaderBox) { @@ -3976,7 +3976,7 @@ void SalInstanceTreeView::set_centered_column(int nCol) int SalInstanceTreeView::get_column_width(int nColumn) const { - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) return pHeaderBar->GetItemSize(pHeaderBar->GetItemId(nColumn)); // GetTab(0) gives the position of the bitmap which is automatically inserted by the TabListBox. @@ -3989,7 +3989,7 @@ int SalInstanceTreeView::get_column_width(int nColumn) const OUString SalInstanceTreeView::get_column_title(int nColumn) const { - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { return pHeaderBar->GetItemText(pHeaderBar->GetItemId(nColumn)); @@ -3999,7 +3999,7 @@ OUString SalInstanceTreeView::get_column_title(int nColumn) const void SalInstanceTreeView::set_column_title(int nColumn, const OUString& rTitle) { - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { return pHeaderBar->SetItemText(pHeaderBar->GetItemId(nColumn), rTitle); @@ -4025,14 +4025,14 @@ void SalInstanceTreeView::queue_draw() void SalInstanceTreeView::show() { - if (LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get())) + if (SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get())) pHeaderBox->GetParent()->Show(); SalInstanceWidget::show(); } void SalInstanceTreeView::hide() { - if (LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get())) + if (SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get())) pHeaderBox->GetParent()->Hide(); SalInstanceWidget::hide(); } @@ -5040,7 +5040,7 @@ void SalInstanceTreeView::set_sort_indicator(TriState eState, int col) { assert(col >= 0 && "cannot sort on expander column"); - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr; if (!pHeaderBar) return; @@ -5063,7 +5063,7 @@ TriState SalInstanceTreeView::get_sort_indicator(int col) const { assert(col >= 0 && "cannot sort on expander column"); - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (HeaderBar* pHeaderBar = pHeaderBox ? pHeaderBox->GetHeaderBar() : nullptr) { sal_uInt16 nTextId = pHeaderBar->GetItemId(col); @@ -5153,7 +5153,7 @@ bool SalInstanceTreeView::changed_by_hover() const { return m_xTreeView->IsSelec SalInstanceTreeView::~SalInstanceTreeView() { - LclHeaderTabListBox* pHeaderBox = dynamic_cast<LclHeaderTabListBox*>(m_xTreeView.get()); + SvHeaderTabListBox* pHeaderBox = dynamic_cast<SvHeaderTabListBox*>(m_xTreeView.get()); if (pHeaderBox) { if (HeaderBar* pHeaderBar = pHeaderBox->GetHeaderBar()) diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 763654d8bd50..0ec2fcde074c 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -1743,7 +1743,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OUString xHeader->SetHelpId(getHelpRoot() + headerid); m_aChildren.emplace_back(headerid, xHeader, true); - VclPtr<LclHeaderTabListBox> xHeaderBox = VclPtr<LclHeaderTabListBox>::Create(xContainer, nWinStyle, xHeader); + VclPtr<SvHeaderTabListBox> xHeaderBox = VclPtr<SvHeaderTabListBox>::Create(xContainer, nWinStyle, xHeader); xContainer->set_expand(true); xHeader->Show(); xContainer->Show();