framework/inc/uielement/popuptoolbarcontroller.hxx    |   90 ++++++++++++++++++
 framework/source/uielement/popuptoolbarcontroller.cxx |   73 ++------------
 framework/source/uielement/toolbarmanager.cxx         |    4 
 3 files changed, 102 insertions(+), 65 deletions(-)

New commits:
commit 30fb4d78097d00ffa5ba744b051181edbc4bc33d
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sat Jun 14 13:50:59 2025 +0200
Commit:     Noel Grandin <noelgran...@gmail.com>
CommitDate: Sat Jun 14 20:23:22 2025 +0200

    use more concrete UNO
    
    Change-Id: Ie2717859365a1f7c4830fe46094f64016c31a6a2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186496
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins

diff --git a/framework/inc/uielement/popuptoolbarcontroller.hxx 
b/framework/inc/uielement/popuptoolbarcontroller.hxx
new file mode 100644
index 000000000000..cbf76ae5902f
--- /dev/null
+++ b/framework/inc/uielement/popuptoolbarcontroller.hxx
@@ -0,0 +1,90 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ *   Licensed to the Apache Software Foundation (ASF) under one or more
+ *   contributor license agreements. See the NOTICE file distributed
+ *   with this work for additional information regarding copyright
+ *   ownership. The ASF licenses this file to you under the Apache
+ *   License, Version 2.0 (the "License"); you may not use this file
+ *   except in compliance with the License. You may obtain a copy of
+ *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+ */
+
+#pragma once
+
+#include <cppuhelper/implbase.hxx>
+#include <svtools/toolboxcontroller.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <toolkit/awt/vclxmenu.hxx>
+#include <com/sun/star/frame/XUIControllerFactory.hpp>
+#include <com/sun/star/frame/XPopupMenuController.hpp>
+#include <vcl/vclenum.hxx>
+
+namespace framework
+{
+typedef cppu::ImplInheritanceHelper<svt::ToolboxController, 
css::lang::XServiceInfo> ToolBarBase;
+
+class PopupMenuToolbarController : public ToolBarBase
+{
+public:
+    // XComponent
+    virtual void SAL_CALL dispose() override;
+    // XInitialization
+    virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& 
aArguments) override;
+    // XToolbarController
+    virtual css::uno::Reference<css::awt::XWindow> SAL_CALL 
createPopupWindow() override;
+    // XStatusListener
+    virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& 
rEvent) override;
+
+protected:
+    PopupMenuToolbarController(const 
css::uno::Reference<css::uno::XComponentContext>& rxContext,
+                               OUString aPopupCommand = OUString());
+    virtual void functionExecuted(const OUString& rCommand);
+    virtual ToolBoxItemBits getDropDownStyle() const;
+    void createPopupMenuController();
+
+    bool m_bHasController;
+    bool m_bResourceURL;
+    OUString m_aPopupCommand;
+    rtl::Reference<VCLXPopupMenu> m_xPopupMenu;
+
+private:
+    css::uno::Reference<css::frame::XUIControllerFactory> m_xPopupMenuFactory;
+    css::uno::Reference<css::frame::XPopupMenuController> 
m_xPopupMenuController;
+};
+
+class GenericPopupToolbarController : public PopupMenuToolbarController
+{
+public:
+    GenericPopupToolbarController(const 
css::uno::Reference<css::uno::XComponentContext>& rxContext,
+                                  const css::uno::Sequence<css::uno::Any>& 
rxArgs);
+
+    // XInitialization
+    virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& 
rxArgs) override;
+
+    // XStatusListener
+    virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& 
rEvent) override;
+
+    // XServiceInfo
+    virtual OUString SAL_CALL getImplementationName() override;
+
+    virtual sal_Bool SAL_CALL supportsService(OUString const& rServiceName) 
override;
+
+    virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() 
override;
+
+private:
+    bool m_bSplitButton, m_bReplaceWithLast;
+    void functionExecuted(const OUString& rCommand) override;
+    ToolBoxItemBits getDropDownStyle() const override;
+};
+
+} // namespace framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx 
b/framework/source/uielement/popuptoolbarcontroller.cxx
index bfe38aa7c60f..afe6d6584281 100644
--- a/framework/source/uielement/popuptoolbarcontroller.cxx
+++ b/framework/source/uielement/popuptoolbarcontroller.cxx
@@ -19,14 +19,12 @@
 
 #include <bitmaps.hlst>
 
-#include <cppuhelper/implbase.hxx>
+#include <uielement/popuptoolbarcontroller.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <comphelper/propertyvalue.hxx>
 #include <helper/persistentwindowstate.hxx>
 #include <menuconfiguration.hxx>
 #include <svtools/imagemgr.hxx>
-#include <svtools/toolboxcontroller.hxx>
-#include <toolkit/awt/vclxmenu.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 #include <comphelper/diagnose_ex.hxx>
 #include <tools/urlobj.hxx>
@@ -40,53 +38,18 @@
 #include <com/sun/star/awt/PopupMenuDirection.hpp>
 #include <com/sun/star/awt/XPopupMenu.hpp>
 #include <com/sun/star/frame/thePopupMenuControllerFactory.hpp>
-#include <com/sun/star/frame/XPopupMenuController.hpp>
 #include <com/sun/star/frame/XStorable.hpp>
 #include <com/sun/star/frame/XSubToolbarController.hpp>
-#include <com/sun/star/frame/XUIControllerFactory.hpp>
 #include <com/sun/star/frame/XController.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/ucb/CommandFailedException.hpp>
 #include <com/sun/star/ucb/ContentCreationException.hpp>
 #include <com/sun/star/util/XModifiable.hpp>
 
 using namespace framework;
 
-namespace
+namespace framework
 {
 
-typedef cppu::ImplInheritanceHelper< svt::ToolboxController,
-                                    css::lang::XServiceInfo >
-                ToolBarBase;
-
-class PopupMenuToolbarController : public ToolBarBase
-{
-public:
-    // XComponent
-    virtual void SAL_CALL dispose() override;
-    // XInitialization
-    virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any 
>& aArguments ) override;
-    // XToolbarController
-    virtual css::uno::Reference< css::awt::XWindow > SAL_CALL 
createPopupWindow() override;
-    // XStatusListener
-    virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& 
rEvent ) override;
-
-protected:
-    PopupMenuToolbarController( const css::uno::Reference< 
css::uno::XComponentContext >& rxContext,
-                                OUString aPopupCommand = OUString() );
-    virtual void functionExecuted( const OUString &rCommand );
-    virtual ToolBoxItemBits getDropDownStyle() const;
-    void createPopupMenuController();
-
-    bool                                                    m_bHasController;
-    bool                                                    m_bResourceURL;
-    OUString                                                m_aPopupCommand;
-    rtl::Reference< VCLXPopupMenu >                         m_xPopupMenu;
-
-private:
-    css::uno::Reference< css::frame::XUIControllerFactory > 
m_xPopupMenuFactory;
-    css::uno::Reference< css::frame::XPopupMenuController > 
m_xPopupMenuController;
-};
 
 PopupMenuToolbarController::PopupMenuToolbarController(
     const css::uno::Reference< css::uno::XComponentContext >& xContext,
@@ -276,30 +239,6 @@ void 
PopupMenuToolbarController::createPopupMenuController()
     }
 }
 
-class GenericPopupToolbarController : public PopupMenuToolbarController
-{
-public:
-    GenericPopupToolbarController( const css::uno::Reference< 
css::uno::XComponentContext >& rxContext,
-                                   const css::uno::Sequence< css::uno::Any >& 
rxArgs );
-
-    // XInitialization
-    virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any 
>& rxArgs ) override;
-
-    // XStatusListener
-    virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& 
rEvent ) override;
-
-    // XServiceInfo
-    virtual OUString SAL_CALL getImplementationName() override;
-
-    virtual sal_Bool SAL_CALL supportsService(OUString const & rServiceName) 
override;
-
-    virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() 
override;
-
-private:
-    bool m_bSplitButton, m_bReplaceWithLast;
-    void functionExecuted(const OUString &rCommand) override;
-    ToolBoxItemBits getDropDownStyle() const override;
-};
 
 GenericPopupToolbarController::GenericPopupToolbarController(
     const css::uno::Reference< css::uno::XComponentContext >& xContext,
@@ -407,6 +346,8 @@ ToolBoxItemBits 
GenericPopupToolbarController::getDropDownStyle() const
     return m_bSplitButton ? ToolBoxItemBits::DROPDOWN : 
ToolBoxItemBits::DROPDOWNONLY;
 }
 
+namespace {
+
 class SaveToolbarController : public cppu::ImplInheritanceHelper< 
PopupMenuToolbarController,
                                                                   
css::frame::XSubToolbarController,
                                                                   
css::util::XModifyListener >
@@ -448,6 +389,8 @@ private:
     css::uno::Reference< css::util::XModifiable > m_xModifiable;
 };
 
+} // namespace
+
 SaveToolbarController::SaveToolbarController( const css::uno::Reference< 
css::uno::XComponentContext >& rxContext )
     : ImplInheritanceHelper( rxContext, ".uno:SaveAsMenu" )
     , m_bReadOnly( false )
@@ -605,6 +548,8 @@ css::uno::Sequence< OUString > 
SaveToolbarController::getSupportedServiceNames()
     return {u"com.sun.star.frame.ToolbarController"_ustr};
 }
 
+namespace {
+
 class NewToolbarController : public 
cppu::ImplInheritanceHelper<PopupMenuToolbarController, 
css::frame::XSubToolbarController>
 {
 public:
@@ -635,6 +580,8 @@ private:
     sal_uInt16 m_nMenuId;
 };
 
+} // namespace
+
 NewToolbarController::NewToolbarController(
     const css::uno::Reference< css::uno::XComponentContext >& xContext )
     : ImplInheritanceHelper( xContext )
diff --git a/framework/source/uielement/toolbarmanager.cxx 
b/framework/source/uielement/toolbarmanager.cxx
index df67533e32a2..701c31f7f561 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -22,6 +22,7 @@
 #include <cassert>
 
 #include <uielement/toolbarmanager.hxx>
+#include <uielement/popuptoolbarcontroller.hxx>
 
 #include <framework/generictoolbarcontroller.hxx>
 #include <officecfg/Office/Common.hxx>
@@ -1095,8 +1096,7 @@ void ToolBarManager::CreateControllers()
                 }
                 else if ( aCommandURL.startsWith( "private:resource/" ) )
                 {
-                    xController.set( 
m_xContext->getServiceManager()->createInstanceWithContext(
-                        
u"com.sun.star.comp.framework.GenericPopupToolbarController"_ustr, m_xContext 
), UNO_QUERY );
+                    xController.set( new 
framework::GenericPopupToolbarController(m_xContext, {}) );
                 }
                 else if ( m_pToolBar && m_pToolBar->GetItemData( nId ) != 
nullptr )
                 {

Reply via email to