cui/Library_cui.mk              |    1 -
 cui/source/factory/dlgfact.cxx  |   26 --------------------------
 cui/source/factory/dlgfact.hxx  |    3 ---
 include/vcl/abstdlg.hxx         |    3 ---
 solenv/clang-format/excludelist |    2 +-
 vcl/Library_vcl.mk              |    1 +
 vcl/source/app/salvtables.cxx   |   31 +++++++++++++++++++++++++++----
 7 files changed, 29 insertions(+), 38 deletions(-)

New commits:
commit 89ad9eec8ba4f0923a3be843a8343646e8870b90
Author:     Michael Weghorn <[email protected]>
AuthorDate: Thu Dec 4 19:37:17 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Sat Dec 6 08:40:06 2025 +0100

    tdf#169505 Move ColorPickerDialog from cui to vcl
    
    ... and simplify a bit to no longer use the dialog
    factory logic which was needed previously to break
    a dependency cycle because the cui module is above vcl.
    
    Further simplification will follow in upcoming commits.
    
    Change-Id: Ie3b0d1090300e249e40e1479a40d01caabbdf573
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195094
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index a20ca726d8f0..b9e1fe20dd7c 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -117,7 +117,6 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
     cui/source/dialogs/about \
     $(call gb_Helper_optional,EXTENSIONS, \
         cui/source/dialogs/AdditionsDialog) \
-    cui/source/dialogs/colorpicker \
     cui/source/dialogs/cuifmsearch \
     cui/source/dialogs/cuigaldlg \
     cui/source/dialogs/cuigrfflt \
diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index b996d12324fe..259cc071ab77 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -48,7 +48,6 @@
 #include <cuigaldlg.hxx>
 #include <transfrm.hxx>
 #include <bbdlg.hxx>
-#include <colorpicker.hxx>
 #include <cuisrchdlg.hxx>
 #include <cuitbxform.hxx>
 #include <optdict.hxx>
@@ -1422,31 +1421,6 @@ VclPtr<SfxAbstractLinksDialog> 
AbstractDialogFactory_Impl::CreateLinksDialog(wel
     return VclPtr<AbstractLinksDialog_Impl>::Create(std::move(xLinkDlg));
 }
 
-namespace
-{
-class AbstractColorPickerDialog_Impl
-    : public vcl::AbstractDialogImpl_Async<AbstractColorPickerDialog, 
ColorPickerDialog>
-{
-public:
-    using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE;
-
-    virtual void SetColor(const Color& rColor) override { 
m_pDlg->SetColor(rColor); }
-
-    virtual Color GetColor() const override { return m_pDlg->GetColor(); }
-
-    virtual weld::Dialog* GetDialog() const override { return 
m_pDlg->getDialog(); }
-};
-}
-
-VclPtr<AbstractColorPickerDialog>
-AbstractDialogFactory_Impl::CreateColorPickerDialog(weld::Window* pParent, 
Color nColor,
-                                                    vcl::ColorPickerMode eMode)
-{
-    std::unique_ptr<ColorPickerDialog> pColorPickerDialog(
-        std::make_unique<ColorPickerDialog>(pParent, nColor, eMode));
-    return 
VclPtr<AbstractColorPickerDialog_Impl>::Create(std::move(pColorPickerDialog));
-}
-
 VclPtr<SfxAbstractTabDialog> 
AbstractDialogFactory_Impl::CreateSvxFormatCellsDialog(weld::Window* pParent, 
const SfxItemSet& rAttr, const SdrModel& rModel, bool bStyle)
 {
     return 
VclPtr<CuiAbstractTabController_Impl<SvxFormatCellsDialog>>::Create(pParent, 
rAttr, rModel, bStyle);
diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index 4c3a9a4b436c..c949c2fc4eb0 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -59,9 +59,6 @@ public:
     virtual VclPtr<SfxAbstractPasteDialog> CreatePasteDialog(weld::Window* 
pParent) override;
     virtual VclPtr<SfxAbstractLinksDialog> CreateLinksDialog(weld::Window* 
pParent, sfx2::LinkManager* pMgr, bool bHTML = false, sfx2::SvBaseLink* 
p=nullptr) override;
 
-    virtual VclPtr<AbstractColorPickerDialog>
-    CreateColorPickerDialog(weld::Window* pParent, Color nColor, 
vcl::ColorPickerMode eMode) override;
-
     virtual VclPtr<AbstractHangulHanjaConversionDialog> 
CreateHangulHanjaConversionDialog(weld::Widget* pParent) override;
     virtual VclPtr<AbstractThesaurusDialog>  
CreateThesaurusDialog(weld::Widget*,
                                                 
css::uno::Reference<css::linguistic2::XThesaurus> xThesaurus,
diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx
index 65ea90bf1cfe..7a8e18393d4f 100644
--- a/include/vcl/abstdlg.hxx
+++ b/include/vcl/abstdlg.hxx
@@ -189,9 +189,6 @@ public:
     // The Id is an implementation detail of the factory
     virtual VclPtr<VclAbstractDialog> CreateVclDialog(weld::Window* pParent, 
sal_uInt32 nId) = 0;
 
-    virtual VclPtr<AbstractColorPickerDialog>
-    CreateColorPickerDialog(weld::Window* pParent, Color nColor, 
vcl::ColorPickerMode eMode) = 0;
-
     // creates instance of PasswordToOpenModifyDialog from cui
     virtual VclPtr<AbstractPasswordToOpenModifyDialog> 
CreatePasswordToOpenModifyDialog(weld::Window * pParent, sal_uInt16 
nMaxPasswdLen, bool bIsPasswordToModify) = 0;
 
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index ab94d7cb64a1..72b5f74fba92 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -2166,7 +2166,6 @@ cui/source/dialogs/DiagramDialog.cxx
 cui/source/dialogs/SpellAttrib.hxx
 cui/source/dialogs/SpellDialog.cxx
 cui/source/dialogs/about.cxx
-cui/source/dialogs/colorpicker.cxx
 cui/source/dialogs/cuifmsearch.cxx
 cui/source/dialogs/cuigaldlg.cxx
 cui/source/dialogs/cuigrfflt.cxx
@@ -14716,6 +14715,7 @@ vcl/source/window/brdwin.cxx
 vcl/source/window/bubblewindow.cxx
 vcl/source/window/builder.cxx
 vcl/source/window/clipping.cxx
+vcl/source/window/colorpicker.cxx
 vcl/source/window/commandevent.cxx
 vcl/source/window/cursor.cxx
 vcl/source/window/debugevent.cxx
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 7ca18aa0a5a0..1452533b76f1 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -169,6 +169,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/source/window/brdwin \
     vcl/source/window/bufferdevice \
     vcl/source/window/accessibility \
+    vcl/source/window/colorpicker \
     vcl/source/window/legacyaccessibility \
     vcl/source/window/clipping \
     vcl/source/window/stacking \
diff --git a/cui/source/inc/colorpicker.hxx b/vcl/inc/colorpicker.hxx
similarity index 100%
rename from cui/source/inc/colorpicker.hxx
rename to vcl/inc/colorpicker.hxx
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 18f5ee98283e..38b0501771ed 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -25,6 +25,7 @@
 #include <com/sun/star/accessibility/AccessibleRelationType.hpp>
 #include <com/sun/star/awt/XWindow.hpp>
 #include <com/sun/star/awt/XVclWindowPeer.hpp>
+#include <colorpicker.hxx>
 #include <o3tl/safeint.hxx>
 #include <o3tl/sorted_vector.hxx>
 #include <o3tl/string_view.hxx>
@@ -49,6 +50,7 @@
 #include <utility>
 #include <tools/helpers.hxx>
 #include <vcl/abstdlg.hxx>
+#include <vcl/abstdlgimpl.hxx>
 #include <vcl/builder.hxx>
 #include <vcl/dndlistenercontainer.hxx>
 #include <vcl/toolkit/combobox.hxx>
@@ -7352,13 +7354,34 @@ weld::MessageDialog* 
SalInstance::CreateMessageDialog(weld::Widget* pParent,
     return new SalInstanceMessageDialog(xMessageDialog, nullptr, true);
 }
 
+namespace
+{
+class AbstractColorPickerDialog_Impl
+    : public vcl::AbstractDialogImpl_Async<AbstractColorPickerDialog, 
ColorPickerDialog>
+{
+public:
+    using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE;
+
+    virtual void SetColor(const Color& rColor) override { 
m_pDlg->SetColor(rColor); }
+
+    virtual Color GetColor() const override { return m_pDlg->GetColor(); }
+
+    virtual weld::Dialog* GetDialog() const override { return 
m_pDlg->getDialog(); }
+};
+
+VclPtr<AbstractColorPickerDialog> CreateColorPickerDialog(weld::Window* 
pParent, Color nColor,
+                                                          vcl::ColorPickerMode 
eMode)
+{
+    std::unique_ptr<ColorPickerDialog> pColorPickerDialog(
+        std::make_unique<ColorPickerDialog>(pParent, nColor, eMode));
+    return 
VclPtr<AbstractColorPickerDialog_Impl>::Create(std::move(pColorPickerDialog));
+}
+}
+
 std::unique_ptr<weld::ColorChooserDialog>
 SalInstance::CreateColorChooserDialog(weld::Window* pParent, 
vcl::ColorPickerMode eMode)
 {
-    VclAbstractDialogFactory* pFact = VclAbstractDialogFactory::Create();
-    assert(pFact);
-    VclPtr<AbstractColorPickerDialog> pDialog
-        = pFact->CreateColorPickerDialog(pParent, COL_BLACK, eMode);
+    VclPtr<AbstractColorPickerDialog> pDialog = 
CreateColorPickerDialog(pParent, COL_BLACK, eMode);
     assert(pDialog);
     return std::make_unique<SalInstanceColorChooserDialog>(pDialog);
 }
diff --git a/cui/source/dialogs/colorpicker.cxx 
b/vcl/source/window/colorpicker.cxx
similarity index 100%
rename from cui/source/dialogs/colorpicker.cxx
rename to vcl/source/window/colorpicker.cxx

Reply via email to