officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu | 2 sd/Library_sd.mk | 2 sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx | 12 + sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx | 5 sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx | 110 --------- sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.cxx | 114 ++++++++++ sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.hxx | 18 - sd/util/sd.component | 4 vcl/jsdialog/enabled.cxx | 1 9 files changed, 146 insertions(+), 122 deletions(-)
New commits: commit 7fa9aa8023212f389d3113e319a6a048b775c67f Author: Shardul Vikram Singh <[email protected]> AuthorDate: Sun Feb 8 20:02:23 2026 +0530 Commit: Szymon Kłos <[email protected]> CommitDate: Mon Mar 9 15:00:52 2026 +0100 Add CurrentMasterPagesSelector to SlideMasterPagesWrapper Change-Id: I7309b88af48f7e4a7c756bbb18c94194ef1bfc79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/199485 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index e8187f2a168e..5eb5a5e50c73 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -1127,7 +1127,7 @@ <value>com.sun.star.presentation.PresentationDocument</value> </prop> <prop oor:name="Controller"> - <value>com.sun.star.comp.sd.SlideMasterPagesAllToolBoxControl</value> + <value>com.sun.star.comp.sd.SlideMasterPagesToolBoxControl</value> </prop> </node> <node oor:name="ThemeColorsPane" oor:op="replace"> diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk index 4c6140046464..29f5857cf0ab 100644 --- a/sd/Library_sd.mk +++ b/sd/Library_sd.mk @@ -370,7 +370,7 @@ $(eval $(call gb_Library_add_exception_objects,sd,\ sd/source/ui/sidebar/RecentlyUsedMasterPages \ sd/source/ui/sidebar/RecentMasterPagesSelector \ sd/source/ui/sidebar/SlideBackground \ - sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl \ + sd/source/ui/sidebar/SlideMasterPagesToolBoxControl \ sd/source/ui/slideshow/PaneHider \ sd/source/ui/slideshow/SlideShowRestarter \ sd/source/ui/slideshow/showwin \ diff --git a/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx b/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx index aa222e81766a..d9e9cbbf2eca 100644 --- a/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx +++ b/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx @@ -72,6 +72,18 @@ CurrentMasterPagesSelector::CurrentMasterPagesSelector( mpEventMultiplexer = rBase.GetEventMultiplexer(); mpEventMultiplexer->AddEventListener(aLink); } +CurrentMasterPagesSelector::CurrentMasterPagesSelector( + weld::Widget* pParent, SdDrawDocument& rDocument, ViewShellBase& rBase, + const std::shared_ptr<MasterPageContainer>& rpContainer) + : MasterPagesSelector(pParent, rDocument, rBase, rpContainer, + u"modules/simpress/ui/masterpagepanel.ui"_ustr, + u"masterpagecurrent_icons"_ustr) +{ + Link<sdtools::EventMultiplexerEvent&, void> aLink( + LINK(this, CurrentMasterPagesSelector, EventMultiplexerListener)); + mpEventMultiplexer = rBase.GetEventMultiplexer(); + mpEventMultiplexer->AddEventListener(aLink); +} CurrentMasterPagesSelector::~CurrentMasterPagesSelector() { diff --git a/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx b/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx index b63208743c2e..eede3cf304c5 100644 --- a/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx +++ b/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx @@ -46,6 +46,11 @@ public: ViewShellBase& rBase, const std::shared_ptr<MasterPageContainer>& rpContainer, const css::uno::Reference<css::ui::XSidebar>& rxSidebar); + CurrentMasterPagesSelector ( + weld::Widget* pParent, + SdDrawDocument& rDocument, + ViewShellBase& rBase, + const std::shared_ptr<MasterPageContainer>& rpContainer); virtual ~CurrentMasterPagesSelector() override; /** Set the selection so that the master page is selected that is diff --git a/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx b/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx deleted file mode 100644 index e802f0b281c6..000000000000 --- a/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.cxx +++ /dev/null @@ -1,110 +0,0 @@ -#include <cppuhelper/supportsservice.hxx> -#include <vcl/svapp.hxx> -#include <toolkit/helper/vclunohelper.hxx> -#include <ViewShellBase.hxx> -#include <sfx2/viewsh.hxx> -#include "MasterPageContainer.hxx" -#include "AllMasterPagesSelector.hxx" -#include "SlideMasterPagesAllToolBoxControl.hxx" - -SlideMasterPagesAllToolBoxControl::SlideMasterPagesAllToolBoxControl() {} - -SlideMasterPagesAllToolBoxControl::~SlideMasterPagesAllToolBoxControl() {} - -void SAL_CALL -SlideMasterPagesAllToolBoxControl::initialize(const css::uno::Sequence<css::uno::Any>& rArguments) -{ - SAL_INFO("sd", "initialize called for SlideMasterPagesAllToolBoxControl"); - - svt::ToolboxController::initialize(rArguments); -} - -void SAL_CALL -SlideMasterPagesAllToolBoxControl::statusChanged(const css::frame::FeatureStateEvent& /*rEvent*/) -{ - // Handle status changes if needed -} - -void SAL_CALL SlideMasterPagesAllToolBoxControl::dispose() -{ - SolarMutexGuard aSolarMutexGuard; - m_xVclBox.disposeAndClear(); - svt::ToolboxController::dispose(); -} - -css::uno::Reference<css::awt::XWindow> SlideMasterPagesAllToolBoxControl::createItemWindow( - const css::uno::Reference<css::awt::XWindow>& rParent) -{ - css::uno::Reference<css::awt::XWindow> xItemWindow; - SAL_INFO("sd", "createItemWindow called for SlideMasterPagesAllToolBoxControl"); - - VclPtr<vcl::Window> pParent = VCLUnoHelper::GetWindow(rParent); - if (pParent) - { - SolarMutexGuard aSolarMutexGuard; - - sd::ViewShellBase* pViewShellBase = nullptr; - if (SfxViewShell* pViewShell = SfxViewShell::Current()) - { - pViewShellBase = dynamic_cast<sd::ViewShellBase*>(pViewShell); - } - - if (pViewShellBase) - { - m_xVclBox = VclPtr<SlideMasterPagesAllWrapper>::Create(pParent, *pViewShellBase); - xItemWindow = VCLUnoHelper::GetInterface(m_xVclBox.get()); - } - } - SAL_INFO("sd", "createItemWindow called for SlideMasterPagesAllToolBoxControl"); - - return xItemWindow; -} - -OUString SAL_CALL SlideMasterPagesAllToolBoxControl::getImplementationName() -{ - return u"com.sun.star.comp.sd.SlideMasterPagesAllToolBoxControl"_ustr; -} - -css::uno::Sequence<OUString> SAL_CALL SlideMasterPagesAllToolBoxControl::getSupportedServiceNames() -{ - return { u"com.sun.star.frame.ToolbarController"_ustr }; -} - -sal_Bool SAL_CALL SlideMasterPagesAllToolBoxControl::supportsService(const OUString& rServiceName) -{ - return cppu::supportsService(this, rServiceName); -} - -extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* -com_sun_star_comp_sd_SlideMasterPagesAllToolBoxControl_get_implementation( - css::uno::XComponentContext* /*rxContext*/, css::uno::Sequence<css::uno::Any> const&) -{ - return cppu::acquire(new SlideMasterPagesAllToolBoxControl()); -} - -SlideMasterPagesAllWrapper::SlideMasterPagesAllWrapper(vcl::Window* pParent, - sd::ViewShellBase& rBase) - : InterimItemWindow(pParent, u"modules/simpress/ui/masterpagepanelall.ui"_ustr, - u"MasterPagePanel"_ustr, true, - reinterpret_cast<sal_uInt64>(SfxViewShell::Current())) -{ - SdDrawDocument* pDocument = rBase.GetDocument(); - if (pDocument == nullptr) - SAL_INFO("sd", "SlideMasterPagesAllWrapper got null SdDrawDocument"); - - m_xPane = std::make_unique<sd::sidebar::AllMasterPagesSelector>( - m_xContainer.get(), *pDocument, rBase, - std::make_shared<sd::sidebar::MasterPageContainer>()); - SetOptimalSize(); - SAL_INFO("sd", "SlideMasterPagesAllWrapper created"); -} - -SlideMasterPagesAllWrapper::~SlideMasterPagesAllWrapper() { disposeOnce(); } -void SlideMasterPagesAllWrapper::SetOptimalSize() { SetSizePixel(GetOptimalSize()); } - -void SlideMasterPagesAllWrapper::dispose() -{ - SAL_INFO("sd", "SlideMasterPagesAllWrapper dispose "); - m_xPane.reset(); - InterimItemWindow::dispose(); -} diff --git a/sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.cxx b/sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.cxx new file mode 100644 index 000000000000..dbc2b70b86e7 --- /dev/null +++ b/sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.cxx @@ -0,0 +1,114 @@ +#include <cppuhelper/supportsservice.hxx> +#include <vcl/svapp.hxx> +#include <toolkit/helper/vclunohelper.hxx> +#include <ViewShellBase.hxx> +#include <sfx2/viewsh.hxx> +#include "CurrentMasterPagesSelector.hxx" +#include "MasterPageContainer.hxx" +#include "AllMasterPagesSelector.hxx" +#include "SlideMasterPagesToolBoxControl.hxx" + +SlideMasterPagesToolBoxControl::SlideMasterPagesToolBoxControl() {} + +SlideMasterPagesToolBoxControl::~SlideMasterPagesToolBoxControl() {} + +void SAL_CALL +SlideMasterPagesToolBoxControl::initialize(const css::uno::Sequence<css::uno::Any>& rArguments) +{ + SAL_INFO("sd", "initialize called for SlideMasterPagesToolBoxControl"); + + svt::ToolboxController::initialize(rArguments); +} + +void SAL_CALL +SlideMasterPagesToolBoxControl::statusChanged(const css::frame::FeatureStateEvent& /*rEvent*/) +{ + // Handle status changes if needed +} + +void SAL_CALL SlideMasterPagesToolBoxControl::dispose() +{ + SolarMutexGuard aSolarMutexGuard; + m_xVclBox.disposeAndClear(); + svt::ToolboxController::dispose(); +} + +css::uno::Reference<css::awt::XWindow> SlideMasterPagesToolBoxControl::createItemWindow( + const css::uno::Reference<css::awt::XWindow>& rParent) +{ + css::uno::Reference<css::awt::XWindow> xItemWindow; + SAL_INFO("sd", "createItemWindow called for SlideMasterPagesToolBoxControl"); + + VclPtr<vcl::Window> pParent = VCLUnoHelper::GetWindow(rParent); + if (pParent) + { + SolarMutexGuard aSolarMutexGuard; + + sd::ViewShellBase* pViewShellBase = nullptr; + if (SfxViewShell* pViewShell = SfxViewShell::Current()) + { + pViewShellBase = dynamic_cast<sd::ViewShellBase*>(pViewShell); + } + + if (pViewShellBase) + { + m_xVclBox = VclPtr<SlideMasterPagesWrapper>::Create(pParent, *pViewShellBase); + xItemWindow = VCLUnoHelper::GetInterface(m_xVclBox.get()); + } + } + SAL_INFO("sd", "createItemWindow called for SlideMasterPagesToolBoxControl"); + + return xItemWindow; +} + +OUString SAL_CALL SlideMasterPagesToolBoxControl::getImplementationName() +{ + return u"com.sun.star.comp.sd.SlideMasterPagesToolBoxControl"_ustr; +} + +css::uno::Sequence<OUString> SAL_CALL SlideMasterPagesToolBoxControl::getSupportedServiceNames() +{ + return { u"com.sun.star.frame.ToolbarController"_ustr }; +} + +sal_Bool SAL_CALL SlideMasterPagesToolBoxControl::supportsService(const OUString& rServiceName) +{ + return cppu::supportsService(this, rServiceName); +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +com_sun_star_comp_sd_SlideMasterPagesToolBoxControl_get_implementation( + css::uno::XComponentContext* /*rxContext*/, css::uno::Sequence<css::uno::Any> const&) +{ + return cppu::acquire(new SlideMasterPagesToolBoxControl()); +} + +SlideMasterPagesWrapper::SlideMasterPagesWrapper(vcl::Window* pParent, sd::ViewShellBase& rBase) + : InterimItemWindow(pParent, u"modules/simpress/ui/masterpagepanelall.ui"_ustr, + u"MasterPagePanel"_ustr, true, + reinterpret_cast<sal_uInt64>(SfxViewShell::Current())) +{ + SdDrawDocument* pDocument = rBase.GetDocument(); + if (pDocument == nullptr) + SAL_INFO("sd", "SlideMasterPagesWrapper got null SdDrawDocument"); + + auto pContainer = std::make_shared<sd::sidebar::MasterPageContainer>(); + + m_xCurrentSelector = std::make_unique<sd::sidebar::CurrentMasterPagesSelector>( + m_xContainer.get(), *pDocument, rBase, pContainer); + m_xAllSelector = std::make_unique<sd::sidebar::AllMasterPagesSelector>( + m_xContainer.get(), *pDocument, rBase, pContainer); + SetOptimalSize(); + SAL_INFO("sd", "SlideMasterPagesWrapper created"); +} + +SlideMasterPagesWrapper::~SlideMasterPagesWrapper() { disposeOnce(); } +void SlideMasterPagesWrapper::SetOptimalSize() { SetSizePixel(GetOptimalSize()); } + +void SlideMasterPagesWrapper::dispose() +{ + SAL_INFO("sd", "SlideMasterPagesWrapper dispose "); + m_xCurrentSelector.reset(); + m_xAllSelector.reset(); + InterimItemWindow::dispose(); +} diff --git a/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.hxx b/sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.hxx similarity index 67% rename from sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.hxx rename to sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.hxx index 7a1580411cef..35f85fce7300 100644 --- a/sd/source/ui/sidebar/SlideMasterPagesAllToolBoxControl.hxx +++ b/sd/source/ui/sidebar/SlideMasterPagesToolBoxControl.hxx @@ -2,30 +2,32 @@ #include <com/sun/star/lang/XServiceInfo.hpp> #include <vcl/vclptr.hxx> #include "AllMasterPagesSelector.hxx" +#include "CurrentMasterPagesSelector.hxx" #include <vcl/InterimItemWindow.hxx> // Used to put transition pane to the notebookbar -class SlideMasterPagesAllWrapper final : public InterimItemWindow +class SlideMasterPagesWrapper final : public InterimItemWindow { private: - std::unique_ptr<sd::sidebar::AllMasterPagesSelector> m_xPane; + std::unique_ptr<sd::sidebar::CurrentMasterPagesSelector> m_xCurrentSelector; + std::unique_ptr<sd::sidebar::AllMasterPagesSelector> m_xAllSelector; public: - SlideMasterPagesAllWrapper(vcl::Window* pParent, sd::ViewShellBase& rBase); - virtual ~SlideMasterPagesAllWrapper() override; + SlideMasterPagesWrapper(vcl::Window* pParent, sd::ViewShellBase& rBase); + virtual ~SlideMasterPagesWrapper() override; virtual void dispose() override; void SetOptimalSize(); }; -class SlideMasterPagesAllToolBoxControl final +class SlideMasterPagesToolBoxControl final : public cppu::ImplInheritanceHelper<svt::ToolboxController, css::lang::XServiceInfo> { - VclPtr<SlideMasterPagesAllWrapper> m_xVclBox; + VclPtr<SlideMasterPagesWrapper> m_xVclBox; public: - SlideMasterPagesAllToolBoxControl(); - virtual ~SlideMasterPagesAllToolBoxControl() override; + SlideMasterPagesToolBoxControl(); + virtual ~SlideMasterPagesToolBoxControl() override; // XStatusListener virtual void SAL_CALL statusChanged(const css::frame::FeatureStateEvent& rEvent) override; diff --git a/sd/util/sd.component b/sd/util/sd.component index 2c7f94763b24..9952dff78cbc 100644 --- a/sd/util/sd.component +++ b/sd/util/sd.component @@ -37,8 +37,8 @@ constructor="org_openoffice_comp_Draw_framework_PanelFactory_get_implementation"> <service name="com.sun.star.drawing.framework.PanelFactory"/> </implementation> - <implementation name="com.sun.star.comp.sd.SlideMasterPagesAllToolBoxControl" - constructor="com_sun_star_comp_sd_SlideMasterPagesAllToolBoxControl_get_implementation"> + <implementation name="com.sun.star.comp.sd.SlideMasterPagesToolBoxControl" + constructor="com_sun_star_comp_sd_SlideMasterPagesToolBoxControl_get_implementation"> <service name="com.sun.star.frame.ToolbarController"/> </implementation> <implementation name="com.sun.star.comp.sd.InsertSlideController" diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index d185c938719f..8b74b380acae 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -527,6 +527,7 @@ constexpr auto NotebookbarList { u"svx/ui/themeselectorpanel.ui" }, // not interim builder, but regular builder: { u"modules/simpress/ui/masterpagepanelall.ui" }, + { u"modules/simpress/ui/masterpagepanel.ui" }, { u"modules/simpress/ui/slidetransitionspanel.ui" } });
