basctl/source/basicide/brkdlg.hxx                           |    1 
 basctl/source/basicide/moduldlg.hxx                         |    1 
 chart2/source/controller/dialogs/res_Trendline.hxx          |    1 
 chart2/source/controller/dialogs/tp_Scale.hxx               |    1 
 chart2/source/controller/sidebar/ChartErrorBarPanel.hxx     |    1 
 chart2/source/inc/ChartResourceGroupDlgs.hxx                |    1 
 chart2/source/inc/ChartTypeDialogController.hxx             |    1 
 cui/inc/dlgname.hxx                                         |    1 
 cui/source/inc/QrCodeGenDialog.hxx                          |    1 
 cui/source/inc/TextColumnsPage.hxx                          |    1 
 cui/source/inc/autocdlg.hxx                                 |    1 
 cui/source/inc/cuigrfflt.hxx                                |    1 
 cui/source/inc/cuitabarea.hxx                               |    1 
 cui/source/inc/cuitabline.hxx                               |    1 
 cui/source/inc/cuitbxform.hxx                               |    1 
 cui/source/inc/insdlg.hxx                                   |    1 
 cui/source/inc/insrc.hxx                                    |    1 
 cui/source/inc/measure.hxx                                  |    1 
 cui/source/inc/newtabledlg.hxx                              |    1 
 cui/source/inc/numfmt.hxx                                   |    1 
 cui/source/inc/numpages.hxx                                 |    1 
 cui/source/inc/paragrph.hxx                                 |    1 
 cui/source/inc/splitcelldlg.hxx                             |    1 
 cui/source/inc/srchxtra.hxx                                 |    1 
 cui/source/inc/zoom.hxx                                     |    1 
 cui/source/options/connpooloptions.hxx                      |    1 
 cui/source/options/optgdlg.hxx                              |    1 
 cui/source/options/opthtml.hxx                              |    1 
 cui/source/options/optlingu.cxx                             |    1 
 cui/source/options/optsave.hxx                              |    1 
 dbaccess/source/ui/dlg/admincontrols.hxx                    |    1 
 dbaccess/source/ui/dlg/adminpages.hxx                       |    1 
 dbaccess/source/ui/dlg/advancedsettings.hxx                 |    1 
 dbaccess/source/ui/inc/FieldControls.hxx                    |    1 
 dbaccess/source/ui/inc/WTypeSelect.hxx                      |    1 
 extensions/source/bibliography/general.hxx                  |    1 
 extensions/source/scanner/sanedlg.hxx                       |    1 
 filter/source/pdf/impdialog.hxx                             |    1 
 include/sfx2/dinfdlg.hxx                                    |    1 
 include/sfx2/printopt.hxx                                   |    1 
 include/svtools/PlaceEditDialog.hxx                         |    1 
 include/svx/compressgraphicdialog.hxx                       |    1 
 include/svx/dialog/gotodlg.hxx                              |    1 
 include/svx/dlgctrl.hxx                                     |    1 
 include/svx/float3d.hxx                                     |    1 
 include/svx/relfld.hxx                                      |    1 
 include/vcl/jsdialog/executor.hxx                           |    1 
 include/vcl/weld/MetricSpinButton.hxx                       |    2 
 include/vcl/weld/SpinButton.hxx                             |  106 ++++++++
 include/vcl/weld/weld.hxx                                   |  158 ------------
 reportdesign/source/ui/inc/GroupsSorting.hxx                |    1 
 sc/source/ui/inc/AnalysisOfVarianceDialog.hxx               |    2 
 sc/source/ui/inc/ExponentialSmoothingDialog.hxx             |    2 
 sc/source/ui/inc/FourierAnalysisDialog.hxx                  |    2 
 sc/source/ui/inc/MovingAverageDialog.hxx                    |    2 
 sc/source/ui/inc/RandomNumberGeneratorDialog.hxx            |    2 
 sc/source/ui/inc/RegressionDialog.hxx                       |    2 
 sc/source/ui/inc/SamplingDialog.hxx                         |    2 
 sc/source/ui/inc/SparklineDialog.hxx                        |    2 
 sc/source/ui/inc/dpgroupdlg.hxx                             |    1 
 sc/source/ui/inc/inscldlg.hxx                               |    1 
 sc/source/ui/inc/instbdlg.hxx                               |    1 
 sc/source/ui/inc/linkarea.hxx                               |    1 
 sc/source/ui/inc/navipi.hxx                                 |    1 
 sc/source/ui/inc/pvfundlg.hxx                               |    1 
 sc/source/ui/inc/scuiasciiopt.hxx                           |    1 
 sc/source/ui/inc/solveroptions.hxx                          |    1 
 sc/source/ui/inc/tpcalc.hxx                                 |    1 
 sc/source/ui/inc/tpdefaults.hxx                             |    1 
 sc/source/ui/inc/tptable.hxx                                |    1 
 sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx          |    1 
 sd/source/ui/dlg/paragr.cxx                                 |    1 
 sd/source/ui/inc/BulletAndPositionDlg.hxx                   |    1 
 sd/source/ui/inc/animobjs.hxx                               |    1 
 sd/source/ui/inc/copydlg.hxx                                |    1 
 sd/source/ui/inc/diactrl.hxx                                |    1 
 sd/source/ui/inc/morphdlg.hxx                               |    1 
 sd/source/ui/inc/vectdlg.hxx                                |    1 
 sdext/source/minimizer/optimizerdialog.hxx                  |    1 
 svtools/source/filter/exportdialog.hxx                      |    1 
 svx/source/sidebar/textcolumns/TextColumnsPropertyPanel.hxx |    1 
 svx/source/tbxctrls/layctrl.cxx                             |    1 
 sw/inc/colwd.hxx                                            |    1 
 sw/source/ui/dbui/createaddresslistdialog.hxx               |    1 
 sw/source/ui/envelp/labfmt.hxx                              |    1 
 sw/source/ui/envelp/labprt.hxx                              |    1 
 sw/source/ui/fldui/flddok.hxx                               |    1 
 sw/source/ui/inc/mmresultdialogs.hxx                        |    1 
 sw/source/ui/inc/regionsw.hxx                               |    1 
 sw/source/ui/misc/impfnote.hxx                              |    1 
 sw/source/uibase/inc/abstract.hxx                           |    1 
 sw/source/uibase/inc/break.hxx                              |    1 
 sw/source/uibase/inc/column.hxx                             |    1 
 sw/source/uibase/inc/contentcontroldlg.hxx                  |    1 
 sw/source/uibase/inc/convert.hxx                            |    1 
 sw/source/uibase/inc/drpcps.hxx                             |    1 
 sw/source/uibase/inc/instable.hxx                           |    1 
 sw/source/uibase/inc/linenum.hxx                            |    1 
 sw/source/uibase/inc/mailconfigpage.hxx                     |    1 
 sw/source/uibase/inc/mailmrge.hxx                           |    1 
 sw/source/uibase/inc/navipi.hxx                             |    1 
 sw/source/uibase/inc/numpara.hxx                            |    1 
 sw/source/uibase/inc/optload.hxx                            |    1 
 sw/source/uibase/inc/outline.hxx                            |    1 
 sw/source/uibase/inc/pggrid.hxx                             |    1 
 sw/source/uibase/inc/srtdlg.hxx                             |    1 
 sw/source/uibase/inc/swuicnttab.hxx                         |    1 
 sw/source/uibase/inc/swuiidxmrk.hxx                         |    1 
 sw/source/uibase/inc/titlepage.hxx                          |    1 
 sw/source/uibase/table/tablepg.hxx                          |    1 
 sw/source/uibase/uiview/pview.cxx                           |    1 
 vcl/Library_vcl.mk                                          |    1 
 vcl/inc/colorpicker.hxx                                     |    1 
 vcl/inc/printdlg.hxx                                        |    1 
 vcl/inc/qt5/QtInstanceBuilder.hxx                           |    1 
 vcl/inc/qt5/QtInstanceSpinButton.hxx                        |    2 
 vcl/inc/salvtables.hxx                                      |    1 
 vcl/source/control/FormattedField.cxx                       |    1 
 vcl/source/control/longcurr.cxx                             |    1 
 vcl/source/weld/SpinButton.cxx                              |  133 ++++++++++
 vcl/source/window/builder.cxx                               |   28 --
 vcl/unx/gtk3/gtkinst.cxx                                    |    1 
 122 files changed, 366 insertions(+), 187 deletions(-)

New commits:
commit 184bc7f88a9626101fd8f198fc0f63fc25c55061
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sat Jan 3 11:52:17 2026 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sun Jan 4 15:03:17 2026 +0100

    weld: Move static SpinButton methods to SpinButton.cxx
    
    Now that
    
        Change-Id: I6555d2343ec9b01d7915cd52508c0db4c8704509
        Author: Michael Weghorn <[email protected]>
        Date:   Sat Jan 3 11:48:36 2026 +0100
    
            weld: Move weld::SpinButton to own header/source
    
    introduced a source file for weld::SpinButton method
    implementations, move these 2 static methods there, too.
    
    Change-Id: Ib37bc7af03df32e4566a7c3ab3c4c3d0db15806b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196446
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/source/weld/SpinButton.cxx b/vcl/source/weld/SpinButton.cxx
index aa54dec05250..0dc29c6bea3b 100644
--- a/vcl/source/weld/SpinButton.cxx
+++ b/vcl/source/weld/SpinButton.cxx
@@ -103,6 +103,31 @@ void SpinButton::get_increments(sal_Int64& step, 
sal_Int64& page) const
     step = convert_double_to_value(fStep);
     page = convert_double_to_value(fPage);
 }
+
+unsigned int SpinButton::Power10(unsigned int n)
+{
+    unsigned int nValue = 1;
+    for (unsigned int i = 0; i < n; ++i)
+        nValue *= 10;
+    return nValue;
+}
+
+sal_Int64 SpinButton::denormalize(sal_Int64 nValue) const
+{
+    const int nFactor = Power10(get_digits());
+
+    if ((nValue < (std::numeric_limits<sal_Int64>::min() + nFactor))
+        || (nValue > (std::numeric_limits<sal_Int64>::max() - nFactor)))
+    {
+        return nValue / nFactor;
+    }
+
+    const int nHalf = nFactor / 2;
+
+    if (nValue < 0)
+        return (nValue - nHalf) / nFactor;
+    return (nValue + nHalf) / nFactor;
+}
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index c87788b846a8..1812d57e3e7b 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -277,34 +277,6 @@ weld::Window* Application::GetFrameWeld(const 
css::uno::Reference<css::awt::XWin
     return ImplGetSVData()->mpDefInst->GetFrameWeld(rWindow);
 }
 
-namespace weld
-{
-    unsigned int SpinButton::Power10(unsigned int n)
-    {
-        unsigned int nValue = 1;
-        for (unsigned int i = 0; i < n; ++i)
-            nValue *= 10;
-        return nValue;
-    }
-
-    sal_Int64 SpinButton::denormalize(sal_Int64 nValue) const
-    {
-        const int nFactor = Power10(get_digits());
-
-        if ((nValue < (std::numeric_limits<sal_Int64>::min() + nFactor)) ||
-            (nValue > (std::numeric_limits<sal_Int64>::max() - nFactor)))
-        {
-            return nValue / nFactor;
-        }
-
-        const int nHalf = nFactor / 2;
-
-        if (nValue < 0)
-            return (nValue - nHalf) / nFactor;
-        return (nValue + nHalf) / nFactor;
-    }
-}
-
 // static
 void BuilderBase::reportException(const css::uno::Exception& rExcept)
 {
commit 01e513fccf0c34cc7cf995930875b5d942beeb2c
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sat Jan 3 11:48:36 2026 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sun Jan 4 15:03:06 2026 +0100

    weld: Move weld::SpinButton to own header/source
    
    Move the class out of weld.hxx into its own header and source
    file, in order to make it easier to keep an overview and to avoid
    having to recompile ~all UI code when the class is
    modified.
    
    Change-Id: I6555d2343ec9b01d7915cd52508c0db4c8704509
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196445
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/basctl/source/basicide/brkdlg.hxx 
b/basctl/source/basicide/brkdlg.hxx
index 57aa5e78abf2..1e5f4dcae9c8 100644
--- a/basctl/source/basicide/brkdlg.hxx
+++ b/basctl/source/basicide/brkdlg.hxx
@@ -21,6 +21,7 @@
 
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/EntryTreeView.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include "breakpoint.hxx"
diff --git a/basctl/source/basicide/moduldlg.hxx 
b/basctl/source/basicide/moduldlg.hxx
index ef7c91538a93..2bc4dd08c293 100644
--- a/basctl/source/basicide/moduldlg.hxx
+++ b/basctl/source/basicide/moduldlg.hxx
@@ -27,6 +27,7 @@
 #include <vcl/weld/Builder.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <com/sun/star/task/XInteractionHandler.hpp>
diff --git a/chart2/source/controller/dialogs/res_Trendline.hxx 
b/chart2/source/controller/dialogs/res_Trendline.hxx
index e520d6da3bc8..1800cb05cad2 100644
--- a/chart2/source/controller/dialogs/res_Trendline.hxx
+++ b/chart2/source/controller/dialogs/res_Trendline.hxx
@@ -21,6 +21,7 @@
 #include <tools/link.hxx>
 #include <svl/itemset.hxx>
 #include <svx/chrtitem.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 namespace weld { class Builder; }
 namespace weld { class CheckButton; }
diff --git a/chart2/source/controller/dialogs/tp_Scale.hxx 
b/chart2/source/controller/dialogs/tp_Scale.hxx
index 3f6336bbe950..7f4c05ebf50a 100644
--- a/chart2/source/controller/dialogs/tp_Scale.hxx
+++ b/chart2/source/controller/dialogs/tp_Scale.hxx
@@ -21,6 +21,7 @@
 #include <sfx2/tabdlg.hxx>
 #include <unotools/resmgr.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SvNumberFormatter;
 
diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx 
b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx
index 162898e66d3b..d93eceee6170 100644
--- a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx
+++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx
@@ -15,6 +15,7 @@
 #include <sfx2/sidebar/SidebarModelUpdate.hxx>
 #include <sfx2/sidebar/PanelLayout.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include "ChartSidebarModifyListener.hxx"
 
 namespace com::sun::star::util { class XModifyListener; }
diff --git a/chart2/source/inc/ChartResourceGroupDlgs.hxx 
b/chart2/source/inc/ChartResourceGroupDlgs.hxx
index 79b9c651086f..0335e5f51179 100644
--- a/chart2/source/inc/ChartResourceGroupDlgs.hxx
+++ b/chart2/source/inc/ChartResourceGroupDlgs.hxx
@@ -21,6 +21,7 @@
 
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 namespace chart
diff --git a/chart2/source/inc/ChartTypeDialogController.hxx 
b/chart2/source/inc/ChartTypeDialogController.hxx
index 4847b5c91607..33e4bcdfe8ad 100644
--- a/chart2/source/inc/ChartTypeDialogController.hxx
+++ b/chart2/source/inc/ChartTypeDialogController.hxx
@@ -28,6 +28,7 @@
 
 #include <com/sun/star/chart2/CurveStyle.hpp>
 #include <vcl/weld/Builder.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 namespace com::sun::star::beans
diff --git a/cui/inc/dlgname.hxx b/cui/inc/dlgname.hxx
index 6e012352fd2f..7855b02164e3 100644
--- a/cui/inc/dlgname.hxx
+++ b/cui/inc/dlgname.hxx
@@ -20,6 +20,7 @@
 
 #include <vcl/formatter.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/cui/source/inc/QrCodeGenDialog.hxx 
b/cui/source/inc/QrCodeGenDialog.hxx
index c8abde8f4c88..2544b6dbfac2 100644
--- a/cui/source/inc/QrCodeGenDialog.hxx
+++ b/cui/source/inc/QrCodeGenDialog.hxx
@@ -12,6 +12,7 @@
 
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/cui/source/inc/TextColumnsPage.hxx 
b/cui/source/inc/TextColumnsPage.hxx
index c61fcd03c548..637acfc56cee 100644
--- a/cui/source/inc/TextColumnsPage.hxx
+++ b/cui/source/inc/TextColumnsPage.hxx
@@ -13,6 +13,7 @@
 
 #include <sfx2/tabdlg.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <memory>
 
diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx
index 2677b8535ebe..c14e01539d49 100644
--- a/cui/source/inc/autocdlg.hxx
+++ b/cui/source/inc/autocdlg.hxx
@@ -21,6 +21,7 @@
 #include <sfx2/tabdlg.hxx>
 #include <svx/langbox.hxx>
 #include <unotools/collatorwrapper.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <map>
 #include <set>
diff --git a/cui/source/inc/cuigrfflt.hxx b/cui/source/inc/cuigrfflt.hxx
index acc35a232d05..5fe64ed7d7da 100644
--- a/cui/source/inc/cuigrfflt.hxx
+++ b/cui/source/inc/cuigrfflt.hxx
@@ -24,6 +24,7 @@
 #include <svx/rectenum.hxx>
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class CuiGraphicPreviewWindow : public weld::CustomWidgetController
 {
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index 89eda44b4cb4..c9b246e4a86c 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -29,6 +29,7 @@
 #include <vcl/hexcolorcontrol.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class ColorListBox;
 class SdrModel;
diff --git a/cui/source/inc/cuitabline.hxx b/cui/source/inc/cuitabline.hxx
index 29fe07765cd3..521e9c456f9f 100644
--- a/cui/source/inc/cuitabline.hxx
+++ b/cui/source/inc/cuitabline.hxx
@@ -28,6 +28,7 @@
 #include <svx/xlnasit.hxx>
 #include <svx/xtable.hxx>
 #include <svx/dlgctrl.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 
 enum class PageType;
diff --git a/cui/source/inc/cuitbxform.hxx b/cui/source/inc/cuitbxform.hxx
index 8f3589c55215..11ec5d78a3b1 100644
--- a/cui/source/inc/cuitbxform.hxx
+++ b/cui/source/inc/cuitbxform.hxx
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class FmInputRecordNoDialog : public weld::GenericDialogController
diff --git a/cui/source/inc/insdlg.hxx b/cui/source/inc/insdlg.hxx
index 25b077013457..1be2fda2c930 100644
--- a/cui/source/inc/insdlg.hxx
+++ b/cui/source/inc/insdlg.hxx
@@ -24,6 +24,7 @@
 
 #include <svtools/insdlg.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <comphelper/embeddedobjectcontainer.hxx>
diff --git a/cui/source/inc/insrc.hxx b/cui/source/inc/insrc.hxx
index ef8218635670..f42458a493e7 100644
--- a/cui/source/inc/insrc.hxx
+++ b/cui/source/inc/insrc.hxx
@@ -21,6 +21,7 @@
 #include <sal/config.h>
 
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class SvxInsRowColDlg : public weld::GenericDialogController
diff --git a/cui/source/inc/measure.hxx b/cui/source/inc/measure.hxx
index 723d9fee0e1d..5a84ee78c4cf 100644
--- a/cui/source/inc/measure.hxx
+++ b/cui/source/inc/measure.hxx
@@ -22,6 +22,7 @@
 #include <svx/dlgctrl.hxx>
 #include <svx/measctrl.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SdrView;
 
diff --git a/cui/source/inc/newtabledlg.hxx b/cui/source/inc/newtabledlg.hxx
index 16492f7d7749..1aceebd6d670 100644
--- a/cui/source/inc/newtabledlg.hxx
+++ b/cui/source/inc/newtabledlg.hxx
@@ -20,6 +20,7 @@
 
 #include <svx/svxdlg.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class SvxNewTableDialog : public weld::GenericDialogController
diff --git a/cui/source/inc/numfmt.hxx b/cui/source/inc/numfmt.hxx
index 26c6f264e84c..a2a2591034d8 100644
--- a/cui/source/inc/numfmt.hxx
+++ b/cui/source/inc/numfmt.hxx
@@ -23,6 +23,7 @@
 #include <sfx2/tabdlg.hxx>
 #include <svx/langbox.hxx>
 #include <tools/color.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/cui/source/inc/numpages.hxx b/cui/source/inc/numpages.hxx
index ffe6292e9747..522924b02b26 100644
--- a/cui/source/inc/numpages.hxx
+++ b/cui/source/inc/numpages.hxx
@@ -27,6 +27,7 @@
 #include <svtools/ctrlbox.hxx>
 #include <svx/numberingpreview.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/timer.hxx>
diff --git a/cui/source/inc/paragrph.hxx b/cui/source/inc/paragrph.hxx
index 9d634d879ca2..685492aa8e61 100644
--- a/cui/source/inc/paragrph.hxx
+++ b/cui/source/inc/paragrph.hxx
@@ -23,6 +23,7 @@
 #include <svx/paraprev.hxx>
 #include <svx/frmdirlbox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SvxLineSpacingItem;
 
diff --git a/cui/source/inc/splitcelldlg.hxx b/cui/source/inc/splitcelldlg.hxx
index 2c4486686eeb..fff6be718f46 100644
--- a/cui/source/inc/splitcelldlg.hxx
+++ b/cui/source/inc/splitcelldlg.hxx
@@ -21,6 +21,7 @@
 #include <sal/config.h>
 
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class SvxSplitTableDlg : public weld::GenericDialogController
diff --git a/cui/source/inc/srchxtra.hxx b/cui/source/inc/srchxtra.hxx
index e33ef32c387a..7dd82743de44 100644
--- a/cui/source/inc/srchxtra.hxx
+++ b/cui/source/inc/srchxtra.hxx
@@ -22,6 +22,7 @@
 #include <svtools/ctrltool.hxx>
 #include <svx/srchdlg.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/cui/source/inc/zoom.hxx b/cui/source/inc/zoom.hxx
index 4d4d6053e679..89f38eebbae7 100644
--- a/cui/source/inc/zoom.hxx
+++ b/cui/source/inc/zoom.hxx
@@ -23,6 +23,7 @@
 #include <svl/itemset.hxx>
 #include <svx/zoom_def.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class SvxZoomDialog : public SfxDialogController
diff --git a/cui/source/options/connpooloptions.hxx 
b/cui/source/options/connpooloptions.hxx
index 4d5867e8656c..dc8c4849b46e 100644
--- a/cui/source/options/connpooloptions.hxx
+++ b/cui/source/options/connpooloptions.hxx
@@ -20,6 +20,7 @@
 #pragma once
 
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <com/sun/star/configuration/XReadWriteAccess.hpp>
 
diff --git a/cui/source/options/optgdlg.hxx b/cui/source/options/optgdlg.hxx
index c6fbc2529dda..e95d6bbd7dfc 100644
--- a/cui/source/options/optgdlg.hxx
+++ b/cui/source/options/optgdlg.hxx
@@ -22,6 +22,7 @@
 #include <sfx2/tabdlg.hxx>
 #include <svx/langbox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class CanvasSettings;
 
diff --git a/cui/source/options/opthtml.hxx b/cui/source/options/opthtml.hxx
index 496b567a0b91..8470f4da1ec9 100644
--- a/cui/source/options/opthtml.hxx
+++ b/cui/source/options/opthtml.hxx
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class OfaHtmlTabPage : public SfxTabPage
 {
diff --git a/cui/source/options/optlingu.cxx b/cui/source/options/optlingu.cxx
index e8a61875365a..4c9a3ed6faa9 100644
--- a/cui/source/options/optlingu.cxx
+++ b/cui/source/options/optlingu.cxx
@@ -19,6 +19,7 @@
 
 #include <utility>
 #include <vcl/settings.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <i18nlangtag/languagetag.hxx>
 #include <i18nlangtag/mslangid.hxx>
diff --git a/cui/source/options/optsave.hxx b/cui/source/options/optsave.hxx
index a195e11c82ad..b94b2315dd11 100644
--- a/cui/source/options/optsave.hxx
+++ b/cui/source/options/optsave.hxx
@@ -21,6 +21,7 @@
 #include <memory>
 #include <sfx2/tabdlg.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 enum AppType
 {
diff --git a/dbaccess/source/ui/dlg/admincontrols.hxx 
b/dbaccess/source/ui/dlg/admincontrols.hxx
index 6c022d6b2582..7f480d7d24df 100644
--- a/dbaccess/source/ui/dlg/admincontrols.hxx
+++ b/dbaccess/source/ui/dlg/admincontrols.hxx
@@ -22,6 +22,7 @@
 #include "adminpages.hxx"
 
 #include <vcl/weld/Builder.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 namespace dbaui
diff --git a/dbaccess/source/ui/dlg/adminpages.hxx 
b/dbaccess/source/ui/dlg/adminpages.hxx
index b3bb07274d59..c791a6be0789 100644
--- a/dbaccess/source/ui/dlg/adminpages.hxx
+++ b/dbaccess/source/ui/dlg/adminpages.hxx
@@ -21,6 +21,7 @@
 
 #include <osl/diagnose.h>
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/wizardmachine.hxx>
 #include <curledit.hxx>
 
diff --git a/dbaccess/source/ui/dlg/advancedsettings.hxx 
b/dbaccess/source/ui/dlg/advancedsettings.hxx
index 1a4313024d71..93c9044319e6 100644
--- a/dbaccess/source/ui/dlg/advancedsettings.hxx
+++ b/dbaccess/source/ui/dlg/advancedsettings.hxx
@@ -23,6 +23,7 @@
 #include <dsmeta.hxx>
 
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <vector>
 
diff --git a/dbaccess/source/ui/inc/FieldControls.hxx 
b/dbaccess/source/ui/inc/FieldControls.hxx
index e3137189c3cf..0b0793d3afb3 100644
--- a/dbaccess/source/ui/inc/FieldControls.hxx
+++ b/dbaccess/source/ui/inc/FieldControls.hxx
@@ -20,6 +20,7 @@
 
 #include "SqlNameEdit.hxx"
 #include <unotools/resmgr.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 namespace dbaui
 {
diff --git a/dbaccess/source/ui/inc/WTypeSelect.hxx 
b/dbaccess/source/ui/inc/WTypeSelect.hxx
index e5d1c4e70741..e503ddf46428 100644
--- a/dbaccess/source/ui/inc/WTypeSelect.hxx
+++ b/dbaccess/source/ui/inc/WTypeSelect.hxx
@@ -22,6 +22,7 @@
 #include "TypeInfo.hxx"
 #include "WTabPage.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 
 class SvStream;
diff --git a/extensions/source/bibliography/general.hxx 
b/extensions/source/bibliography/general.hxx
index 2d202125cc93..d8017eee9072 100644
--- a/extensions/source/bibliography/general.hxx
+++ b/extensions/source/bibliography/general.hxx
@@ -23,6 +23,7 @@
 
 #include <vcl/InterimItemWindow.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include "bibshortcuthandler.hxx"
 
 
diff --git a/extensions/source/scanner/sanedlg.hxx 
b/extensions/source/scanner/sanedlg.hxx
index 2d982ecc9692..b8c014365a4f 100644
--- a/extensions/source/scanner/sanedlg.hxx
+++ b/extensions/source/scanner/sanedlg.hxx
@@ -21,6 +21,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx
index b137f0cdd1f6..17df7753fdbf 100644
--- a/filter/source/pdf/impdialog.hxx
+++ b/filter/source/pdf/impdialog.hxx
@@ -27,6 +27,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/include/sfx2/dinfdlg.hxx b/include/sfx2/dinfdlg.hxx
index 6f0b9ef67590..4e9dd6ff5f8c 100644
--- a/include/sfx2/dinfdlg.hxx
+++ b/include/sfx2/dinfdlg.hxx
@@ -35,6 +35,7 @@
 #include <vcl/idle.hxx>
 #include <vcl/weld/Builder.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <vcl/weld/weldutils.hxx>
 
diff --git a/include/sfx2/printopt.hxx b/include/sfx2/printopt.hxx
index a06e0877e9ae..9e6e83e0098c 100644
--- a/include/sfx2/printopt.hxx
+++ b/include/sfx2/printopt.hxx
@@ -25,6 +25,7 @@
 #include <sal/types.h>
 #include <vcl/printer/Options.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SFX2_DLLPUBLIC SfxCommonPrintOptionsTabPage final : public SfxTabPage
 {
diff --git a/include/svtools/PlaceEditDialog.hxx 
b/include/svtools/PlaceEditDialog.hxx
index 9c20852c89dc..90f29cef95ee 100644
--- a/include/svtools/PlaceEditDialog.hxx
+++ b/include/svtools/PlaceEditDialog.hxx
@@ -13,6 +13,7 @@
 #include <svtools/svtdllapi.h>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 #include <memory>
diff --git a/include/svx/compressgraphicdialog.hxx 
b/include/svx/compressgraphicdialog.hxx
index 0f6f242dad6d..e2855c92e278 100644
--- a/include/svx/compressgraphicdialog.hxx
+++ b/include/svx/compressgraphicdialog.hxx
@@ -25,6 +25,7 @@
 #include <tools/link.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <vcl/graph.hxx>
 
diff --git a/include/svx/dialog/gotodlg.hxx b/include/svx/dialog/gotodlg.hxx
index c772aa60b0b2..7deba5c6c46d 100644
--- a/include/svx/dialog/gotodlg.hxx
+++ b/include/svx/dialog/gotodlg.hxx
@@ -21,6 +21,7 @@
 
 #include <svx/svxdllapi.h>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 namespace svx
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index d2699bf8a1fb..ddc41490f86f 100644
--- a/include/svx/dlgctrl.hxx
+++ b/include/svx/dlgctrl.hxx
@@ -24,6 +24,7 @@
 #include <svx/rectenum.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
 #include <vcl/virdev.hxx>
diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx
index cd2099828e3f..6725f41327e1 100644
--- a/include/svx/float3d.hxx
+++ b/include/svx/float3d.hxx
@@ -26,6 +26,7 @@
 #include <sfx2/dockwin.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <svl/eitem.hxx>
 #include <svx/e3ditem.hxx>
diff --git a/include/svx/relfld.hxx b/include/svx/relfld.hxx
index dc9611a479f4..389bce0cdb6e 100644
--- a/include/svx/relfld.hxx
+++ b/include/svx/relfld.hxx
@@ -22,6 +22,7 @@
 #include <tools/fldunit.hxx>
 #include <svtools/unitconv.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <svx/svxdllapi.h>
 
diff --git a/include/vcl/jsdialog/executor.hxx 
b/include/vcl/jsdialog/executor.hxx
index 9496f5ae44eb..2fac4e41b8a5 100644
--- a/include/vcl/jsdialog/executor.hxx
+++ b/include/vcl/jsdialog/executor.hxx
@@ -14,6 +14,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/IconView.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/include/vcl/weld/MetricSpinButton.hxx 
b/include/vcl/weld/MetricSpinButton.hxx
index 062b840ccb7c..f45976d43402 100644
--- a/include/vcl/weld/MetricSpinButton.hxx
+++ b/include/vcl/weld/MetricSpinButton.hxx
@@ -11,7 +11,7 @@
 
 #include <vcl/dllapi.h>
 #include <tools/fldunit.hxx>
-#include <vcl/weld/weld.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 namespace weld
 {
diff --git a/include/vcl/weld/SpinButton.hxx b/include/vcl/weld/SpinButton.hxx
new file mode 100644
index 000000000000..af9199fd1cd0
--- /dev/null
+++ b/include/vcl/weld/SpinButton.hxx
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#pragma once
+
+#include <vcl/dllapi.h>
+#include <vcl/weld/weld.hxx>
+
+namespace weld
+{
+class VCL_DLLPUBLIC SpinButton : virtual public Entry
+{
+    friend class ::LOKTrigger;
+
+    Link<SpinButton&, void> m_aValueChangedHdl;
+    Link<sal_Int64, OUString> m_aFormatValueHdl;
+    Link<const OUString&, std::optional<int>> m_aParseTextHdl;
+
+    // helper methods to convert between sal_Int64 value and
+    // floating point number it represents (depending on get_digits())
+    double convert_value_to_double(sal_Int64 nValue) const;
+    sal_Int64 convert_double_to_value(double fDouble) const;
+
+protected:
+    void signal_value_changed()
+    {
+        if (notify_events_disabled())
+            return;
+        m_aValueChangedHdl.Call(*this);
+    }
+
+    /** If a custom value formatter was set via <a>set_value_formatter</a>,
+     *  that one gets called to create a text representation of the value
+     *  and that one gets returned.
+     *  Otherwise, an empty std::optional is returned.
+     */
+    std::optional<OUString> format_floating_point_value(double fValue);
+
+    /** If a custom text parser (which parses a value from the given text)
+     *  is set and the text can be parsed, this method sets that value
+     *  in <a>result</a> and returns <a>TRISTATE_TRUE</a>.
+     *  Returns <a>TRISTATE_FALSE</a> if a custom handler is set, but the text
+     *  cannot be parsed.
+     *  Returns <a>TRISTATE_INDET</a> if no custom input handler is set.
+     */
+    TriState parse_text(const OUString& rText, double* pResult);
+
+    // methods to implement in subclasses which use floating point values 
directly;
+    // public methods using sal_Int64 values whose floating point value 
depends on get_digits()
+    // take care of conversion
+    virtual void set_floating_point_value(double fValue) = 0;
+    virtual double get_floating_point_value() const = 0;
+    virtual void set_floating_point_range(double fMin, double fMax) = 0;
+    virtual void get_floating_point_range(double& rMin, double& rMax) const = 
0;
+    virtual void set_floating_point_increments(double fStep, double fPage) = 0;
+    virtual void get_floating_point_increments(double& rStep, double& rPage) 
const = 0;
+
+public:
+    void set_value(sal_Int64 value);
+    sal_Int64 get_value() const { return 
convert_double_to_value(get_floating_point_value()); }
+
+    void set_range(sal_Int64 min, sal_Int64 max);
+    void get_range(sal_Int64& min, sal_Int64& max) const;
+
+    void set_min(sal_Int64 min);
+    void set_max(sal_Int64 max);
+    sal_Int64 get_min() const;
+    sal_Int64 get_max() const;
+
+    void set_increments(sal_Int64 step, sal_Int64 page);
+    void get_increments(sal_Int64& step, sal_Int64& page) const;
+
+    virtual void set_digits(unsigned int digits) = 0;
+    virtual unsigned int get_digits() const = 0;
+
+    void connect_value_changed(const Link<SpinButton&, void>& rLink) { 
m_aValueChangedHdl = rLink; }
+
+    /** Set a value formatter that receives the value as a parameter and 
returns the
+     *  text representation to display in the SpinButton.
+     */
+    void set_value_formatter(const Link<sal_Int64, OUString>& rLink) { 
m_aFormatValueHdl = rLink; }
+
+    /** Set a parser that receives the text as a parameter and returns the 
value
+     *  parsed from the text, or an empty std::optional if a value cannot be
+     *  parsed from the text.
+     */
+    void set_text_parser(const Link<const OUString&, std::optional<int>>& 
rLink)
+    {
+        m_aParseTextHdl = rLink;
+    }
+
+    sal_Int64 normalize(sal_Int64 nValue) const { return (nValue * 
Power10(get_digits())); }
+
+    sal_Int64 denormalize(sal_Int64 nValue) const;
+
+    static unsigned int Power10(unsigned int n);
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/include/vcl/weld/weld.hxx b/include/vcl/weld/weld.hxx
index 3cdeacedd07a..1500b1503bb3 100644
--- a/include/vcl/weld/weld.hxx
+++ b/include/vcl/weld/weld.hxx
@@ -1015,164 +1015,6 @@ public:
     bool get_value_changed_from_saved() const { return m_sSavedValue != 
get_text(); }
 };
 
-class VCL_DLLPUBLIC SpinButton : virtual public Entry
-{
-    friend class ::LOKTrigger;
-
-    Link<SpinButton&, void> m_aValueChangedHdl;
-    Link<sal_Int64, OUString> m_aFormatValueHdl;
-    Link<const OUString&, std::optional<int>> m_aParseTextHdl;
-
-    // helper methods to convert between sal_Int64 value and
-    // floating point number it represents (depending on get_digits())
-    double convert_value_to_double(sal_Int64 nValue) const
-    {
-        return static_cast<double>(nValue) / Power10(get_digits());
-    }
-    sal_Int64 convert_double_to_value(double fDouble) const
-    {
-        return basegfx::fround64(fDouble * Power10(get_digits()));
-    }
-
-protected:
-    void signal_value_changed()
-    {
-        if (notify_events_disabled())
-            return;
-        m_aValueChangedHdl.Call(*this);
-    }
-
-    /** If a custom value formatter was set via <a>set_value_formatter</a>,
-     *  that one gets called to create a text representation of the value
-     *  and that one gets returned.
-     *  Otherwise, an empty std::optional is returned.
-     */
-    std::optional<OUString> format_floating_point_value(double fValue)
-    {
-        if (!m_aFormatValueHdl.IsSet())
-            return {};
-        const OUString sText = 
m_aFormatValueHdl.Call(convert_double_to_value(fValue));
-        return sText;
-    }
-
-    /** If a custom text parser (which parses a value from the given text)
-     *  is set and the text can be parsed, this method sets that value
-     *  in <a>result</a> and returns <a>TRISTATE_TRUE</a>.
-     *  Returns <a>TRISTATE_FALSE</a> if a custom handler is set, but the text
-     *  cannot be parsed.
-     *  Returns <a>TRISTATE_INDET</a> if no custom input handler is set.
-     */
-    TriState parse_text(const OUString& rText, double* pResult)
-    {
-        if (!m_aParseTextHdl.IsSet())
-            return TRISTATE_INDET;
-        std::optional<int> aValue = m_aParseTextHdl.Call(rText);
-        if (!aValue.has_value())
-            return TRISTATE_FALSE;
-
-        *pResult = convert_value_to_double(aValue.value());
-        return TRISTATE_TRUE;
-    }
-
-    // methods to implement in subclasses which use floating point values 
directly;
-    // public methods using sal_Int64 values whose floating point value 
depends on get_digits()
-    // take care of conversion
-    virtual void set_floating_point_value(double fValue) = 0;
-    virtual double get_floating_point_value() const = 0;
-    virtual void set_floating_point_range(double fMin, double fMax) = 0;
-    virtual void get_floating_point_range(double& rMin, double& rMax) const = 
0;
-    virtual void set_floating_point_increments(double fStep, double fPage) = 0;
-    virtual void get_floating_point_increments(double& rStep, double& rPage) 
const = 0;
-
-public:
-    void set_value(sal_Int64 value)
-    {
-        disable_notify_events();
-        set_floating_point_value(convert_value_to_double(value));
-        enable_notify_events();
-    }
-
-    sal_Int64 get_value() const { return 
convert_double_to_value(get_floating_point_value()); }
-
-    void set_range(sal_Int64 min, sal_Int64 max)
-    {
-        set_floating_point_range(convert_value_to_double(min), 
convert_value_to_double(max));
-    }
-
-    void get_range(sal_Int64& min, sal_Int64& max) const
-    {
-        double fMin = 0;
-        double fMax = 0;
-        get_floating_point_range(fMin, fMax);
-        min = convert_double_to_value(fMin);
-        max = convert_double_to_value(fMax);
-    }
-
-    void set_min(sal_Int64 min)
-    {
-        sal_Int64 dummy, max;
-        get_range(dummy, max);
-        set_range(min, max);
-    }
-    void set_max(sal_Int64 max)
-    {
-        sal_Int64 min, dummy;
-        get_range(min, dummy);
-        set_range(min, max);
-    }
-    sal_Int64 get_min() const
-    {
-        sal_Int64 min, dummy;
-        get_range(min, dummy);
-        return min;
-    }
-    sal_Int64 get_max() const
-    {
-        sal_Int64 dummy, max;
-        get_range(dummy, max);
-        return max;
-    }
-
-    void set_increments(sal_Int64 step, sal_Int64 page)
-    {
-        set_floating_point_increments(convert_value_to_double(step), 
convert_value_to_double(page));
-    }
-
-    void get_increments(sal_Int64& step, sal_Int64& page) const
-    {
-        double fStep = 0;
-        double fPage = 0;
-        get_floating_point_increments(fStep, fPage);
-        step = convert_double_to_value(fStep);
-        page = convert_double_to_value(fPage);
-    }
-
-    virtual void set_digits(unsigned int digits) = 0;
-    virtual unsigned int get_digits() const = 0;
-
-    void connect_value_changed(const Link<SpinButton&, void>& rLink) { 
m_aValueChangedHdl = rLink; }
-
-    /** Set a value formatter that receives the value as a parameter and 
returns the
-     *  text representation to display in the SpinButton.
-     */
-    void set_value_formatter(const Link<sal_Int64, OUString>& rLink) { 
m_aFormatValueHdl = rLink; }
-
-    /** Set a parser that receives the text as a parameter and returns the 
value
-     *  parsed from the text, or an empty std::optional if a value cannot be
-     *  parsed from the text.
-     */
-    void set_text_parser(const Link<const OUString&, std::optional<int>>& 
rLink)
-    {
-        m_aParseTextHdl = rLink;
-    }
-
-    sal_Int64 normalize(sal_Int64 nValue) const { return (nValue * 
Power10(get_digits())); }
-
-    sal_Int64 denormalize(sal_Int64 nValue) const;
-
-    static unsigned int Power10(unsigned int n);
-};
-
 class EntryFormatter;
 
 // Similar to a SpinButton, but input and output formatting and range/value
diff --git a/reportdesign/source/ui/inc/GroupsSorting.hxx 
b/reportdesign/source/ui/inc/GroupsSorting.hxx
index 04ff4bbf993d..9c63f1340a56 100644
--- a/reportdesign/source/ui/inc/GroupsSorting.hxx
+++ b/reportdesign/source/ui/inc/GroupsSorting.hxx
@@ -26,6 +26,7 @@
 #include <cppuhelper/basemutex.hxx>
 #include <rtl/ref.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <osl/diagnose.h>
 
diff --git a/sc/source/ui/inc/AnalysisOfVarianceDialog.hxx 
b/sc/source/ui/inc/AnalysisOfVarianceDialog.hxx
index 35c53e72778f..b3a132df4946 100644
--- a/sc/source/ui/inc/AnalysisOfVarianceDialog.hxx
+++ b/sc/source/ui/inc/AnalysisOfVarianceDialog.hxx
@@ -15,6 +15,8 @@
 
 #include "StatisticsInputOutputDialog.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 class FormulaTemplate;
 class AddressWalkerWriter;
 
diff --git a/sc/source/ui/inc/ExponentialSmoothingDialog.hxx 
b/sc/source/ui/inc/ExponentialSmoothingDialog.hxx
index 54b877167805..8e3b118975f3 100644
--- a/sc/source/ui/inc/ExponentialSmoothingDialog.hxx
+++ b/sc/source/ui/inc/ExponentialSmoothingDialog.hxx
@@ -15,6 +15,8 @@
 
 #include "StatisticsInputOutputDialog.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 class ScExponentialSmoothingDialog : public ScStatisticsInputOutputDialog
 {
 private:
diff --git a/sc/source/ui/inc/FourierAnalysisDialog.hxx 
b/sc/source/ui/inc/FourierAnalysisDialog.hxx
index f839b274e4d8..c54540bb3321 100644
--- a/sc/source/ui/inc/FourierAnalysisDialog.hxx
+++ b/sc/source/ui/inc/FourierAnalysisDialog.hxx
@@ -12,6 +12,8 @@
 
 #include "StatisticsInputOutputDialog.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 class ScFourierAnalysisDialog : public ScStatisticsInputOutputDialog
 {
     ScAddress maLabelAddr;
diff --git a/sc/source/ui/inc/MovingAverageDialog.hxx 
b/sc/source/ui/inc/MovingAverageDialog.hxx
index 216b67c8b400..7d91a6d01a48 100644
--- a/sc/source/ui/inc/MovingAverageDialog.hxx
+++ b/sc/source/ui/inc/MovingAverageDialog.hxx
@@ -15,6 +15,8 @@
 
 #include "StatisticsInputOutputDialog.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 class ScMovingAverageDialog : public ScStatisticsInputOutputDialog
 {
 private:
diff --git a/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx 
b/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx
index 770620bed3a8..a0c9da561ce0 100644
--- a/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx
+++ b/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx
@@ -12,6 +12,8 @@
 
 #include <sal/config.h>
 
+#include <vcl/weld/SpinButton.hxx>
+
 #include <optional>
 
 #include <address.hxx>
diff --git a/sc/source/ui/inc/RegressionDialog.hxx 
b/sc/source/ui/inc/RegressionDialog.hxx
index f3783c36c91d..691ce0f5bc8c 100644
--- a/sc/source/ui/inc/RegressionDialog.hxx
+++ b/sc/source/ui/inc/RegressionDialog.hxx
@@ -13,6 +13,8 @@
 #include "StatisticsTwoVariableDialog.hxx"
 #include "TableFillingAndNavigationTools.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 class ScRegressionDialog : public ScStatisticsTwoVariableDialog
 {
     bool mbUnivariate;
diff --git a/sc/source/ui/inc/SamplingDialog.hxx 
b/sc/source/ui/inc/SamplingDialog.hxx
index b9f8c3aa1f36..9bf693acf7ec 100644
--- a/sc/source/ui/inc/SamplingDialog.hxx
+++ b/sc/source/ui/inc/SamplingDialog.hxx
@@ -14,6 +14,8 @@
 #include "anyrefdg.hxx"
 #include "viewdata.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 class ScSamplingDialog : public ScAnyRefDlgController
 {
 public:
diff --git a/sc/source/ui/inc/SparklineDialog.hxx 
b/sc/source/ui/inc/SparklineDialog.hxx
index f3f309c56832..c0fd5cb3c6bf 100644
--- a/sc/source/ui/inc/SparklineDialog.hxx
+++ b/sc/source/ui/inc/SparklineDialog.hxx
@@ -16,6 +16,8 @@
 #include <SparklineGroup.hxx>
 #include <SparklineAttributes.hxx>
 
+#include <vcl/weld/SpinButton.hxx>
+
 class ColorListBox;
 
 namespace sc
diff --git a/sc/source/ui/inc/dpgroupdlg.hxx b/sc/source/ui/inc/dpgroupdlg.hxx
index d1b9b7bd0460..53b034ed7b2f 100644
--- a/sc/source/ui/inc/dpgroupdlg.hxx
+++ b/sc/source/ui/inc/dpgroupdlg.hxx
@@ -20,6 +20,7 @@
 #pragma once
 
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <dpnumgroupinfo.hxx>
diff --git a/sc/source/ui/inc/inscldlg.hxx b/sc/source/ui/inc/inscldlg.hxx
index 59169de90e16..3868af9e698c 100644
--- a/sc/source/ui/inc/inscldlg.hxx
+++ b/sc/source/ui/inc/inscldlg.hxx
@@ -20,6 +20,7 @@
 #pragma once
 
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 #include <global.hxx>
diff --git a/sc/source/ui/inc/instbdlg.hxx b/sc/source/ui/inc/instbdlg.hxx
index f6ae01a5d6ad..00bcc9ee9bfb 100644
--- a/sc/source/ui/inc/instbdlg.hxx
+++ b/sc/source/ui/inc/instbdlg.hxx
@@ -22,6 +22,7 @@
 #include <sfx2/objsh.hxx>
 #include <vcl/timer.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <types.hxx>
diff --git a/sc/source/ui/inc/linkarea.hxx b/sc/source/ui/inc/linkarea.hxx
index a5867bbc4440..ea3b78b43be0 100644
--- a/sc/source/ui/inc/linkarea.hxx
+++ b/sc/source/ui/inc/linkarea.hxx
@@ -21,6 +21,7 @@
 
 #include <sfx2/objsh.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/sc/source/ui/inc/navipi.hxx b/sc/source/ui/inc/navipi.hxx
index d2aa58405331..a290b0feab39 100644
--- a/sc/source/ui/inc/navipi.hxx
+++ b/sc/source/ui/inc/navipi.hxx
@@ -25,6 +25,7 @@
 #include <sfx2/childwin.hxx>
 #include <sfx2/navigat.hxx>
 #include <sfx2/sidebar/PanelLayout.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <rangeutl.hxx>
 #include "content.hxx"
diff --git a/sc/source/ui/inc/pvfundlg.hxx b/sc/source/ui/inc/pvfundlg.hxx
index b5ea53510e67..2c676af059e8 100644
--- a/sc/source/ui/inc/pvfundlg.hxx
+++ b/sc/source/ui/inc/pvfundlg.hxx
@@ -24,6 +24,7 @@
 
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <pivot.hxx>
diff --git a/sc/source/ui/inc/scuiasciiopt.hxx 
b/sc/source/ui/inc/scuiasciiopt.hxx
index 0046e7339e78..6f3fca92a5f4 100644
--- a/sc/source/ui/inc/scuiasciiopt.hxx
+++ b/sc/source/ui/inc/scuiasciiopt.hxx
@@ -23,6 +23,7 @@
 #include <tools/solar.h>
 #include <tools/stream.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 #include "asciiopt.hxx"
diff --git a/sc/source/ui/inc/solveroptions.hxx 
b/sc/source/ui/inc/solveroptions.hxx
index 56c46a93151d..c40f147a0e81 100644
--- a/sc/source/ui/inc/solveroptions.hxx
+++ b/sc/source/ui/inc/solveroptions.hxx
@@ -22,6 +22,7 @@
 #include <utility>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <com/sun/star/uno/Sequence.hxx>
diff --git a/sc/source/ui/inc/tpcalc.hxx b/sc/source/ui/inc/tpcalc.hxx
index aef06ccd5bfd..a0cca03e85d8 100644
--- a/sc/source/ui/inc/tpcalc.hxx
+++ b/sc/source/ui/inc/tpcalc.hxx
@@ -20,6 +20,7 @@
 #pragma once
 
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include "editfield.hxx"
 #include <config_feature_opencl.h>
 #if HAVE_FEATURE_OPENCL
diff --git a/sc/source/ui/inc/tpdefaults.hxx b/sc/source/ui/inc/tpdefaults.hxx
index d3760948b6b3..30e6b9519d30 100644
--- a/sc/source/ui/inc/tpdefaults.hxx
+++ b/sc/source/ui/inc/tpdefaults.hxx
@@ -10,6 +10,7 @@
 #pragma once
 
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class ScTpDefaultsOptions : public SfxTabPage
 {
diff --git a/sc/source/ui/inc/tptable.hxx b/sc/source/ui/inc/tptable.hxx
index fe5cea284eee..79066c3474e5 100644
--- a/sc/source/ui/inc/tptable.hxx
+++ b/sc/source/ui/inc/tptable.hxx
@@ -21,6 +21,7 @@
 
 #include <sfx2/tabdlg.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
 
 class ScTablePage : public SfxTabPage
diff --git a/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx 
b/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx
index f23adcd1b62c..44dee3339481 100644
--- a/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx
+++ b/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx
@@ -24,6 +24,7 @@
 #include <sfx2/sidebar/PanelLayout.hxx>
 #include <vcl/EnumContext.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 namespace sc::sidebar {
 
diff --git a/sd/source/ui/dlg/paragr.cxx b/sd/source/ui/dlg/paragr.cxx
index ccf4a34e5a4b..29c7b271048a 100644
--- a/sd/source/ui/dlg/paragr.cxx
+++ b/sd/source/ui/dlg/paragr.cxx
@@ -25,6 +25,7 @@
 #include <svx/svxids.hrc>
 #include <svx/flagsdef.hxx>
 #include <svx/xcolit.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <paragr.hxx>
 #include <sdattr.hrc>
diff --git a/sd/source/ui/inc/BulletAndPositionDlg.hxx 
b/sd/source/ui/inc/BulletAndPositionDlg.hxx
index d2b50d621270..7598c05e458a 100644
--- a/sd/source/ui/inc/BulletAndPositionDlg.hxx
+++ b/sd/source/ui/inc/BulletAndPositionDlg.hxx
@@ -27,6 +27,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include "View.hxx"
diff --git a/sd/source/ui/inc/animobjs.hxx b/sd/source/ui/inc/animobjs.hxx
index ddf00cec57ec..83ca9744757f 100644
--- a/sd/source/ui/inc/animobjs.hxx
+++ b/sd/source/ui/inc/animobjs.hxx
@@ -26,6 +26,7 @@
 #include <misc/scopelock.hxx>
 #include <vcl/bitmap.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
 #include <vcl/weld/weldutils.hxx>
diff --git a/sd/source/ui/inc/copydlg.hxx b/sd/source/ui/inc/copydlg.hxx
index 79ed5af43e44..5e5d9a2a3b7e 100644
--- a/sd/source/ui/inc/copydlg.hxx
+++ b/sd/source/ui/inc/copydlg.hxx
@@ -22,6 +22,7 @@
 #include <sfx2/basedlgs.hxx>
 #include <tools/fract.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class ColorListBox;
 
diff --git a/sd/source/ui/inc/diactrl.hxx b/sd/source/ui/inc/diactrl.hxx
index db6e2eed9b8d..03e0fb9bac9e 100644
--- a/sd/source/ui/inc/diactrl.hxx
+++ b/sd/source/ui/inc/diactrl.hxx
@@ -21,6 +21,7 @@
 
 #include <vcl/InterimItemWindow.hxx>
 #include <sfx2/tbxctrl.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 namespace com::sun::star::frame
 {
diff --git a/sd/source/ui/inc/morphdlg.hxx b/sd/source/ui/inc/morphdlg.hxx
index c8190d2ac675..2b7cde2b9baa 100644
--- a/sd/source/ui/inc/morphdlg.hxx
+++ b/sd/source/ui/inc/morphdlg.hxx
@@ -20,6 +20,7 @@
 #pragma once
 
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class SdrObject;
diff --git a/sd/source/ui/inc/vectdlg.hxx b/sd/source/ui/inc/vectdlg.hxx
index 0c3adf27af53..10a3b4b070c4 100644
--- a/sd/source/ui/inc/vectdlg.hxx
+++ b/sd/source/ui/inc/vectdlg.hxx
@@ -21,6 +21,7 @@
 
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <svx/graphctl.hxx>
 
diff --git a/sdext/source/minimizer/optimizerdialog.hxx 
b/sdext/source/minimizer/optimizerdialog.hxx
index 212cb3b9f704..f32dc58f286c 100644
--- a/sdext/source/minimizer/optimizerdialog.hxx
+++ b/sdext/source/minimizer/optimizerdialog.hxx
@@ -28,6 +28,7 @@
 #include <cppuhelper/implbase.hxx>
 #include <vcl/roadmapwizardmachine.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #define ITEM_ID_INTRODUCTION            0
 #define ITEM_ID_SLIDES                  1
diff --git a/svtools/source/filter/exportdialog.hxx 
b/svtools/source/filter/exportdialog.hxx
index e31bb59794d3..bb92dae7f933 100644
--- a/svtools/source/filter/exportdialog.hxx
+++ b/svtools/source/filter/exportdialog.hxx
@@ -23,6 +23,7 @@
 #include <FltCallDialogParameter.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <tools/stream.hxx>
 #include <com/sun/star/lang/XComponent.hpp>
diff --git a/svx/source/sidebar/textcolumns/TextColumnsPropertyPanel.hxx 
b/svx/source/sidebar/textcolumns/TextColumnsPropertyPanel.hxx
index d93db7b13ca9..4b49421706c8 100644
--- a/svx/source/sidebar/textcolumns/TextColumnsPropertyPanel.hxx
+++ b/svx/source/sidebar/textcolumns/TextColumnsPropertyPanel.hxx
@@ -12,6 +12,7 @@
 #include <sfx2/sidebar/ControllerItem.hxx>
 #include <sfx2/sidebar/PanelLayout.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 namespace svx::sidebar
 {
diff --git a/svx/source/tbxctrls/layctrl.cxx b/svx/source/tbxctrls/layctrl.cxx
index f92b0e6af744..957ee18d3b93 100644
--- a/svx/source/tbxctrls/layctrl.cxx
+++ b/svx/source/tbxctrls/layctrl.cxx
@@ -22,6 +22,7 @@
 #include <vcl/settings.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/toolbox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 
 #include <svx/strings.hrc>
diff --git a/sw/inc/colwd.hxx b/sw/inc/colwd.hxx
index a23733e6751b..b0d320a3b308 100644
--- a/sw/inc/colwd.hxx
+++ b/sw/inc/colwd.hxx
@@ -20,6 +20,7 @@
 
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <memory>
 
diff --git a/sw/source/ui/dbui/createaddresslistdialog.hxx 
b/sw/source/ui/dbui/createaddresslistdialog.hxx
index 57bb71738a2e..baf91e37c38e 100644
--- a/sw/source/ui/dbui/createaddresslistdialog.hxx
+++ b/sw/source/ui/dbui/createaddresslistdialog.hxx
@@ -22,6 +22,7 @@
 #include <sfx2/basedlgs.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <vector>
 
diff --git a/sw/source/ui/envelp/labfmt.hxx b/sw/source/ui/envelp/labfmt.hxx
index da4daa4dd5c0..cec4213e2076 100644
--- a/sw/source/ui/envelp/labfmt.hxx
+++ b/sw/source/ui/envelp/labfmt.hxx
@@ -25,6 +25,7 @@
 #include <vcl/idle.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/sw/source/ui/envelp/labprt.hxx b/sw/source/ui/envelp/labprt.hxx
index 17251081229b..f8843095bff9 100644
--- a/sw/source/ui/envelp/labprt.hxx
+++ b/sw/source/ui/envelp/labprt.hxx
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <label.hxx>
 
diff --git a/sw/source/ui/fldui/flddok.hxx b/sw/source/ui/fldui/flddok.hxx
index 1a889aa45aef..2bb8df6314fc 100644
--- a/sw/source/ui/fldui/flddok.hxx
+++ b/sw/source/ui/fldui/flddok.hxx
@@ -20,6 +20,7 @@
 #define INCLUDED_SW_SOURCE_UI_FLDUI_FLDDOK_HXX
 
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <numfmtlb.hxx>
 #include "fldpage.hxx"
diff --git a/sw/source/ui/inc/mmresultdialogs.hxx 
b/sw/source/ui/inc/mmresultdialogs.hxx
index 55b54d5dd84d..cbc2ca10ca5e 100644
--- a/sw/source/ui/inc/mmresultdialogs.hxx
+++ b/sw/source/ui/inc/mmresultdialogs.hxx
@@ -21,6 +21,7 @@
 
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 #include <vcl/print.hxx>
diff --git a/sw/source/ui/inc/regionsw.hxx b/sw/source/ui/inc/regionsw.hxx
index 58ec90040a76..70414fbed21d 100644
--- a/sw/source/ui/inc/regionsw.hxx
+++ b/sw/source/ui/inc/regionsw.hxx
@@ -30,6 +30,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/EntryTreeView.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 
 #include <memory>
diff --git a/sw/source/ui/misc/impfnote.hxx b/sw/source/ui/misc/impfnote.hxx
index 56eefda7fe22..6bfa017e54ee 100644
--- a/sw/source/ui/misc/impfnote.hxx
+++ b/sw/source/ui/misc/impfnote.hxx
@@ -21,6 +21,7 @@
 
 #include <sfx2/tabdlg.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <numberingtypelistbox.hxx>
 
diff --git a/sw/source/uibase/inc/abstract.hxx 
b/sw/source/uibase/inc/abstract.hxx
index ded62f0ff598..a0b63b8e263c 100644
--- a/sw/source/uibase/inc/abstract.hxx
+++ b/sw/source/uibase/inc/abstract.hxx
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <sfx2/basedlgs.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SwInsertAbstractDlg final : public SfxDialogController
 {
diff --git a/sw/source/uibase/inc/break.hxx b/sw/source/uibase/inc/break.hxx
index 002a3828bb90..5ea94f763369 100644
--- a/sw/source/uibase/inc/break.hxx
+++ b/sw/source/uibase/inc/break.hxx
@@ -21,6 +21,7 @@
 
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <optional>
 
diff --git a/sw/source/uibase/inc/column.hxx b/sw/source/uibase/inc/column.hxx
index 62e45a2902f7..b5a9c83770eb 100644
--- a/sw/source/uibase/inc/column.hxx
+++ b/sw/source/uibase/inc/column.hxx
@@ -26,6 +26,7 @@
 #include <svx/frmdirlbox.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <map>
 #include "colex.hxx"
 #include "prcntfld.hxx"
diff --git a/sw/source/uibase/inc/contentcontroldlg.hxx 
b/sw/source/uibase/inc/contentcontroldlg.hxx
index 5fcc96ab9b4d..0a21d8ee4996 100644
--- a/sw/source/uibase/inc/contentcontroldlg.hxx
+++ b/sw/source/uibase/inc/contentcontroldlg.hxx
@@ -20,6 +20,7 @@
 
 #include <sfx2/basedlgs.hxx>
 #include <vcl/abstdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/sw/source/uibase/inc/convert.hxx b/sw/source/uibase/inc/convert.hxx
index a0d757d092ed..42da4d7154ac 100644
--- a/sw/source/uibase/inc/convert.hxx
+++ b/sw/source/uibase/inc/convert.hxx
@@ -23,6 +23,7 @@
 #include <sfx2/basedlgs.hxx>
 #include <sal/types.h>
 #include <rtl/ustring.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
 
diff --git a/sw/source/uibase/inc/drpcps.hxx b/sw/source/uibase/inc/drpcps.hxx
index 1875faa0c96a..75be43b488c0 100644
--- a/sw/source/uibase/inc/drpcps.hxx
+++ b/sw/source/uibase/inc/drpcps.hxx
@@ -26,6 +26,7 @@
 #include <vcl/print.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 
 /// Dedicated drop caps dialog, opened by the .uno:FormatDropcap UNO command, 
which is not in the
diff --git a/sw/source/uibase/inc/instable.hxx 
b/sw/source/uibase/inc/instable.hxx
index e8476e14d0cd..493e0d4a857f 100644
--- a/sw/source/uibase/inc/instable.hxx
+++ b/sw/source/uibase/inc/instable.hxx
@@ -24,6 +24,7 @@
 #include <rtl/ustring.hxx>
 #include <tools/link.hxx>
 #include <vcl/textfilter.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 
 #include "wrtsh.hxx"
diff --git a/sw/source/uibase/inc/linenum.hxx b/sw/source/uibase/inc/linenum.hxx
index d50a34f46819..47c0c24bb00f 100644
--- a/sw/source/uibase/inc/linenum.hxx
+++ b/sw/source/uibase/inc/linenum.hxx
@@ -22,6 +22,7 @@
 #include <sfx2/basedlgs.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include "numberingtypelistbox.hxx"
 
 class SwView;
diff --git a/sw/source/uibase/inc/mailconfigpage.hxx 
b/sw/source/uibase/inc/mailconfigpage.hxx
index a96874124310..d2260e5fa550 100644
--- a/sw/source/uibase/inc/mailconfigpage.hxx
+++ b/sw/source/uibase/inc/mailconfigpage.hxx
@@ -21,6 +21,7 @@
 
 #include <sfx2/tabdlg.hxx>
 #include <sfx2/basedlgs.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SwMailMergeConfigItem;
 
diff --git a/sw/source/uibase/inc/mailmrge.hxx 
b/sw/source/uibase/inc/mailmrge.hxx
index da39ac68de70..8e83a6e7739a 100644
--- a/sw/source/uibase/inc/mailmrge.hxx
+++ b/sw/source/uibase/inc/mailmrge.hxx
@@ -23,6 +23,7 @@
 #include <sfx2/basedlgs.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <com/sun/star/uno/Sequence.h>
 #include <com/sun/star/uno/Reference.h>
diff --git a/sw/source/uibase/inc/navipi.hxx b/sw/source/uibase/inc/navipi.hxx
index 164676c0743b..69504b5d09d6 100644
--- a/sw/source/uibase/inc/navipi.hxx
+++ b/sw/source/uibase/inc/navipi.hxx
@@ -28,6 +28,7 @@
 #include <sfx2/navigat.hxx>
 #include <sfx2/weldutils.hxx>
 #include <sfx2/sidebar/PanelLayout.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include "conttree.hxx"
 #include <ndarr.hxx>
 #include <memory>
diff --git a/sw/source/uibase/inc/numpara.hxx b/sw/source/uibase/inc/numpara.hxx
index e529e4b1d13b..44890939e1b2 100644
--- a/sw/source/uibase/inc/numpara.hxx
+++ b/sw/source/uibase/inc/numpara.hxx
@@ -22,6 +22,7 @@
 #include <sfx2/tabdlg.hxx>
 #include <svl/style.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 // with this TabPage numbering settings at the paragraph / paragraph style
 // are performed.
diff --git a/sw/source/uibase/inc/optload.hxx b/sw/source/uibase/inc/optload.hxx
index 33967b565263..94b278e0fb76 100644
--- a/sw/source/uibase/inc/optload.hxx
+++ b/sw/source/uibase/inc/optload.hxx
@@ -27,6 +27,7 @@
 #include <vcl/textfilter.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/sw/source/uibase/inc/outline.hxx b/sw/source/uibase/inc/outline.hxx
index 976046d523e4..0d3b32fbe444 100644
--- a/sw/source/uibase/inc/outline.hxx
+++ b/sw/source/uibase/inc/outline.hxx
@@ -21,6 +21,7 @@
 
 #include <memory>
 #include <sfx2/tabdlg.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <swtypes.hxx>
 #include "numprevw.hxx"
 #include "numberingtypelistbox.hxx"
diff --git a/sw/source/uibase/inc/pggrid.hxx b/sw/source/uibase/inc/pggrid.hxx
index 989864a73c7d..d4cfff447932 100644
--- a/sw/source/uibase/inc/pggrid.hxx
+++ b/sw/source/uibase/inc/pggrid.hxx
@@ -21,6 +21,7 @@
 #include <sfx2/tabdlg.hxx>
 #include "colex.hxx"
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
 #include <svx/colorbox.hxx>
diff --git a/sw/source/uibase/inc/srtdlg.hxx b/sw/source/uibase/inc/srtdlg.hxx
index b36f549b8655..cb22a612959d 100644
--- a/sw/source/uibase/inc/srtdlg.hxx
+++ b/sw/source/uibase/inc/srtdlg.hxx
@@ -23,6 +23,7 @@
 #include <svx/langbox.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 class SwWrtShell;
diff --git a/sw/source/uibase/inc/swuicnttab.hxx 
b/sw/source/uibase/inc/swuicnttab.hxx
index 3907fbf6910c..09ced19d4249 100644
--- a/sw/source/uibase/inc/swuicnttab.hxx
+++ b/sw/source/uibase/inc/swuicnttab.hxx
@@ -26,6 +26,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/sw/source/uibase/inc/swuiidxmrk.hxx 
b/sw/source/uibase/inc/swuiidxmrk.hxx
index f3da413b1a4d..f8f94a74c6f7 100644
--- a/sw/source/uibase/inc/swuiidxmrk.hxx
+++ b/sw/source/uibase/inc/swuiidxmrk.hxx
@@ -25,6 +25,7 @@
 #include <sfx2/childwin.hxx>
 #include <vcl/weld/Builder.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 #include <toxe.hxx>
 #include <memory>
diff --git a/sw/source/uibase/inc/titlepage.hxx 
b/sw/source/uibase/inc/titlepage.hxx
index 2aabc71eacc7..3d89388709d5 100644
--- a/sw/source/uibase/inc/titlepage.hxx
+++ b/sw/source/uibase/inc/titlepage.hxx
@@ -12,6 +12,7 @@
 
 #include <sfx2/basedlgs.hxx>
 #include <vcl/weld/ComboBox.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 #include <fmtpdsc.hxx>
 
diff --git a/sw/source/uibase/table/tablepg.hxx 
b/sw/source/uibase/table/tablepg.hxx
index dc7bd5ac5197..1dff98654f0a 100644
--- a/sw/source/uibase/table/tablepg.hxx
+++ b/sw/source/uibase/table/tablepg.hxx
@@ -24,6 +24,7 @@
 #include <svx/frmdirlbox.hxx>
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 
 class SwWrtShell;
 class SwTableRep;
diff --git a/sw/source/uibase/uiview/pview.cxx 
b/sw/source/uibase/uiview/pview.cxx
index 47e16f8669f5..4c88ecf19f83 100644
--- a/sw/source/uibase/uiview/pview.cxx
+++ b/sw/source/uibase/uiview/pview.cxx
@@ -28,6 +28,7 @@
 #include <vcl/svapp.hxx>
 #include <vcl/syswin.hxx>
 #include <vcl/weld/DialogController.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weld.hxx>
 
 #include <svl/whiter.hxx>
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index d5bf354e4f65..9f6d96320674 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -591,6 +591,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/source/weld/IconView \
     vcl/source/weld/ItemView \
     vcl/source/weld/MetricSpinButton \
+    vcl/source/weld/SpinButton \
     vcl/source/weld/TextView \
     vcl/source/weld/TreeView \
     vcl/source/weld/weldutils \
diff --git a/vcl/inc/colorpicker.hxx b/vcl/inc/colorpicker.hxx
index 47c8531a5f72..0cfdbf63f1b3 100644
--- a/vcl/inc/colorpicker.hxx
+++ b/vcl/inc/colorpicker.hxx
@@ -24,6 +24,7 @@
 #include <vcl/virdev.hxx>
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
 #include <o3tl/typed_flags_set.hxx>
diff --git a/vcl/inc/printdlg.hxx b/vcl/inc/printdlg.hxx
index ebb69af4e6db..88913cb3c5d8 100644
--- a/vcl/inc/printdlg.hxx
+++ b/vcl/inc/printdlg.hxx
@@ -27,6 +27,7 @@
 #include <vcl/weld/DialogController.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/customweld.hxx>
 #include <vcl/weld/weld.hxx>
 #include <map>
diff --git a/vcl/inc/qt5/QtInstanceBuilder.hxx 
b/vcl/inc/qt5/QtInstanceBuilder.hxx
index 813fb04ce3f1..c9344a1af1f7 100644
--- a/vcl/inc/qt5/QtInstanceBuilder.hxx
+++ b/vcl/inc/qt5/QtInstanceBuilder.hxx
@@ -21,6 +21,7 @@
 #include <vcl/weld/ComboBox.hxx>
 #include <vcl/weld/EntryTreeView.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/vcl/inc/qt5/QtInstanceSpinButton.hxx 
b/vcl/inc/qt5/QtInstanceSpinButton.hxx
index b8fd0ffab5f7..8212d8e54c3a 100644
--- a/vcl/inc/qt5/QtInstanceSpinButton.hxx
+++ b/vcl/inc/qt5/QtInstanceSpinButton.hxx
@@ -12,6 +12,8 @@
 #include "QtDoubleSpinBox.hxx"
 #include "QtInstanceEntry.hxx"
 
+#include <vcl/weld/SpinButton.hxx>
+
 #include <QtWidgets/QSpinBox>
 
 #include <optional>
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 0c0d833d2c60..eb146a04d55d 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -16,6 +16,7 @@
 #include <vcl/weld/EntryTreeView.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <vcl/weld/TreeView.hxx>
 #include <vcl/weld/weld.hxx>
diff --git a/vcl/source/control/FormattedField.cxx 
b/vcl/source/control/FormattedField.cxx
index 7576d7485943..1789926354dd 100644
--- a/vcl/source/control/FormattedField.cxx
+++ b/vcl/source/control/FormattedField.cxx
@@ -30,6 +30,7 @@
 #include <vcl/commandevent.hxx>
 #include <vcl/toolkit/fmtfield.hxx>
 #include <vcl/uitest/formattedfielduiobject.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weldutils.hxx>
 
 #include "FieldFormatter.hxx"
diff --git a/vcl/source/control/longcurr.cxx b/vcl/source/control/longcurr.cxx
index 978ea42b39d0..4d9610458bae 100644
--- a/vcl/source/control/longcurr.cxx
+++ b/vcl/source/control/longcurr.cxx
@@ -28,6 +28,7 @@
 #include <vcl/event.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/toolkit/longcurr.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/weldutils.hxx>
 
 #include <unotools/localedatawrapper.hxx>
diff --git a/vcl/source/weld/SpinButton.cxx b/vcl/source/weld/SpinButton.cxx
new file mode 100644
index 000000000000..aa54dec05250
--- /dev/null
+++ b/vcl/source/weld/SpinButton.cxx
@@ -0,0 +1,108 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <vcl/weld/SpinButton.hxx>
+
+namespace weld
+{
+double SpinButton::convert_value_to_double(sal_Int64 nValue) const
+{
+    return static_cast<double>(nValue) / Power10(get_digits());
+}
+
+sal_Int64 SpinButton::convert_double_to_value(double fDouble) const
+{
+    return basegfx::fround64(fDouble * Power10(get_digits()));
+}
+
+std::optional<OUString> SpinButton::format_floating_point_value(double fValue)
+{
+    if (!m_aFormatValueHdl.IsSet())
+        return {};
+    const OUString sText = 
m_aFormatValueHdl.Call(convert_double_to_value(fValue));
+    return sText;
+}
+
+TriState SpinButton::parse_text(const OUString& rText, double* pResult)
+{
+    if (!m_aParseTextHdl.IsSet())
+        return TRISTATE_INDET;
+    std::optional<int> aValue = m_aParseTextHdl.Call(rText);
+    if (!aValue.has_value())
+        return TRISTATE_FALSE;
+
+    *pResult = convert_value_to_double(aValue.value());
+    return TRISTATE_TRUE;
+}
+
+void SpinButton::set_value(sal_Int64 value)
+{
+    disable_notify_events();
+    set_floating_point_value(convert_value_to_double(value));
+    enable_notify_events();
+}
+
+void SpinButton::set_range(sal_Int64 min, sal_Int64 max)
+{
+    set_floating_point_range(convert_value_to_double(min), 
convert_value_to_double(max));
+}
+
+void SpinButton::get_range(sal_Int64& min, sal_Int64& max) const
+{
+    double fMin = 0;
+    double fMax = 0;
+    get_floating_point_range(fMin, fMax);
+    min = convert_double_to_value(fMin);
+    max = convert_double_to_value(fMax);
+}
+
+void SpinButton::set_min(sal_Int64 min)
+{
+    sal_Int64 dummy, max;
+    get_range(dummy, max);
+    set_range(min, max);
+}
+
+void SpinButton::set_max(sal_Int64 max)
+{
+    sal_Int64 min, dummy;
+    get_range(min, dummy);
+    set_range(min, max);
+}
+
+sal_Int64 SpinButton::get_min() const
+{
+    sal_Int64 min, dummy;
+    get_range(min, dummy);
+    return min;
+}
+
+sal_Int64 SpinButton::get_max() const
+{
+    sal_Int64 dummy, max;
+    get_range(dummy, max);
+    return max;
+}
+
+void SpinButton::set_increments(sal_Int64 step, sal_Int64 page)
+{
+    set_floating_point_increments(convert_value_to_double(step), 
convert_value_to_double(page));
+}
+
+void SpinButton::get_increments(sal_Int64& step, sal_Int64& page) const
+{
+    double fStep = 0;
+    double fPage = 0;
+    get_floating_point_increments(fStep, fPage);
+    step = convert_double_to_value(fStep);
+    page = convert_double_to_value(fPage);
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 47d90e0eb8c2..49c89bc24141 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -38,6 +38,7 @@
 #include <vcl/toolkit/floatwin.hxx>
 #include <vcl/weld/MetricSpinButton.hxx>
 #include <vcl/weld/ScrolledWindow.hxx>
+#include <vcl/weld/SpinButton.hxx>
 #include <vcl/weld/TextView.hxx>
 #include <unx/genpspgraphics.h>
 #include <rtl/strbuf.hxx>

Reply via email to