Rebased ref, commits from common ancestor: commit c8755727de8771377c0a3b2434195c354d1f4b8e Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Thu Mar 4 17:22:14 2021 +0000 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Mon May 17 17:36:28 2021 +0200
remove intermediate containers in sidebars tested extension sidebars of: a) Wollmux extension sidebars b) Analog Clock Extension demo https://wiki.openoffice.org/wiki/Sidebar_for_Developers#Example:_Analog_Clock_Extension Change-Id: If9729e20526681928137989f01a8ae733a9b0cb5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112035 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/chart2/source/controller/sidebar/Chart2PanelFactory.cxx b/chart2/source/controller/sidebar/Chart2PanelFactory.cxx index 3ae73588075c..b5bde521d031 100644 --- a/chart2/source/controller/sidebar/Chart2PanelFactory.cxx +++ b/chart2/source/controller/sidebar/Chart2PanelFactory.cxx @@ -20,12 +20,11 @@ #include "Chart2PanelFactory.hxx" #include <sfx2/sidebar/SidebarPanelBase.hxx> -#include <toolkit/helper/vclunohelper.hxx> -#include <vcl/window.hxx> #include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #include <cppuhelper/exc_hlp.hxx> #include <comphelper/namedvaluecollection.hxx> #include <cppuhelper/supportsservice.hxx> +#include <vcl/weldutils.hxx> #include "ChartElementsPanel.hxx" #include "ChartTypePanel.hxx" @@ -62,8 +61,11 @@ Reference<css::ui::XUIElement> SAL_CALL ChartPanelFactory::createUIElement ( Reference<css::awt::XWindow> xParentWindow (aArguments.getOrDefault("ParentWindow", Reference<css::awt::XWindow>())); Reference<css::frame::XController> xController (aArguments.getOrDefault("Controller", Reference<css::frame::XController>())); - VclPtr<vcl::Window> pParentWindow = VCLUnoHelper::GetWindow(xParentWindow); - if ( ! xParentWindow.is() || pParentWindow==nullptr) + weld::Widget* pParent(nullptr); + if (weld::TransportAsXWindow* pTunnel = dynamic_cast<weld::TransportAsXWindow*>(xParentWindow.get())) + pParent = pTunnel->getWidget(); + + if (!pParent) throw RuntimeException( "PanelFactory::createUIElement called without ParentWindow", nullptr); @@ -82,35 +84,27 @@ Reference<css::ui::XUIElement> SAL_CALL ChartPanelFactory::createUIElement ( "ChartPanelFactory::createUIElement called without valid ChartController", nullptr); - VclPtr<vcl::Window> pPanel; + std::unique_ptr<PanelLayout> xPanel; if (rsResourceURL.endsWith("/ElementsPanel")) - pPanel = ChartElementsPanel::Create( pParentWindow, xFrame, pController ); + xPanel = ChartElementsPanel::Create( pParent, pController ); else if (rsResourceURL.endsWith("/TypePanel")) - { - //pPanel = ChartTypePanel::Create( pParentWindow, xFrame, pController ); - VclPtrInstance<ChartTypePanel> ppPanel(pParentWindow, xFrame, pController); - xElement = sfx2::sidebar::SidebarPanelBase::Create( - rsResourceURL, - xFrame, - ppPanel, - css::ui::LayoutSize(-1,-1,-1)); - } + xPanel = std::make_unique<ChartTypePanel>(pParent, pController); else if (rsResourceURL.endsWith("/SeriesPanel")) - pPanel = ChartSeriesPanel::Create(pParentWindow, xFrame, pController); + xPanel = ChartSeriesPanel::Create(pParent, pController); else if (rsResourceURL.endsWith("/AxisPanel")) - pPanel = ChartAxisPanel::Create(pParentWindow, xFrame, pController); + xPanel = ChartAxisPanel::Create(pParent, pController); else if (rsResourceURL.endsWith("/ErrorBarPanel")) - pPanel = ChartErrorBarPanel::Create(pParentWindow, xFrame, pController); + xPanel = ChartErrorBarPanel::Create(pParent, pController); else if (rsResourceURL.endsWith("/AreaPanel")) - pPanel = ChartAreaPanel::Create(pParentWindow, xFrame, pController); + xPanel = ChartAreaPanel::Create(pParent, xFrame, pController); else if (rsResourceURL.endsWith("/LinePanel")) - pPanel = ChartLinePanel::Create(pParentWindow, xFrame, pController); + xPanel = ChartLinePanel::Create(pParent, xFrame, pController); - if (pPanel) + if (xPanel) xElement = sfx2::sidebar::SidebarPanelBase::Create( rsResourceURL, xFrame, - pPanel, + std::move(xPanel), css::ui::LayoutSize(-1,-1,-1)); } catch (const css::uno::RuntimeException &) diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index e1fdc3299e59..36fd21204b62 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -256,8 +256,8 @@ private: } -VclPtr<vcl::Window> ChartAreaPanel::Create( - vcl::Window* pParent, +std::unique_ptr<PanelLayout> ChartAreaPanel::Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController) { @@ -266,11 +266,10 @@ VclPtr<vcl::Window> ChartAreaPanel::Create( if (!rxFrame.is()) throw css::lang::IllegalArgumentException("no XFrame given to ChartAxisPanel::Create", nullptr, 1); - return VclPtr<ChartAreaPanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartAreaPanel>(pParent, rxFrame, pController); } -ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, +ChartAreaPanel::ChartAreaPanel(weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController): svx::sidebar::AreaPropertyPanelBase(pParent, rxFrame), @@ -289,11 +288,6 @@ ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, } ChartAreaPanel::~ChartAreaPanel() -{ - disposeOnce(); -} - -void ChartAreaPanel::dispose() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); @@ -301,8 +295,6 @@ void ChartAreaPanel::dispose() css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); if (xSelectionSupplier.is()) xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); - - AreaPropertyPanelBase::dispose(); } void ChartAreaPanel::Initialize() diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx b/chart2/source/controller/sidebar/ChartAreaPanel.hxx index fb9a80e15342..01fb9077a178 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx @@ -37,14 +37,14 @@ class ChartAreaPanel : public svx::sidebar::AreaPropertyPanelBase, public ChartSidebarSelectionListenerParent { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController); // constructor/destructor ChartAreaPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController); @@ -63,8 +63,6 @@ public: virtual void selectionChanged(bool bCorrectType) override; - virtual void dispose() override; - virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) override; private: diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.cxx b/chart2/source/controller/sidebar/ChartAxisPanel.cxx index c1d9a4e62871..0574878b8cb2 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.cxx @@ -204,10 +204,9 @@ double getAxisRotation(const css::uno::Reference<css::frame::XModel>& xModel, } ChartAxisPanel::ChartAxisPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + weld::Widget* pParent, ChartController* pController) - : PanelLayout(pParent, "ChartAxisPanel", "modules/schart/ui/sidebaraxis.ui", rxFrame) + : PanelLayout(pParent, "ChartAxisPanel", "modules/schart/ui/sidebaraxis.ui") , mxCBShowLabel(m_xBuilder->weld_check_button("checkbutton_show_label")) , mxCBReverse(m_xBuilder->weld_check_button("checkbutton_reverse")) , mxLBLabelPos(m_xBuilder->weld_combo_box("comboboxtext_label_position")) @@ -219,16 +218,9 @@ ChartAxisPanel::ChartAxisPanel( , mbModelValid(true) { Initialize(); - - m_pInitialFocusWidget = mxCBShowLabel.get(); } ChartAxisPanel::~ChartAxisPanel() -{ - disposeOnce(); -} - -void ChartAxisPanel::dispose() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxModifyListener); @@ -244,8 +236,6 @@ void ChartAxisPanel::dispose() mxGridLabel.reset(); mxNFRotation.reset(); - - PanelLayout::dispose(); } void ChartAxisPanel::Initialize() @@ -288,23 +278,18 @@ void ChartAxisPanel::updateData() mxNFRotation->set_value(getAxisRotation(mxModel, aCID), FieldUnit::DEGREE); } -VclPtr<vcl::Window> ChartAxisPanel::Create ( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, +std::unique_ptr<PanelLayout> ChartAxisPanel::Create ( + weld::Widget* pParent, ChartController* pController) { if (pParent == nullptr) throw lang::IllegalArgumentException("no parent Window given to ChartAxisPanel::Create", nullptr, 0); - if ( ! rxFrame.is()) - throw lang::IllegalArgumentException("no XFrame given to ChartAxisPanel::Create", nullptr, 1); - - return VclPtr<ChartAxisPanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartAxisPanel>(pParent, pController); } -void ChartAxisPanel::DataChanged( - const DataChangedEvent& ) +void ChartAxisPanel::DataChanged(const DataChangedEvent& rEvent) { + PanelLayout::DataChanged(rEvent); updateData(); } diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.hxx b/chart2/source/controller/sidebar/ChartAxisPanel.hxx index f44192a26e15..ab7d87fedf77 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.hxx @@ -14,7 +14,6 @@ #include <sfx2/sidebar/IContextChangeReceiver.hxx> #include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <sfx2/sidebar/PanelLayout.hxx> - #include "ChartSidebarModifyListener.hxx" #include "ChartSidebarSelectionListener.hxx" @@ -39,9 +38,8 @@ class ChartAxisPanel : public PanelLayout, public ChartSidebarSelectionListenerParent { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, ChartController* pController); virtual void DataChanged( @@ -61,11 +59,9 @@ public: // constructor/destructor ChartAxisPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + weld::Widget* pParent, ChartController* pController); virtual ~ChartAxisPanel() override; - virtual void dispose() override; virtual void updateData() override; virtual void modelInvalid() override; diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.cxx b/chart2/source/controller/sidebar/ChartElementsPanel.cxx index b14705cc8080..26567f037029 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.cxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.cxx @@ -298,9 +298,8 @@ void setLegendPos(const css::uno::Reference<css::frame::XModel>& xModel, sal_Int } ChartElementsPanel::ChartElementsPanel( - vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, - ChartController* pController) - : PanelLayout(pParent, "ChartElementsPanel", "modules/schart/ui/sidebarelements.ui", rxFrame) + weld::Widget* pParent, ChartController* pController) + : PanelLayout(pParent, "ChartElementsPanel", "modules/schart/ui/sidebarelements.ui") , mxCBTitle(m_xBuilder->weld_check_button("checkbutton_title")) , mxEditTitle(m_xBuilder->weld_entry("edit_title")) , mxCBSubtitle(m_xBuilder->weld_check_button("checkbutton_subtitle")) @@ -336,16 +335,9 @@ ChartElementsPanel::ChartElementsPanel( maTextSubTitle = mxTextSubTitle->get_label(); Initialize(); - - m_pInitialFocusWidget = mxCBTitle.get(); } ChartElementsPanel::~ChartElementsPanel() -{ - disposeOnce(); -} - -void ChartElementsPanel::dispose() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); @@ -378,8 +370,6 @@ void ChartElementsPanel::dispose() mxTextTitle.reset(); mxTextSubTitle.reset(); - - PanelLayout::dispose(); } void ChartElementsPanel::Initialize() @@ -540,22 +530,18 @@ void ChartElementsPanel::updateData() mxLBLegendPosition->set_active(getLegendPos(mxModel)); } -VclPtr<vcl::Window> ChartElementsPanel::Create ( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, +std::unique_ptr<PanelLayout> ChartElementsPanel::Create ( + weld::Widget* pParent, ChartController* pController) { if (pParent == nullptr) throw lang::IllegalArgumentException("no parent Window given to ChartElementsPanel::Create", nullptr, 0); - if ( ! rxFrame.is()) - throw lang::IllegalArgumentException("no XFrame given to ChartElementsPanel::Create", nullptr, 1); - return VclPtr<ChartElementsPanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartElementsPanel>(pParent, pController); } -void ChartElementsPanel::DataChanged( - const DataChangedEvent& ) +void ChartElementsPanel::DataChanged(const DataChangedEvent& rEvent) { + PanelLayout::DataChanged(rEvent); updateData(); } diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.hxx b/chart2/source/controller/sidebar/ChartElementsPanel.hxx index 059e7c4fe122..801b40efdb72 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.hxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.hxx @@ -39,9 +39,8 @@ class ChartElementsPanel : public PanelLayout, public ChartSidebarModifyListenerParent { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, ChartController* pController); virtual void DataChanged( @@ -52,14 +51,11 @@ public: // constructor/destructor ChartElementsPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + weld::Widget* pParent, ChartController* pController); virtual ~ChartElementsPanel() override; - virtual void dispose() override; - virtual void updateData() override; virtual void modelInvalid() override; diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx index b435520c5968..943abdbdd66c 100644 --- a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx +++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx @@ -234,10 +234,8 @@ OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel) } -ChartErrorBarPanel::ChartErrorBarPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController) - : PanelLayout(pParent, "ChartErrorBarPanel", "modules/schart/ui/sidebarerrorbar.ui", rxFrame) +ChartErrorBarPanel::ChartErrorBarPanel(weld::Widget* pParent, ChartController* pController) + : PanelLayout(pParent, "ChartErrorBarPanel", "modules/schart/ui/sidebarerrorbar.ui") , mxRBPosAndNeg(m_xBuilder->weld_radio_button("radiobutton_positive_negative")) , mxRBPos(m_xBuilder->weld_radio_button("radiobutton_positive")) , mxRBNeg(m_xBuilder->weld_radio_button("radiobutton_negative")) @@ -249,16 +247,9 @@ ChartErrorBarPanel::ChartErrorBarPanel( , mbModelValid(true) { Initialize(); - - m_pInitialFocusWidget = mxRBPosAndNeg.get(); } ChartErrorBarPanel::~ChartErrorBarPanel() -{ - disposeOnce(); -} - -void ChartErrorBarPanel::dispose() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); @@ -271,8 +262,6 @@ void ChartErrorBarPanel::dispose() mxMFPos.reset(); mxMFNeg.reset(); - - PanelLayout::dispose(); } void ChartErrorBarPanel::Initialize() @@ -349,23 +338,18 @@ void ChartErrorBarPanel::updateData() } } -VclPtr<vcl::Window> ChartErrorBarPanel::Create ( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, +std::unique_ptr<PanelLayout> ChartErrorBarPanel::Create ( + weld::Widget* pParent, ChartController* pController) { if (pParent == nullptr) throw lang::IllegalArgumentException("no parent Window given to ChartErrorBarPanel::Create", nullptr, 0); - if ( ! rxFrame.is()) - throw lang::IllegalArgumentException("no XFrame given to ChartErrorBarPanel::Create", nullptr, 1); - - return VclPtr<ChartErrorBarPanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartErrorBarPanel>(pParent, pController); } -void ChartErrorBarPanel::DataChanged( - const DataChangedEvent& ) +void ChartErrorBarPanel::DataChanged(const DataChangedEvent& rEvent) { + PanelLayout::DataChanged(rEvent); updateData(); } diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx index 7111ce83717c..0b95a565bf01 100644 --- a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx +++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx @@ -14,7 +14,6 @@ #include <sfx2/sidebar/IContextChangeReceiver.hxx> #include <sfx2/sidebar/SidebarModelUpdate.hxx> #include <sfx2/sidebar/PanelLayout.hxx> - #include "ChartSidebarModifyListener.hxx" namespace com::sun::star::util { class XModifyListener; } @@ -32,9 +31,8 @@ class ChartErrorBarPanel : public PanelLayout, public ChartSidebarModifyListenerParent { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, ChartController* pController); virtual void DataChanged( @@ -54,11 +52,9 @@ public: // constructor/destructor ChartErrorBarPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + weld::Widget* pParent, ChartController* pController); virtual ~ChartErrorBarPanel() override; - virtual void dispose() override; virtual void updateData() override; virtual void modelInvalid() override; diff --git a/chart2/source/controller/sidebar/ChartLinePanel.cxx b/chart2/source/controller/sidebar/ChartLinePanel.cxx index 019b022bd1a3..e9603138a341 100644 --- a/chart2/source/controller/sidebar/ChartLinePanel.cxx +++ b/chart2/source/controller/sidebar/ChartLinePanel.cxx @@ -107,8 +107,8 @@ private: } -VclPtr<vcl::Window> ChartLinePanel::Create( - vcl::Window* pParent, +std::unique_ptr<PanelLayout> ChartLinePanel::Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController) { @@ -117,11 +117,10 @@ VclPtr<vcl::Window> ChartLinePanel::Create( if (!rxFrame.is()) throw css::lang::IllegalArgumentException("no XFrame given to ChartAxisPanel::Create", nullptr, 1); - return VclPtr<ChartLinePanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartLinePanel>(pParent, rxFrame, pController); } -ChartLinePanel::ChartLinePanel(vcl::Window* pParent, +ChartLinePanel::ChartLinePanel(weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController): svx::sidebar::LinePropertyPanelBase(pParent, rxFrame), @@ -143,11 +142,6 @@ ChartLinePanel::ChartLinePanel(vcl::Window* pParent, } ChartLinePanel::~ChartLinePanel() -{ - disposeOnce(); -} - -void ChartLinePanel::dispose() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); @@ -155,8 +149,6 @@ void ChartLinePanel::dispose() css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); if (xSelectionSupplier.is()) xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); - - LinePropertyPanelBase::dispose(); } void ChartLinePanel::Initialize() diff --git a/chart2/source/controller/sidebar/ChartLinePanel.hxx b/chart2/source/controller/sidebar/ChartLinePanel.hxx index ef174a5ee3a9..b46452467fec 100644 --- a/chart2/source/controller/sidebar/ChartLinePanel.hxx +++ b/chart2/source/controller/sidebar/ChartLinePanel.hxx @@ -37,14 +37,14 @@ class ChartLinePanel : public svx::sidebar::LinePropertyPanelBase, public ChartSidebarSelectionListenerParent { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController); // constructor/destructor ChartLinePanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController); @@ -55,8 +55,6 @@ public: virtual void selectionChanged(bool bCorrectType) override; - virtual void dispose() override; - virtual void updateModel(css::uno::Reference<css::frame::XModel> xModel) override; virtual void setLineWidth(const XLineWidthItem& rItem) override; diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx index 727aabbc2458..03e16396daff 100644 --- a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx +++ b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx @@ -277,10 +277,9 @@ OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel) } ChartSeriesPanel::ChartSeriesPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + weld::Widget* pParent, ChartController* pController) - : PanelLayout(pParent, "ChartSeriesPanel", "modules/schart/ui/sidebarseries.ui", rxFrame) + : PanelLayout(pParent, "ChartSeriesPanel", "modules/schart/ui/sidebarseries.ui") , mxCBLabel(m_xBuilder->weld_check_button("checkbutton_label")) , mxCBTrendline(m_xBuilder->weld_check_button("checkbutton_trendline")) , mxCBXError(m_xBuilder->weld_check_button("checkbutton_x_error")) @@ -297,16 +296,9 @@ ChartSeriesPanel::ChartSeriesPanel( , mbModelValid(true) { Initialize(); - - m_pInitialFocusWidget = mxCBLabel.get(); } ChartSeriesPanel::~ChartSeriesPanel() -{ - disposeOnce(); -} - -void ChartSeriesPanel::dispose() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); @@ -327,8 +319,6 @@ void ChartSeriesPanel::dispose() mxFTSeriesName.reset(); mxFTSeriesTemplate.reset(); - - PanelLayout::dispose(); } void ChartSeriesPanel::Initialize() @@ -385,23 +375,19 @@ void ChartSeriesPanel::updateData() mxFTSeriesName->set_label(aFrameLabel); } -VclPtr<vcl::Window> ChartSeriesPanel::Create ( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, +std::unique_ptr<PanelLayout> ChartSeriesPanel::Create ( + weld::Widget* pParent, ChartController* pController) { if (pParent == nullptr) throw lang::IllegalArgumentException("no parent Window given to ChartSeriesPanel::Create", nullptr, 0); - if ( ! rxFrame.is()) - throw lang::IllegalArgumentException("no XFrame given to ChartSeriesPanel::Create", nullptr, 1); - return VclPtr<ChartSeriesPanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartSeriesPanel>(pParent, pController); } -void ChartSeriesPanel::DataChanged( - const DataChangedEvent& ) +void ChartSeriesPanel::DataChanged(const DataChangedEvent& rEvent) { + PanelLayout::DataChanged(rEvent); updateData(); } diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx index 72be7b208b9b..2844051001fe 100644 --- a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx +++ b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx @@ -43,9 +43,8 @@ class ChartSeriesPanel : public PanelLayout, public ChartSidebarSelectionListenerParent { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, ChartController* pController); virtual void DataChanged( @@ -65,11 +64,9 @@ public: // constructor/destructor ChartSeriesPanel( - vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, + weld::Widget* pParent, ChartController* pController); virtual ~ChartSeriesPanel() override; - virtual void dispose() override; virtual void updateData() override; virtual void modelInvalid() override; diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx index a0e38bdb393a..66ffaa97c819 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.cxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx @@ -39,10 +39,8 @@ using namespace css::uno; namespace chart::sidebar { -ChartTypePanel::ChartTypePanel(vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame, - ::chart::ChartController* pController) - : PanelLayout(pParent, "ChartTypePanel", "modules/schart/ui/sidebartype.ui", rxFrame) +ChartTypePanel::ChartTypePanel(weld::Widget* pParent, ::chart::ChartController* pController) + : PanelLayout(pParent, "ChartTypePanel", "modules/schart/ui/sidebartype.ui") , maContext() , mxModel(pController->getModel()) , mxListener(new ChartSidebarModifyListener(this)) @@ -119,13 +117,9 @@ ChartTypePanel::ChartTypePanel(vcl::Window* pParent, m_pSortByXValuesResourceGroup->setChangeListener(this); Initialize(); - - m_pInitialFocusWidget = m_xMainTypeList.get(); } -ChartTypePanel::~ChartTypePanel() { disposeOnce(); } - -void ChartTypePanel::dispose() +ChartTypePanel::~ChartTypePanel() { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); @@ -146,8 +140,6 @@ void ChartTypePanel::dispose() m_xSubTypeListWin.reset(); m_xSubTypeList.reset(); m_xMainTypeList.reset(); - - PanelLayout::dispose(); } IMPL_LINK_NOARG(ChartTypePanel, SelectMainTypeHdl, weld::ComboBox&, void) { selectMainType(); } @@ -251,7 +243,11 @@ void ChartTypePanel::updateData() } } -void ChartTypePanel::DataChanged(const DataChangedEvent&) { updateData(); } +void ChartTypePanel::DataChanged(const DataChangedEvent& rEvent) +{ + PanelLayout::DataChanged(rEvent); + updateData(); +} void ChartTypePanel::HandleContextChange(const vcl::EnumContext& rContext) { diff --git a/chart2/source/controller/sidebar/ChartTypePanel.hxx b/chart2/source/controller/sidebar/ChartTypePanel.hxx index 7c4e27246ca3..6a9036ebaa02 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.hxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.hxx @@ -62,13 +62,10 @@ public: virtual void HandleContextChange(const vcl::EnumContext& rContext) override; // constructor/destructor - ChartTypePanel(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, - ::chart::ChartController* pController); + ChartTypePanel(weld::Widget* pParent, ::chart::ChartController* pController); virtual ~ChartTypePanel() override; - virtual void dispose() override; - virtual void updateData() override; virtual void modelInvalid() override; diff --git a/comphelper/source/misc/configuration.cxx b/comphelper/source/misc/configuration.cxx index a4041de4bb54..b835f4f156e2 100644 --- a/comphelper/source/misc/configuration.cxx +++ b/comphelper/source/misc/configuration.cxx @@ -230,6 +230,7 @@ void comphelper::ConfigurationListener::dispose() listener->dispose(); } maListeners.clear(); + mbDisposed = true; } void SAL_CALL comphelper::ConfigurationListener::disposing(css::lang::EventObject const &) diff --git a/include/comphelper/configurationlistener.hxx b/include/comphelper/configurationlistener.hxx index 29a2b578b588..bc7994a12c3a 100644 --- a/include/comphelper/configurationlistener.hxx +++ b/include/comphelper/configurationlistener.hxx @@ -64,6 +64,7 @@ class COMPHELPER_DLLPUBLIC ConfigurationListener : { css::uno::Reference< css::beans::XPropertySet > mxConfig; std::vector< ConfigurationListenerPropertyBase * > maListeners; + bool mbDisposed; public: /// Public health warning, you -must- dispose this if you use it. ConfigurationListener(const OUString &rPath, @@ -71,6 +72,7 @@ public: const & xContext = comphelper::getProcessComponentContext()) : mxConfig( ConfigurationHelper::openConfig( xContext, rPath, EConfigurationModes::ReadOnly ), css::uno::UNO_QUERY_THROW ) + , mbDisposed(false) { } virtual ~ConfigurationListener() override @@ -93,6 +95,8 @@ public: /// Notify of the property change virtual void SAL_CALL propertyChange( css::beans::PropertyChangeEvent const &rEvt ) override; + + bool isDisposed() const { return mbDisposed; } }; template< typename uno_type > ConfigurationListenerProperty< uno_type >::ConfigurationListenerProperty(const rtl::Reference< ConfigurationListener > &xListener, const OUString &rProp ) diff --git a/include/sfx2/navigat.hxx b/include/sfx2/navigat.hxx index f5fc9acb3fd7..f26321d658c3 100644 --- a/include/sfx2/navigat.hxx +++ b/include/sfx2/navigat.hxx @@ -39,8 +39,6 @@ class SFX2_DLLPUBLIC SfxNavigator : public SfxDockingWindow public: SfxNavigator(SfxBindings* pBindings, SfxChildWindow* pChildWin, vcl::Window* pParent); - - virtual void Resize() override; }; #endif diff --git a/include/sfx2/sidebar/Panel.hxx b/include/sfx2/sidebar/Panel.hxx index b41d0acc7f03..9835ccd8207a 100644 --- a/include/sfx2/sidebar/Panel.hxx +++ b/include/sfx2/sidebar/Panel.hxx @@ -89,6 +89,7 @@ public: private: const OUString msPanelId; const bool mbIsTitleBarOptional; + const bool mbWantsAWT; css::uno::Reference<css::ui::XUIElement> mxElement; css::uno::Reference<css::ui::XSidebarPanel> mxPanelComponent; bool mbIsExpanded; @@ -98,7 +99,7 @@ private: const css::uno::Reference<css::frame::XFrame>& mxFrame; std::unique_ptr<PanelTitleBar> mxTitleBar; std::unique_ptr<weld::Container> mxContents; - css::uno::Reference<css::awt::XWindow> mxAwtXWindow; + css::uno::Reference<css::awt::XWindow> mxXWindow; }; typedef std::vector<VclPtr<Panel>> SharedPanelContainer; diff --git a/include/sfx2/sidebar/PanelLayout.hxx b/include/sfx2/sidebar/PanelLayout.hxx index 0e9e56875ff1..b03ebf97bb22 100644 --- a/include/sfx2/sidebar/PanelLayout.hxx +++ b/include/sfx2/sidebar/PanelLayout.hxx @@ -10,41 +10,43 @@ #pragma once #include <sfx2/dllapi.h> - -#include <vcl/ctrl.hxx> -#include <vcl/timer.hxx> -#include <vcl/idle.hxx> #include <vcl/weld.hxx> -#include <com/sun/star/frame/XFrame.hpp> +class DataChangedEvent; +class VclSimpleEvent; +namespace sfx2 { namespace sidebar { class Panel; } } +namespace tools { class JsonWriter; } /// This class is the base for the Widget Layout-based sidebar panels. -class SFX2_DLLPUBLIC PanelLayout : public Control +class SFX2_DLLPUBLIC PanelLayout { protected: + VclPtr<sfx2::sidebar::Panel> m_xPanel; std::unique_ptr<weld::Builder> m_xBuilder; - VclPtr<vcl::Window> m_xVclContentArea; std::unique_ptr<weld::Container> m_xContainer; - weld::Widget* m_pInitialFocusWidget; -private: - Idle m_aPanelLayoutIdle; - bool m_bInClose; - css::uno::Reference<css::frame::XFrame> mxFrame; + virtual void DataChanged(const DataChangedEvent& rEvent); + virtual void DumpAsPropertyTree(tools::JsonWriter&); - DECL_DLLPRIVATE_LINK(ImplHandlePanelLayoutTimerHdl, Timer*, void); + virtual weld::Window* GetFrameWeld() const; + +private: + DECL_LINK(DataChangedEventListener, VclSimpleEvent&, void); + DECL_LINK(DumpAsPropertyTreeHdl, tools::JsonWriter&, void); public: - PanelLayout(vcl::Window* pParent, const OString& rID, const OUString& rUIXMLDescription, - const css::uno::Reference<css::frame::XFrame> &rFrame); - virtual ~PanelLayout() override; - virtual void dispose() override; - - virtual Size GetOptimalSize() const override; - virtual void GetFocus() override; - virtual void setPosSizePixel(tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, PosSizeFlags nFlags = PosSizeFlags::All) override; - virtual void queue_resize(StateChangedType eReason = StateChangedType::Layout) override; - virtual bool EventNotify(NotifyEvent& rNEvt) override; + PanelLayout(weld::Widget* pParent, const OString& rID, const OUString& rUIXMLDescription); + + void SetPanel(sfx2::sidebar::Panel* pPanel); + + virtual ~PanelLayout(); + + Size get_preferred_size() const + { + return m_xContainer->get_preferred_size(); + } + + void queue_resize(); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/sfx2/sidebar/SidebarPanelBase.hxx b/include/sfx2/sidebar/SidebarPanelBase.hxx index 015406771c4f..971e286ca74f 100644 --- a/include/sfx2/sidebar/SidebarPanelBase.hxx +++ b/include/sfx2/sidebar/SidebarPanelBase.hxx @@ -29,13 +29,12 @@ #include <com/sun/star/ui/XSidebarPanel.hpp> #include <com/sun/star/ui/XUpdateModel.hpp> -#include <vcl/vclptr.hxx> - - -namespace vcl { class Window; } +class PanelLayout; namespace sfx2::sidebar { +class Panel; + typedef cppu::WeakComponentImplHelper<css::ui::XContextChangeEventListener, css::ui::XUIElement, css::ui::XToolPanel, @@ -52,7 +51,7 @@ class SFX2_DLLPUBLIC SidebarPanelBase final : private ::cppu::BaseMutex, public: static css::uno::Reference<css::ui::XUIElement> Create(const OUString& rsResourceURL, const css::uno::Reference<css::frame::XFrame>& rxFrame, - vcl::Window* pControl, + std::unique_ptr<PanelLayout> xControl, const css::ui::LayoutSize& rLayoutSize); // XContextChangeEventListener @@ -79,9 +78,11 @@ public: // XUpdateModel virtual void SAL_CALL updateModel(const css::uno::Reference<css::frame::XModel>& xModel) override; + void SetParentPanel(sfx2::sidebar::Panel* pPanel); + private: SidebarPanelBase(const OUString& rsResourceURL, const css::uno::Reference<css::frame::XFrame>& rxFrame, - vcl::Window* pWindow, const css::ui::LayoutSize& rLayoutSize); + std::unique_ptr<PanelLayout> xControl, const css::ui::LayoutSize& rLayoutSize); virtual ~SidebarPanelBase() override; SidebarPanelBase(const SidebarPanelBase&) = delete; SidebarPanelBase& operator=( const SidebarPanelBase& ) = delete; @@ -89,7 +90,7 @@ private: virtual void SAL_CALL disposing() override; css::uno::Reference<css::frame::XFrame> mxFrame; - VclPtr<vcl::Window> mpControl; + std::unique_ptr<PanelLayout> mxControl; const OUString msResourceURL; const css::ui::LayoutSize maLayoutSize; }; diff --git a/include/sfx2/templdlg.hxx b/include/sfx2/templdlg.hxx index 81febcf7f01f..5dd5b8b6b178 100644 --- a/include/sfx2/templdlg.hxx +++ b/include/sfx2/templdlg.hxx @@ -31,9 +31,8 @@ class SfxTemplateDialog_Impl; class UNLESS_MERGELIBS(SFX2_DLLPUBLIC) SfxTemplatePanelControl final : public PanelLayout { public: - SfxTemplatePanelControl(SfxBindings* pBindings, vcl::Window* pParentWindow); + SfxTemplatePanelControl(SfxBindings* pBindings, weld::Widget* pParent); virtual ~SfxTemplatePanelControl() override; - virtual void dispose() override; weld::Builder* get_builder() { return m_xBuilder.get(); } weld::Container* get_container() { return m_xContainer.get(); } diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx index a3103b6c04c2..434a6397d4e2 100644 --- a/include/svx/sidebar/AreaPropertyPanelBase.hxx +++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx @@ -51,11 +51,6 @@ class SVX_DLLPUBLIC AreaPropertyPanelBase { public: - virtual void dispose() override; - - virtual void DataChanged( - const DataChangedEvent& rEvent) override; - virtual void NotifyItemUpdate( const sal_uInt16 nSId, const SfxItemState eState, @@ -78,7 +73,7 @@ public: // constructor/destructor AreaPropertyPanelBase( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame); virtual ~AreaPropertyPanelBase() override; @@ -148,8 +143,6 @@ protected: OUString maImgSquare; OUString maImgLinear; - VclPtr<sfx2::sidebar::Panel> mpPanel; - std::unique_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem; std::unique_ptr< SfxUInt16Item > mpTransparanceItem; diff --git a/include/svx/sidebar/InspectorTextPanel.hxx b/include/svx/sidebar/InspectorTextPanel.hxx index 10ddf932fe06..ce4eecf8ad64 100644 --- a/include/svx/sidebar/InspectorTextPanel.hxx +++ b/include/svx/sidebar/InspectorTextPanel.hxx @@ -45,13 +45,10 @@ class SVX_DLLPUBLIC InspectorTextPanel : public PanelLayout { public: virtual ~InspectorTextPanel() override; - virtual void dispose() override; - static VclPtr<vcl::Window> Create(vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame); + static std::unique_ptr<PanelLayout> Create(weld::Widget* pParent); - InspectorTextPanel(vcl::Window* pParent, - const css::uno::Reference<css::frame::XFrame>& rxFrame); + InspectorTextPanel(weld::Widget* pParent); void updateEntries(const std::vector<TreeNode>& rStore); diff --git a/include/svx/sidebar/LinePropertyPanelBase.hxx b/include/svx/sidebar/LinePropertyPanelBase.hxx index 52411be57d2c..34668f486061 100644 --- a/include/svx/sidebar/LinePropertyPanelBase.hxx +++ b/include/svx/sidebar/LinePropertyPanelBase.hxx @@ -25,6 +25,7 @@ #include <sfx2/sidebar/PanelLayout.hxx> #include <svx/sidebar/LineWidthPopup.hxx> #include <svx/svxdllapi.h> +#include <com/sun/star/frame/XFrame.hpp> class ToolbarUnoDispatcher; class XLineStyleItem; @@ -46,7 +47,6 @@ class SVX_DLLPUBLIC LinePropertyPanelBase : public PanelLayout { public: virtual ~LinePropertyPanelBase() override; - virtual void dispose() override; void SetWidth(tools::Long nWidth); void SetWidthIcon(int n); @@ -55,7 +55,7 @@ public: void EndLineWidthPopup(); // constructor/destructor - LinePropertyPanelBase(vcl::Window* pParent, + LinePropertyPanelBase(weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame); virtual void setLineWidth(const XLineWidthItem& rItem) = 0; diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu index a9874f256608..f95ea703a464 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu @@ -348,6 +348,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="TextPropertyPanel" oor:op="replace"> @@ -393,6 +396,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>120</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="InspectorTextPanel" oor:op="replace"> @@ -419,6 +425,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="MediaPlaybackPanel" oor:op="replace"> @@ -442,6 +451,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="PageStylesPanel" oor:op="replace"> @@ -468,6 +480,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>200</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="PageFormatPanel" oor:op="replace"> @@ -494,6 +509,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="PageHeaderPanel" oor:op="replace"> @@ -520,6 +538,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>400</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="PageFooterPanel" oor:op="replace"> @@ -546,6 +567,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>500</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="AreaPropertyPanel" oor:op="replace"> @@ -585,6 +609,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="EffectPropertyPanel" oor:op="replace"> @@ -611,6 +638,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ShadowPropertyPanel" oor:op="replace"> @@ -645,6 +675,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="LinePropertyPanel" oor:op="replace"> @@ -684,6 +717,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>400</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="GalleryPanel" oor:op="replace"> @@ -710,6 +746,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="PosSizePropertyPanel" oor:op="replace"> @@ -760,6 +799,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>500</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="FontworkPropertyPanel" oor:op="replace"> @@ -810,6 +852,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="DefaultShapesPanel" oor:op="replace"> @@ -833,6 +878,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SlideBackgroundPanel" oor:op="replace"> @@ -864,7 +912,11 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> + <node oor:name="SdLayoutsPanel" oor:op="replace"> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Layouts</value> @@ -893,7 +945,11 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>200</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> + <node oor:name="SdUsedMasterPagesPanel" oor:op="replace"> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Used in This Presentation</value> @@ -918,6 +974,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SdRecentMasterPagesPanel" oor:op="replace"> @@ -944,6 +1003,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>200</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SdAllMasterPagesPanel" oor:op="replace"> @@ -970,6 +1032,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SdCustomAnimationPanel" oor:op="replace"> @@ -996,6 +1061,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SdSlideTransitionPanel" oor:op="replace"> @@ -1022,6 +1090,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SdTableDesignPanel" oor:op="replace"> @@ -1048,6 +1119,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="EmptyPanel" oor:op="replace"> @@ -1074,6 +1148,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ScAlignmentPropertyPanel" oor:op="replace"> @@ -1104,6 +1181,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>200</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ScCellAppearancePropertyPanel" oor:op="replace"> @@ -1134,6 +1214,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ScNumberFormatPropertyPanel" oor:op="replace"> @@ -1164,6 +1247,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>150</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ParaPropertyPanel" oor:op="replace"> @@ -1204,6 +1290,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>200</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ListsPropertyPanel" oor:op="replace"> @@ -1232,6 +1321,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>120</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SwWrapPropertyPanel" oor:op="replace"> @@ -1264,6 +1356,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>500</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SwNavigatorPanel" oor:op="replace"> @@ -1293,6 +1388,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ScNavigatorPanel" oor:op="replace"> @@ -1322,6 +1420,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SdNavigatorPanel" oor:op="replace"> @@ -1351,6 +1452,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SwManageChangesPanel" oor:op="replace"> @@ -1380,6 +1484,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="StyleListPanel" oor:op="replace"> @@ -1406,6 +1513,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ScFunctionsPanel" oor:op="replace"> @@ -1432,7 +1542,11 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>100</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> + <node oor:name="SwStylePresetsPanel" oor:op="replace"> <prop oor:name="Title" oor:type="xs:string"> <value xml:lang="en-US">Style Presets</value> @@ -1457,6 +1571,9 @@ <prop oor:name="IsExperimental" oor:type="xs:boolean"> <value>true</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="SwThemePanel" oor:op="replace"> @@ -1483,6 +1600,9 @@ <prop oor:name="IsExperimental" oor:type="xs:boolean"> <value>true</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartElementsPanel" oor:op="replace"> @@ -1506,6 +1626,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>1</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartSeriesPanel" oor:op="replace"> @@ -1532,6 +1655,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>2</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartTrendlinePanel" oor:op="replace"> @@ -1581,6 +1707,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>4</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartAxisPanel" oor:op="replace"> @@ -1607,6 +1736,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>5</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartAreaPanel" oor:op="replace"> @@ -1634,6 +1766,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>6</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartLinePanel" oor:op="replace"> @@ -1665,6 +1800,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>7</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="TableEditPanel" oor:op="replace"> @@ -1694,6 +1832,9 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>300</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> <node oor:name="ChartTypePanel" oor:op="replace"> @@ -1717,7 +1858,11 @@ <prop oor:name="OrderIndex" oor:type="xs:int"> <value>0</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <value>false</value> + </prop> </node> + </node> </node> </oor:component-data> diff --git a/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs b/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs index 6ed1d79d80cf..9fbb0fbbcbee 100644 --- a/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs @@ -228,6 +228,14 @@ </info> <value>false</value> </prop> + <prop oor:name="WantsAWT" oor:type="xs:boolean"> + <info> + <desc>This flag controls whether the panel requires a awt::XWindow parent. This option cannot be false if WantsCanvas + is also true. The default of true is suitable for third party sidebar panels, false is only useful for built-in + internal panels.</desc> + </info> + <value>true</value> + </prop> </group> </templates> <component> diff --git a/sc/qa/uitest/calc_tests8/navigator.py b/sc/qa/uitest/calc_tests8/navigator.py index 32a1bd3da4c0..d679211eb7de 100644 --- a/sc/qa/uitest/calc_tests8/navigator.py +++ b/sc/qa/uitest/calc_tests8/navigator.py @@ -23,7 +23,7 @@ class navigator(UITestCase): xGridWin.executeAction("SIDEBAR", mkPropertyValues({"PANEL": "ScNavigatorPanel"})) xCalcDoc = self.xUITest.getTopFocusWindow() - xNavigatorPanel = xCalcDoc.getChild("NavigatorPanelParent") + xNavigatorPanel = xCalcDoc.getChild("NavigatorPanel") xContentBox = xNavigatorPanel.getChild('contentbox') xSheets = xContentBox.getChild("0") self.assertEqual(get_state_as_dict(xSheets)['Text'], 'Sheets') @@ -50,7 +50,7 @@ class navigator(UITestCase): self.ui_test.close_dialog_through_button(xOKBtn) xCalcDoc = self.xUITest.getTopFocusWindow() - xNavigatorPanel = xCalcDoc.getChild("NavigatorPanelParent") + xNavigatorPanel = xCalcDoc.getChild("NavigatorPanel") xContentBox = xNavigatorPanel.getChild('contentbox') xSheets = xContentBox.getChild("0") self.assertEqual(get_state_as_dict(xSheets)['Text'], 'Sheets') @@ -66,7 +66,7 @@ class navigator(UITestCase): self.xUITest.executeCommand(".uno:Undo") xCalcDoc = self.xUITest.getTopFocusWindow() - xNavigatorPanel = xCalcDoc.getChild("NavigatorPanelParent") + xNavigatorPanel = xCalcDoc.getChild("NavigatorPanel") xContentBox = xNavigatorPanel.getChild('contentbox') xSheets = xContentBox.getChild("0") self.assertEqual(get_state_as_dict(xSheets)['Text'], 'Sheets') @@ -95,7 +95,7 @@ class navigator(UITestCase): xGridWin.executeAction("SIDEBAR", mkPropertyValues({"PANEL": "ScNavigatorPanel"})) xCalcDoc = self.xUITest.getTopFocusWindow() - xNavigatorPanel = xCalcDoc.getChild("NavigatorPanelParent") + xNavigatorPanel = xCalcDoc.getChild("NavigatorPanel") xToolBar = xNavigatorPanel.getChild("toolbox2") xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "0"})) # 'toggle' button @@ -129,7 +129,7 @@ class navigator(UITestCase): xGridWin.executeAction("SIDEBAR", mkPropertyValues({"PANEL": "ScNavigatorPanel"})) xCalcDoc = self.xUITest.getTopFocusWindow() - xNavigatorPanel = xCalcDoc.getChild("NavigatorPanelParent") + xNavigatorPanel = xCalcDoc.getChild("NavigatorPanel") xToolBar = xNavigatorPanel.getChild("toolbox2") xToolBar.executeAction("CLICK", mkPropertyValues({"POS": "0"})) # 'toggle' button diff --git a/sc/source/ui/formdlg/dwfunctr.cxx b/sc/source/ui/formdlg/dwfunctr.cxx index e5adb6859be2..68aacb9275ba 100644 --- a/sc/source/ui/formdlg/dwfunctr.cxx +++ b/sc/source/ui/formdlg/dwfunctr.cxx @@ -44,8 +44,8 @@ #* #************************************************************************/ -ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame> &rFrame) - : PanelLayout(pParent, "FunctionPanel", "modules/scalc/ui/functionpanel.ui", rFrame) +ScFunctionWin::ScFunctionWin(weld::Widget* pParent) + : PanelLayout(pParent, "FunctionPanel", "modules/scalc/ui/functionpanel.ui") , xCatBox(m_xBuilder->weld_combo_box("category")) , xFuncList(m_xBuilder->weld_tree_view("funclist")) , xInsertButton(m_xBuilder->weld_button("insert")) @@ -70,8 +70,6 @@ ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css xCatBox->set_active(0); SelComboHdl(*xCatBox); - - m_pInitialFocusWidget = xCatBox.get(); } /************************************************************************* @@ -90,22 +88,14 @@ ScFunctionWin::ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css ScFunctionWin::~ScFunctionWin() { - disposeOnce(); -} + xConfigChange.reset(); + xConfigListener->dispose(); + xConfigListener.clear(); -void ScFunctionWin::dispose() -{ - if (xConfigChange) - { - xConfigChange.reset(); - xConfigListener->dispose(); - xConfigListener.clear(); - } xCatBox.reset(); xFuncList.reset(); xInsertButton.reset(); xFiFuncDesc.reset(); - PanelLayout::dispose(); } /************************************************************************* @@ -277,9 +267,10 @@ void ScFunctionWin::DoEnter() ScInputHandler* pHdl = pScMod->GetInputHdl( pViewSh ); if(!pScMod->IsEditMode()) { + rtl::Reference<comphelper::ConfigurationListener> xDetectDisposed(xConfigListener); pScMod->SetInputMode(SC_INPUT_TABLE); // the above call can result in us being disposed - if (OutputDevice::isDisposed()) + if (xDetectDisposed->isDisposed()) return; aString = "=" + xFuncList->get_selected_text(); if (pHdl) @@ -412,8 +403,8 @@ IMPL_LINK_NOARG( ScFunctionWin, SetRowActivatedHdl, weld::TreeView&, bool ) void EnglishFunctionNameChange::setProperty(const css::uno::Any &rProperty) { ConfigurationListenerProperty::setProperty(rProperty); - m_xFunctionWin->InitLRUList(); - m_xFunctionWin->UpdateFunctionList(); + m_pFunctionWin->InitLRUList(); + m_pFunctionWin->UpdateFunctionList(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/inc/content.hxx b/sc/source/ui/inc/content.hxx index 78ae31ae0c5a..cd5a91b911a6 100644 --- a/sc/source/ui/inc/content.hxx +++ b/sc/source/ui/inc/content.hxx @@ -45,7 +45,7 @@ class ScContentTree std::unique_ptr<weld::TreeView> m_xTreeView; std::unique_ptr<weld::TreeIter> m_xScratchIter; rtl::Reference<ScLinkTransferObj> m_xTransferObj; - VclPtr<ScNavigatorDlg> pParentWindow; + ScNavigatorDlg* pParentWindow; o3tl::enumarray<ScContentId, std::unique_ptr<weld::TreeIter>> m_aRootNodes; ScContentId nRootType; // set as Root OUString aManualDoc; // Switched in Navigator (Title) diff --git a/sc/source/ui/inc/dwfunctr.hxx b/sc/source/ui/inc/dwfunctr.hxx index e9dc66132fa0..742d15c30a5d 100644 --- a/sc/source/ui/inc/dwfunctr.hxx +++ b/sc/source/ui/inc/dwfunctr.hxx @@ -29,13 +29,13 @@ class ScFunctionWin; class EnglishFunctionNameChange : public comphelper::ConfigurationListenerProperty<bool> { - VclPtr<ScFunctionWin> m_xFunctionWin; + ScFunctionWin* m_pFunctionWin; protected: virtual void setProperty(const css::uno::Any &rProperty) override; public: EnglishFunctionNameChange(const rtl::Reference<comphelper::ConfigurationListener> &rListener, ScFunctionWin* pFunctionWin) : ConfigurationListenerProperty(rListener, "EnglishFunctionName") - , m_xFunctionWin(pFunctionWin) + , m_pFunctionWin(pFunctionWin) { } }; @@ -66,10 +66,9 @@ private: DECL_LINK( SelTreeHdl, weld::TreeView&, void ); public: - ScFunctionWin(vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame> &rFrame); + ScFunctionWin(weld::Widget* pParent); virtual ~ScFunctionWin() override; - virtual void dispose() override; void InitLRUList(); void UpdateFunctionList(); diff --git a/sc/source/ui/inc/navipi.hxx b/sc/source/ui/inc/navipi.hxx index 9db870bb1bd5..aba163f153c8 100644 --- a/sc/source/ui/inc/navipi.hxx +++ b/sc/source/ui/inc/navipi.hxx @@ -105,6 +105,8 @@ private: std::unique_ptr<weld::ComboBox> m_xLbDocuments; std::unique_ptr<weld::Menu> m_xDragModeMenu; + VclPtr<SfxNavigator> m_xNavigatorDlg; + Size aExpandedSize; Idle aContentIdle; @@ -169,16 +171,17 @@ private: void StartOfDataArea (); void EndOfDataArea (); + void UpdateInitShow(); + static void ReleaseFocus(); public: - ScNavigatorDlg(SfxBindings* pB, vcl::Window* pParent); + ScNavigatorDlg(SfxBindings* pB, weld::Widget* pParent, SfxNavigator* pNavigatorDlg); + virtual weld::Window* GetFrameWeld() const override; virtual ~ScNavigatorDlg() override; - virtual void dispose() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; - virtual void StateChanged(StateChangedType nStateChange) override; }; class ScNavigatorWrapper final : public SfxNavigatorWrapper diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index 44cc140b34ca..9c3ab3772c8a 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -161,7 +161,6 @@ ScContentTree::~ScContentTree() Application::RemoveUserEvent(m_nAsyncMouseReleaseId); m_nAsyncMouseReleaseId = nullptr; } - pParentWindow.clear(); } static const char* SCSTR_CONTENT_ARY[] = diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx index 117798383754..8854672c6fe2 100644 --- a/sc/source/ui/navipi/navipi.cxx +++ b/sc/source/ui/navipi/navipi.cxx @@ -312,12 +312,13 @@ ScNavigatorSettings::ScNavigatorSettings() class ScNavigatorWin : public SfxNavigator { private: - VclPtr<ScNavigatorDlg> pNavigator; + std::unique_ptr<ScNavigatorDlg> m_xNavigator; public: ScNavigatorWin(SfxBindings* _pBindings, SfxChildWindow* pMgr, vcl::Window* pParent); + virtual void StateChanged(StateChangedType nStateChange) override; virtual void dispose() override { - pNavigator.disposeAndClear(); + m_xNavigator.reset(); SfxNavigator::dispose(); } virtual ~ScNavigatorWin() override @@ -329,13 +330,12 @@ public: ScNavigatorWin::ScNavigatorWin(SfxBindings* _pBindings, SfxChildWindow* _pMgr, vcl::Window* _pParent) : SfxNavigator(_pBindings, _pMgr, _pParent) { - pNavigator = VclPtr<ScNavigatorDlg>::Create(_pBindings, this); - pNavigator->Show(); - SetMinOutputSizePixel(pNavigator->GetOptimalSize()); + m_xNavigator = std::make_unique<ScNavigatorDlg>(_pBindings, m_xContainer.get(), this); + SetMinOutputSizePixel(GetOptimalSize()); } -ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, vcl::Window* pParent) - : PanelLayout(pParent, "NavigatorPanel", "modules/scalc/ui/navigatorpanel.ui", nullptr) +ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, weld::Widget* pParent, SfxNavigator* pNavigatorDlg) + : PanelLayout(pParent, "NavigatorPanel", "modules/scalc/ui/navigatorpanel.ui") , rBindings(*pB) , m_xEdCol(m_xBuilder->weld_spin_button("column")) , m_xEdRow(m_xBuilder->weld_spin_button("row")) @@ -347,6 +347,7 @@ ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, vcl::Window* pParent) ScResId(SCSTR_QHLP_SCEN_LISTBOX), ScResId(SCSTR_QHLP_SCEN_COMMENT))) , m_xLbDocuments(m_xBuilder->weld_combo_box("documents")) , m_xDragModeMenu(m_xBuilder->weld_menu("dragmodemenu")) + , m_xNavigatorDlg(pNavigatorDlg) , aStrActiveWin(ScResId(SCSTR_ACTIVEWIN)) , pViewData(nullptr ) , eListMode(NAV_LMODE_NONE) @@ -355,7 +356,7 @@ ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, vcl::Window* pParent) , nCurRow(0) , nCurTab(0) { - set_id("NavigatorPanelParent"); // for uitests + UpdateInitShow(); UpdateSheetLimits(); m_xEdRow->set_width_chars(5); @@ -422,10 +423,13 @@ ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, vcl::Window* pParent) else eNavMode = NAV_LMODE_AREAS; SetListMode(eNavMode); +} - aExpandedSize = GetOptimalSize(); - - m_pInitialFocusWidget = m_xEdCol.get(); +weld::Window* ScNavigatorDlg::GetFrameWeld() const +{ + if (m_xNavigatorDlg) + return m_xNavigatorDlg->GetFrameWeld(); + return PanelLayout::GetFrameWeld(); } void ScNavigatorDlg::UpdateSheetLimits() @@ -439,24 +443,22 @@ void ScNavigatorDlg::UpdateSheetLimits() } } -void ScNavigatorDlg::StateChanged(StateChangedType nStateChange) +void ScNavigatorDlg::UpdateInitShow() { - PanelLayout::StateChanged(nStateChange); - if (nStateChange == StateChangedType::InitShow) - { - // When the navigator is displayed in the sidebar, or is otherwise - // docked, it has the whole deck to fill. Therefore hide the button that - // hides all controls below the top two rows of buttons. - m_xTbxCmd1->set_item_visible("contents", ParentIsFloatingWindow(GetParent())); - } + // When the navigator is displayed in the sidebar, or is otherwise + // docked, it has the whole deck to fill. Therefore hide the button that + // hides all controls below the top two rows of buttons. + m_xTbxCmd1->set_item_visible("contents", ParentIsFloatingWindow(m_xNavigatorDlg)); } -ScNavigatorDlg::~ScNavigatorDlg() +void ScNavigatorWin::StateChanged(StateChangedType nStateChange) { - disposeOnce(); + SfxNavigator::StateChanged(nStateChange); + if (nStateChange == StateChangedType::InitShow) + m_xNavigator->UpdateInitShow(); } -void ScNavigatorDlg::dispose() +ScNavigatorDlg::~ScNavigatorDlg() { aContentIdle.Stop(); @@ -476,7 +478,6 @@ void ScNavigatorDlg::dispose() m_xWndScenarios.reset(); m_xScenarioBox.reset(); m_xLbDocuments.reset(); - PanelLayout::dispose(); } void ScNavigatorDlg::Notify( SfxBroadcaster&, const SfxHint& rHint ) @@ -770,11 +771,11 @@ void ScNavigatorDlg::SetListMode(NavListMode eMode) { if (eMode != eListMode) { - bool bForceParentResize = ParentIsFloatingWindow(GetParent()) && + bool bForceParentResize = ParentIsFloatingWindow(m_xNavigatorDlg) && (eMode == NAV_LMODE_NONE || eListMode == NAV_LMODE_NONE); - SfxNavigator* pNav = bForceParentResize ? dynamic_cast<SfxNavigator*>(GetParent()) : nullptr; + SfxNavigator* pNav = bForceParentResize ? m_xNavigatorDlg.get() : nullptr; if (pNav && eMode == NAV_LMODE_NONE) //save last normal size on minimizing - aExpandedSize = GetSizePixel(); + aExpandedSize = pNav->GetSizePixel(); eListMode = eMode; @@ -802,7 +803,8 @@ void ScNavigatorDlg::SetListMode(NavListMode eMode) if (pNav) { - Size aOptimalSize(GetOptimalSize()); + pNav->InvalidateChildSizeCache(); + Size aOptimalSize(pNav->GetOptimalSize()); Size aNewSize(pNav->GetOutputSizePixel()); aNewSize.setHeight( eMode == NAV_LMODE_NONE ? aOptimalSize.Height() : aExpandedSize.Height() ); pNav->SetMinOutputSizePixel(aOptimalSize); diff --git a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx index c5714959b958..b8c4176b4eb0 100644 --- a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx +++ b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx @@ -42,10 +42,10 @@ using namespace css::uno; namespace sc::sidebar { AlignmentPropertyPanel::AlignmentPropertyPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings) - : PanelLayout(pParent, "AlignmentPropertyPanel", "modules/scalc/ui/sidebaralignment.ui", rxFrame) + : PanelLayout(pParent, "AlignmentPropertyPanel", "modules/scalc/ui/sidebaralignment.ui") , mxFTLeftIndent(m_xBuilder->weld_label("leftindentlabel")) , mxMFLeftIndent(m_xBuilder->weld_metric_spin_button("leftindent", FieldUnit::POINT)) , mxCBXWrapText(m_xBuilder->weld_check_button("wraptext")) @@ -78,15 +78,9 @@ AlignmentPropertyPanel::AlignmentPropertyPanel( , mpBindings(pBindings) { Initialize(); - m_pInitialFocusWidget = &mxMFLeftIndent->get_widget(); } AlignmentPropertyPanel::~AlignmentPropertyPanel() -{ - disposeOnce(); -} - -void AlignmentPropertyPanel::dispose() { mxIndentButtonsDispatch.reset(); mxIndentButtons.reset(); @@ -116,8 +110,6 @@ void AlignmentPropertyPanel::dispose() maAngleControl.dispose(); maVrtStackControl.dispose(); maRefEdgeControl.dispose(); - - PanelLayout::dispose(); } void AlignmentPropertyPanel::Initialize() @@ -204,8 +196,8 @@ IMPL_LINK_NOARG(AlignmentPropertyPanel, CBOXWrapTextClkHdl, weld::ToggleButton&, SfxCallMode::RECORD, { &aItem }); } -VclPtr<vcl::Window> AlignmentPropertyPanel::Create ( - vcl::Window* pParent, +std::unique_ptr<PanelLayout> AlignmentPropertyPanel::Create ( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings) { @@ -216,14 +208,9 @@ VclPtr<vcl::Window> AlignmentPropertyPanel::Create ( if (pBindings == nullptr) throw lang::IllegalArgumentException("no SfxBindings given to AlignmentPropertyPanel::Create", nullptr, 2); - return VclPtr<AlignmentPropertyPanel>::Create( - pParent, rxFrame, pBindings); + return std::make_unique<AlignmentPropertyPanel>(pParent, rxFrame, pBindings); } -void AlignmentPropertyPanel::DataChanged( - const DataChangedEvent&) -{} - void AlignmentPropertyPanel::HandleContextChange( const vcl::EnumContext& rContext) { diff --git a/sc/source/ui/sidebar/AlignmentPropertyPanel.hxx b/sc/source/ui/sidebar/AlignmentPropertyPanel.hxx index 3a1b8eb8201b..c849a7e9e3f3 100644 --- a/sc/source/ui/sidebar/AlignmentPropertyPanel.hxx +++ b/sc/source/ui/sidebar/AlignmentPropertyPanel.hxx @@ -33,14 +33,11 @@ class AlignmentPropertyPanel public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface { public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings); - virtual void DataChanged( - const DataChangedEvent& rEvent) override; - virtual void HandleContextChange( const vcl::EnumContext& rContext) override; @@ -57,11 +54,10 @@ public: // constructor/destructor AlignmentPropertyPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings); virtual ~AlignmentPropertyPanel() override; - virtual void dispose() override; private: //ui controls diff --git a/sc/source/ui/sidebar/CellAppearancePropertyPanel.cxx b/sc/source/ui/sidebar/CellAppearancePropertyPanel.cxx index 43bc3b857346..59abf60e7e0b 100644 --- a/sc/source/ui/sidebar/CellAppearancePropertyPanel.cxx +++ b/sc/source/ui/sidebar/CellAppearancePropertyPanel.cxx @@ -44,10 +44,10 @@ const char LINESTYLE[] = "LineStyle"; namespace sc::sidebar { CellAppearancePropertyPanel::CellAppearancePropertyPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings) -: PanelLayout(pParent, "CellAppearancePropertyPanel", "modules/scalc/ui/sidebarcellappearance.ui", rxFrame), +: PanelLayout(pParent, "CellAppearancePropertyPanel", "modules/scalc/ui/sidebarcellappearance.ui"), mxTBCellBorder(m_xBuilder->weld_toolbar("cellbordertype")), mxTBCellBackground(m_xBuilder->weld_toolbar("cellbackgroundcolor")), @@ -105,11 +105,6 @@ CellAppearancePropertyPanel::CellAppearancePropertyPanel( } CellAppearancePropertyPanel::~CellAppearancePropertyPanel() -{ - disposeOnce(); -} - -void CellAppearancePropertyPanel::dispose() { mxCellBorderPopoverContainer.reset(); mxTBCellBorder.reset(); @@ -126,8 +121,6 @@ void CellAppearancePropertyPanel::dispose() maGridShowControl.dispose(); maBorderTLBRControl.dispose(); maBorderBLTRControl.dispose(); - - PanelLayout::dispose(); } void CellAppearancePropertyPanel::Initialize() @@ -184,8 +177,8 @@ IMPL_LINK_NOARG(CellAppearancePropertyPanel, TbxLineStyleMenuHdl, const OString& pPopup->GrabFocus(); } -VclPtr<vcl::Window> CellAppearancePropertyPanel::Create ( - vcl::Window* pParent, +std::unique_ptr<PanelLayout> CellAppearancePropertyPanel::Create ( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings) { @@ -196,14 +189,9 @@ VclPtr<vcl::Window> CellAppearancePropertyPanel::Create ( if (pBindings == nullptr) throw lang::IllegalArgumentException("no SfxBindings given to CellAppearancePropertyPanel::Create", nullptr, 2); - return VclPtr<CellAppearancePropertyPanel>::Create( - pParent, rxFrame, pBindings); + return std::make_unique<CellAppearancePropertyPanel>(pParent, rxFrame, pBindings); } -void CellAppearancePropertyPanel::DataChanged( - const DataChangedEvent&) -{} - void CellAppearancePropertyPanel::HandleContextChange(const vcl::EnumContext& rContext) { if (maContext == rContext) diff --git a/sc/source/ui/sidebar/CellAppearancePropertyPanel.hxx b/sc/source/ui/sidebar/CellAppearancePropertyPanel.hxx index 1747e9f0a37d..a0249a7249c2 100644 --- a/sc/source/ui/sidebar/CellAppearancePropertyPanel.hxx +++ b/sc/source/ui/sidebar/CellAppearancePropertyPanel.hxx @@ -22,8 +22,9 @@ #include <sfx2/sidebar/ControllerItem.hxx> #include <sfx2/sidebar/IContextChangeReceiver.hxx> #include <sfx2/sidebar/PanelLayout.hxx> -#include "CellBorderStyleControl.hxx" -#include "CellLineStyleControl.hxx" +#include <vcl/EnumContext.hxx> +#include <vcl/image.hxx> +#include <com/sun/star/frame/XFrame.hpp> class ToolbarUnoDispatcher; class ToolbarPopupContainer; @@ -40,14 +41,11 @@ private: friend class CellBorderStylePopup; public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings); - virtual void DataChanged( - const DataChangedEvent& rEvent) override; - virtual void HandleContextChange( const vcl::EnumContext& rContext) override; @@ -64,11 +62,10 @@ public: // constructor/destructor CellAppearancePropertyPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings); virtual ~CellAppearancePropertyPanel() override; - virtual void dispose() override; private: //ui controls diff --git a/sc/source/ui/sidebar/NumberFormatPropertyPanel.cxx b/sc/source/ui/sidebar/NumberFormatPropertyPanel.cxx index bd7069e34d26..93dd19da0c98 100644 --- a/sc/source/ui/sidebar/NumberFormatPropertyPanel.cxx +++ b/sc/source/ui/sidebar/NumberFormatPropertyPanel.cxx @@ -31,10 +31,10 @@ using namespace css::uno; namespace sc::sidebar { NumberFormatPropertyPanel::NumberFormatPropertyPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings) - : PanelLayout(pParent,"NumberFormatPropertyPanel", "modules/scalc/ui/sidebarnumberformat.ui", rxFrame) + : PanelLayout(pParent,"NumberFormatPropertyPanel", "modules/scalc/ui/sidebarnumberformat.ui") , mxLbCategory(m_xBuilder->weld_combo_box("numberformatcombobox")) , mxTBCategory(m_xBuilder->weld_toolbar("numberformat")) , mxCategoryDispatch(new ToolbarUnoDispatcher(*mxTBCategory, *m_xBuilder, rxFrame)) @@ -54,15 +54,9 @@ NumberFormatPropertyPanel::NumberFormatPropertyPanel( , mpBindings(pBindings) { Initialize(); - m_pInitialFocusWidget = mxLbCategory.get(); } NumberFormatPropertyPanel::~NumberFormatPropertyPanel() -{ - disposeOnce(); -} - -void NumberFormatPropertyPanel::dispose() { mxLbCategory.reset(); mxCategoryDispatch.reset(); @@ -79,8 +73,6 @@ void NumberFormatPropertyPanel::dispose() maNumFormatControl.dispose(); maFormatControl.dispose(); - - PanelLayout::dispose(); } void NumberFormatPropertyPanel::Initialize() @@ -151,8 +143,8 @@ IMPL_LINK_NOARG( NumberFormatPropertyPanel, NumFormatValueHdl, weld::SpinButton& SfxCallMode::RECORD, { &aItem }); } -VclPtr<vcl::Window> NumberFormatPropertyPanel::Create ( - vcl::Window* pParent, +std::unique_ptr<PanelLayout> NumberFormatPropertyPanel::Create ( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings) { @@ -163,14 +155,9 @@ VclPtr<vcl::Window> NumberFormatPropertyPanel::Create ( if (pBindings == nullptr) throw lang::IllegalArgumentException("no SfxBindings given to NumberFormatPropertyPanel::Create", nullptr, 2); - return VclPtr<NumberFormatPropertyPanel>::Create( - pParent, rxFrame, pBindings); + return std::make_unique<NumberFormatPropertyPanel>(pParent, rxFrame, pBindings); } -void NumberFormatPropertyPanel::DataChanged( - const DataChangedEvent&) -{} - void NumberFormatPropertyPanel::HandleContextChange( const vcl::EnumContext& rContext) { diff --git a/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx b/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx index 685a02ac23d2..8505829c5a89 100644 --- a/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx +++ b/sc/source/ui/sidebar/NumberFormatPropertyPanel.hxx @@ -34,14 +34,11 @@ class NumberFormatPropertyPanel { public: public: - static VclPtr<vcl::Window> Create( - vcl::Window* pParent, + static std::unique_ptr<PanelLayout> Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings); - virtual void DataChanged( - const DataChangedEvent& rEvent) override; - virtual void HandleContextChange( const vcl::EnumContext& rContext) override; @@ -58,11 +55,10 @@ public: // constructor/destructor NumberFormatPropertyPanel( - vcl::Window* pParent, + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings); virtual ~NumberFormatPropertyPanel() override; - virtual void dispose() override; private: //ui controls std::unique_ptr<weld::ComboBox> mxLbCategory; diff --git a/sc/source/ui/sidebar/ScPanelFactory.cxx b/sc/source/ui/sidebar/ScPanelFactory.cxx index 9bd54bf774bf..67c949475023 100644 --- a/sc/source/ui/sidebar/ScPanelFactory.cxx +++ b/sc/source/ui/sidebar/ScPanelFactory.cxx @@ -26,8 +26,7 @@ #include <dwfunctr.hxx> #include <sfx2/sidebar/SidebarPanelBase.hxx> -#include <toolkit/helper/vclunohelper.hxx> -#include <vcl/window.hxx> +#include <vcl/weldutils.hxx> #include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #include <comphelper/namedvaluecollection.hxx> #include <cppuhelper/exc_hlp.hxx> @@ -61,8 +60,11 @@ Reference<ui::XUIElement> SAL_CALL ScPanelFactory::createUIElement ( const sal_uInt64 nBindingsValue (aArguments.getOrDefault("SfxBindings", sal_uInt64(0))); SfxBindings* pBindings = reinterpret_cast<SfxBindings*>(nBindingsValue); - VclPtr<vcl::Window> pParentWindow = VCLUnoHelper::GetWindow(xParentWindow); - if ( ! xParentWindow.is() || pParentWindow==nullptr) + weld::Widget* pParent(nullptr); + if (weld::TransportAsXWindow* pTunnel = dynamic_cast<weld::TransportAsXWindow*>(xParentWindow.get())) + pParent = pTunnel->getWidget(); + + if (!pParent) throw RuntimeException( "PanelFactory::createUIElement called without ParentWindow", nullptr); @@ -76,29 +78,29 @@ Reference<ui::XUIElement> SAL_CALL ScPanelFactory::createUIElement ( nullptr); sal_Int32 nMinimumSize = -1; - VclPtr<vcl::Window> pPanel; + std::unique_ptr<PanelLayout> xPanel; if (rsResourceURL.endsWith("/AlignmentPropertyPanel")) - pPanel = AlignmentPropertyPanel::Create( pParentWindow, xFrame, pBindings ); + xPanel = AlignmentPropertyPanel::Create( pParent, xFrame, pBindings ); else if (rsResourceURL.endsWith("/CellAppearancePropertyPanel")) - pPanel = CellAppearancePropertyPanel::Create( pParentWindow, xFrame, pBindings ); + xPanel = CellAppearancePropertyPanel::Create( pParent, xFrame, pBindings ); else if (rsResourceURL.endsWith("/NumberFormatPropertyPanel")) - pPanel = NumberFormatPropertyPanel::Create( pParentWindow, xFrame, pBindings ); + xPanel = NumberFormatPropertyPanel::Create( pParent, xFrame, pBindings ); else if (rsResourceURL.endsWith("/NavigatorPanel")) { - pPanel = VclPtr<ScNavigatorDlg>::Create(pBindings, pParentWindow); + xPanel = std::make_unique<ScNavigatorDlg>(pBindings, pParent, nullptr); nMinimumSize = 0; } else if (rsResourceURL.endsWith("/FunctionsPanel")) { - pPanel = VclPtr<ScFunctionWin>::Create(pParentWindow, xFrame); + xPanel = std::make_unique<ScFunctionWin>(pParent); nMinimumSize = 0; } - if (pPanel) + if (xPanel) xElement = sfx2::sidebar::SidebarPanelBase::Create( rsResourceURL, xFrame, - pPanel, + std::move(xPanel), ui::LayoutSize(nMinimumSize,-1,-1)); } catch (const uno::RuntimeException &) diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx index 21a67f89a4ec..e243fde1c05b 100644 --- a/sd/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx @@ -2377,11 +2377,10 @@ void SdTiledRenderingTest::testTdf115873() SfxViewShell* pViewShell = SfxViewShell::Current(); CPPUNIT_ASSERT(pViewShell); SfxBindings& rBindings = pViewShell->GetViewFrame()->GetBindings(); - ScopedVclPtrInstance<SdNavigatorWin> pNavigator(nullptr, &rBindings); - pNavigator->InitTreeLB(pXImpressDocument->GetDoc()); - pNavigator->Show(); - SdPageObjsTLV& rObjects = pNavigator->GetObjects(); - rObjects.SelectEntry("Slide 1"); + auto xNavigator = std::make_unique<SdNavigatorWin>(nullptr, &rBindings, nullptr); + xNavigator->InitTreeLB(pXImpressDocument->GetDoc()); + SdPageObjsTLV& rObjects = xNavigator->GetObjects(); + rObjects.SelectEntry(u"Slide 1"); rObjects.Select(); sd::ViewShell* pSdViewShell = pXImpressDocument->GetDocShell()->GetViewShell(); SdrView* pSdrView = pSdViewShell->GetView(); @@ -2411,9 +2410,9 @@ void SdTiledRenderingTest::testTdf115873Group() SfxViewShell* pViewShell = SfxViewShell::Current(); CPPUNIT_ASSERT(pViewShell); SfxBindings& rBindings = pViewShell->GetViewFrame()->GetBindings(); - ScopedVclPtrInstance<SdNavigatorWin> pNavigator(nullptr, &rBindings); - pNavigator->InitTreeLB(pXImpressDocument->GetDoc()); - SdPageObjsTLV& rObjects = pNavigator->GetObjects(); + auto xNavigator = std::make_unique<SdNavigatorWin>(nullptr, &rBindings, nullptr); + xNavigator->InitTreeLB(pXImpressDocument->GetDoc()); + SdPageObjsTLV& rObjects = xNavigator->GetObjects(); // This failed, Fill() and IsEqualToDoc() were out of sync for group // shapes. CPPUNIT_ASSERT(rObjects.IsEqualToDoc(pXImpressDocument->GetDoc())); diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx index 2edc197f26d4..1144e120bf73 100644 --- a/sd/source/ui/animations/CustomAnimationPane.cxx +++ b/sd/source/ui/animations/CustomAnimationPane.cxx @@ -54,6 +54,7 @@ #include <svx/unoapi.hxx> #include <svx/svxids.hrc> +#include <svx/colorwindow.hxx> #include <DrawDocShell.hxx> #include <ViewShellBase.hxx> #include <DrawViewShell.hxx> @@ -117,9 +118,8 @@ void fillRepeatComboBox(weld::ComboBox& rBox) rBox.append_text(aEndOfSlide); } -CustomAnimationPane::CustomAnimationPane( Window* pParent, ViewShellBase& rBase, - const css::uno::Reference<css::frame::XFrame>& rxFrame ) - : PanelLayout(pParent, "CustomAnimationsPanel", "modules/simpress/ui/customanimationspanel.ui", rxFrame) +CustomAnimationPane::CustomAnimationPane( weld::Widget* pParent, ViewShellBase& rBase ) + : PanelLayout(pParent, "CustomAnimationsPanel", "modules/simpress/ui/customanimationspanel.ui") , mrBase(rBase) // load resources , mxFTAnimation(m_xBuilder->weld_label("effectlabel")) @@ -154,7 +154,6 @@ CustomAnimationPane::CustomAnimationPane( Window* pParent, ViewShellBase& rBase, , maLateInitTimer() { initialize(); - m_pInitialFocusWidget = &mxCustomAnimationList->get_widget(); } css::ui::LayoutSize CustomAnimationPane::GetHeightForWidth(const sal_Int32 /*nWidth*/) @@ -212,15 +211,9 @@ void CustomAnimationPane::initialize() maLateInitTimer.SetTimeout(100); maLateInitTimer.SetInvokeHandler(LINK(this, CustomAnimationPane, lateInitCallback)); maLateInitTimer.Start(); - UpdateLook(); } CustomAnimationPane::~CustomAnimationPane() -{ - disposeOnce(); -} - -void CustomAnimationPane::dispose() { maLateInitTimer.Stop(); @@ -253,8 +246,6 @@ void CustomAnimationPane::dispose() mxLBCategory.reset(); mxFTAnimation.reset(); mxLBAnimation.reset(); - - PanelLayout::dispose(); } void CustomAnimationPane::addUndo() @@ -866,19 +857,6 @@ void CustomAnimationPane::onContextMenu(const OString &rIdent) updateControls(); } -void CustomAnimationPane::DataChanged (const DataChangedEvent&) -{ - UpdateLook(); -} - -void CustomAnimationPane::UpdateLook() -{ - Color aBackground ( - ::sfx2::sidebar::Theme::GetColor( - ::sfx2::sidebar::Theme::Color_PanelBackground)); - SetBackground(aBackground); -} - static void addValue( const std::unique_ptr<STLPropertySet>& pSet, sal_Int32 nHandle, const Any& rValue ) { switch( pSet->getPropertyState( nHandle ) ) diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx index 908f78df3f70..2075ef37351a 100644 --- a/sd/source/ui/animations/SlideTransitionPane.cxx +++ b/sd/source/ui/animations/SlideTransitionPane.cxx @@ -36,6 +36,7 @@ #include <sal/log.hxx> #include <tools/debug.hxx> #include <svx/gallery.hxx> +#include <svx/colorwindow.hxx> #include <vcl/stdtext.hxx> #include <vcl/svapp.hxx> #include <vcl/weld.hxx> @@ -390,10 +391,9 @@ public: // SlideTransitionPane SlideTransitionPane::SlideTransitionPane( - Window * pParent, - ViewShellBase & rBase, - const css::uno::Reference<css::frame::XFrame>& rxFrame ) : - PanelLayout( pParent, "SlideTransitionsPanel", "modules/simpress/ui/slidetransitionspanel.ui", rxFrame ), + weld::Widget* pParent, + ViewShellBase & rBase) : + PanelLayout( pParent, "SlideTransitionsPanel", "modules/simpress/ui/slidetransitionspanel.ui" ), mrBase( rBase ), mpDrawDoc( rBase.GetDocShell() ? rBase.GetDocShell()->GetDoc() : nullptr ), @@ -478,16 +478,9 @@ void SlideTransitionPane::Initialize(SdDrawDocument* pDoc) maLateInitTimer.SetTimeout(200); maLateInitTimer.SetInvokeHandler(LINK(this, SlideTransitionPane, LateInitCallback)); maLateInitTimer.Start(); - - UpdateLook(); } SlideTransitionPane::~SlideTransitionPane() -{ - disposeOnce(); -} - -void SlideTransitionPane::dispose() { maLateInitTimer.Stop(); removeListener(); @@ -506,17 +499,6 @@ void SlideTransitionPane::dispose() mxPB_APPLY_TO_ALL.reset(); mxPB_PLAY.reset(); mxCB_AUTO_PREVIEW.reset(); - PanelLayout::dispose(); -} - -void SlideTransitionPane::DataChanged (const DataChangedEvent&) -{ - UpdateLook(); -} - -void SlideTransitionPane::UpdateLook() -{ - SetBackground(::sfx2::sidebar::Theme::GetColor(::sfx2::sidebar::Theme::Color_PanelBackground)); } void SlideTransitionPane::onSelectionChanged() @@ -889,7 +871,7 @@ void SlideTransitionPane::applyToSelectedPages(bool bPreview = true) if( mbUpdatingControls ) return; - Window *pFocusWindow = Application::GetFocusWindow(); + vcl::Window *pFocusWindow = Application::GetFocusWindow(); ::sd::slidesorter::SharedPageSelection pSelectedPages( getSelectedPages()); impl::TransitionEffect aEffect = getTransitionEffectFromControls(); diff --git a/sd/source/ui/dlg/NavigatorChildWindow.cxx b/sd/source/ui/dlg/NavigatorChildWindow.cxx index 804a7ccad262..ba5d6a6154a9 100644 --- a/sd/source/ui/dlg/NavigatorChildWindow.cxx +++ b/sd/source/ui/dlg/NavigatorChildWindow.cxx @@ -42,29 +42,27 @@ static void RequestNavigatorUpdate (SfxBindings const * pBindings) SdNavigatorFloat::SdNavigatorFloat(SfxBindings* _pBindings, SfxChildWindow* _pMgr, vcl::Window* _pParent) : SfxNavigator(_pBindings, _pMgr, _pParent) + , m_xNavWin(std::make_unique<SdNavigatorWin>(m_xContainer.get(), _pBindings, this)) { - pNavWin = VclPtr<SdNavigatorWin>::Create(this, _pBindings); - pNavWin->Show(); - - pNavWin->SetUpdateRequestFunctor( + m_xNavWin->SetUpdateRequestFunctor( [_pBindings] () { return RequestNavigatorUpdate(_pBindings); }); - SetMinOutputSizePixel(pNavWin->GetOptimalSize()); + SetMinOutputSizePixel(GetOptimalSize()); } void SdNavigatorFloat::InitTreeLB(const SdDrawDocument* pDoc) { - pNavWin->InitTreeLB(pDoc); + m_xNavWin->InitTreeLB(pDoc); } void SdNavigatorFloat::FreshTree(const SdDrawDocument* pDoc) { - pNavWin->FreshTree(pDoc); + m_xNavWin->FreshTree(pDoc); } void SdNavigatorFloat::dispose() { - pNavWin.disposeAndClear(); + m_xNavWin.reset(); SfxNavigator::dispose(); } diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx index bee5a2190f9c..f3f336ae1377 100644 --- a/sd/source/ui/dlg/navigatr.cxx +++ b/sd/source/ui/dlg/navigatr.cxx @@ -52,13 +52,14 @@ /** * SdNavigatorWin - FloatingWindow */ -SdNavigatorWin::SdNavigatorWin(vcl::Window* pParent, SfxBindings* pInBindings) - : PanelLayout(pParent, "NavigatorPanel", "modules/simpress/ui/navigatorpanel.ui", nullptr) +SdNavigatorWin::SdNavigatorWin(weld::Widget* pParent, SfxBindings* pInBindings, SfxNavigator* pNavigatorDlg) + : PanelLayout(pParent, "NavigatorPanel", "modules/simpress/ui/navigatorpanel.ui") , mxToolbox(m_xBuilder->weld_toolbar("toolbox")) , mxTlbObjects(new SdPageObjsTLV(m_xBuilder->weld_tree_view("tree"))) , mxLbDocs(m_xBuilder->weld_combo_box("documents")) , mxDragModeMenu(m_xBuilder->weld_menu("dragmodemenu")) , mxShapeMenu(m_xBuilder->weld_menu("shapemenu")) + , mxNavigatorDlg(pNavigatorDlg) , mbDocImported ( false ) // On changes of the DragType: adjust SelectionMode of TLB! , meDragType ( NAVIGATOR_DRAGTYPE_EMBEDDED ) @@ -93,8 +94,13 @@ SdNavigatorWin::SdNavigatorWin(vcl::Window* pParent, SfxBindings* pInBindings) mxToolbox->connect_key_press(LINK(this, SdNavigatorWin, KeyInputHdl)); mxTlbObjects->connect_key_press(LINK(this, SdNavigatorWin, KeyInputHdl)); mxLbDocs->connect_key_press(LINK(this, SdNavigatorWin, KeyInputHdl)); +} - m_pInitialFocusWidget = mxToolbox.get(); +weld::Window* SdNavigatorWin::GetFrameWeld() const +{ + if (mxNavigatorDlg) + return mxNavigatorDlg->GetFrameWeld(); + return PanelLayout::GetFrameWeld(); } void SdNavigatorWin::SetUpdateRequestFunctor(const UpdateRequestFunctor& rUpdateRequest) @@ -108,11 +114,6 @@ void SdNavigatorWin::SetUpdateRequestFunctor(const UpdateRequestFunctor& rUpdate } SdNavigatorWin::~SdNavigatorWin() -{ - disposeOnce(); -} - -void SdNavigatorWin::dispose() { mpNavigatorCtrlItem.reset(); mpPageNameCtrlItem.reset(); @@ -121,7 +122,6 @@ void SdNavigatorWin::dispose() mxToolbox.reset(); mxTlbObjects.reset(); mxLbDocs.reset(); - PanelLayout::dispose(); } //when object is marked , fresh the corresponding entry tree . diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index c8917c827688..361ae670e159 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -389,7 +389,7 @@ bool SdPageObjsTLV::StartDrag() */ bool SdPageObjsTLV::DoDrag() { - if (!m_xNavigator) + if (!m_pNavigator) return true; if (!m_xHelper) @@ -706,7 +706,7 @@ void SdPageObjsTLV::Select() if (m_bSelectionHandlerNavigates) m_aRowActivatedHdl.Call(*m_xTreeView); - if (!m_xNavigator) + if (!m_pNavigator) { m_xHelper.clear(); return; @@ -714,7 +714,7 @@ void SdPageObjsTLV::Select() ::sd::DrawDocShell* pDocShell = m_pDoc->GetDocSh(); OUString aURL = INetURLObject(pDocShell->GetMedium()->GetPhysicalName(), INetProtocol::File).GetMainURL(INetURLObject::DecodeMechanism::NONE); - NavigatorDragType eDragType = m_xNavigator->GetNavigatorDragType(); + NavigatorDragType eDragType = m_pNavigator->GetNavigatorDragType(); OUString sSelectedEntry = m_xTreeView->get_selected_text(); aURL += "#" + sSelectedEntry; @@ -923,7 +923,7 @@ IMPL_LINK(SdPageObjsTLV, RequestingChildrenHdl, const weld::TreeIter&, rFileEntr void SdPageObjsTLV::SetSdNavigator(SdNavigatorWin* pNavigator) { - m_xNavigator = pNavigator; + m_pNavigator = pNavigator; } void SdPageObjsTLV::SetViewFrame(const SfxViewFrame* pViewFrame) diff --git a/sd/source/ui/inc/CustomAnimationPane.hxx b/sd/source/ui/inc/CustomAnimationPane.hxx index 1d795b20ce68..edb1a0b634dc 100644 --- a/sd/source/ui/inc/CustomAnimationPane.hxx +++ b/sd/source/ui/inc/CustomAnimationPane.hxx @@ -22,6 +22,7 @@ #include <sfx2/sidebar/ILayoutableWindow.hxx> #include <sfx2/sidebar/PanelLayout.hxx> +#include <vcl/idle.hxx> #include "CustomAnimationList.hxx" #include <misc/scopelock.hxx> @@ -50,9 +51,8 @@ class CustomAnimationPane : public PanelLayout { friend class MotionPathTag; public: - CustomAnimationPane( vcl::Window* pParent, ViewShellBase& rBase, const css::uno::Reference<css::frame::XFrame>& rxFrame ); + CustomAnimationPane(weld::Widget* pParent, ViewShellBase& rBase); virtual ~CustomAnimationPane() override; - virtual void dispose() override; // ILayoutableWindow virtual css::ui::LayoutSize GetHeightForWidth (const sal_Int32 nWidth) override; @@ -76,9 +76,6 @@ public: virtual void onContextMenu(const OString& rIdent) override; virtual void onDragNDropComplete( std::vector< CustomAnimationEffectPtr > pEffectsDragged, CustomAnimationEffectPtr pEffectInsertBefore ) override; - // Window - virtual void DataChanged (const DataChangedEvent& rEvent) override; - void addUndo(); double getDuration() const; @@ -100,7 +97,6 @@ private: static css::uno::Any getProperty1Value( sal_Int32 nType, const CustomAnimationEffectPtr& pEffect ); ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits