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();

Reply via email to