chart2/source/controller/sidebar/ChartAreaPanel.cxx | 30 ++++++++-------- chart2/source/controller/sidebar/ChartAreaPanel.hxx | 1 chart2/source/controller/sidebar/ChartAxisPanel.cxx | 30 ++++++++-------- chart2/source/controller/sidebar/ChartAxisPanel.hxx | 1 chart2/source/controller/sidebar/ChartElementsPanel.cxx | 17 ++++++--- chart2/source/controller/sidebar/ChartElementsPanel.hxx | 1 chart2/source/controller/sidebar/ChartErrorBarPanel.cxx | 16 +++++--- chart2/source/controller/sidebar/ChartErrorBarPanel.hxx | 1 chart2/source/controller/sidebar/ChartLinePanel.cxx | 30 ++++++++-------- chart2/source/controller/sidebar/ChartLinePanel.hxx | 1 chart2/source/controller/sidebar/ChartSeriesPanel.cxx | 19 +++++----- chart2/source/controller/sidebar/ChartSeriesPanel.hxx | 1 chart2/source/controller/sidebar/ChartTypePanel.cxx | 16 +++++--- chart2/source/controller/sidebar/ChartTypePanel.hxx | 1 14 files changed, 100 insertions(+), 65 deletions(-)
New commits: commit dbd4601f05b7d161cfa2658c2a434fa217ce13ba Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Wed May 19 17:36:48 2021 +0100 Commit: Aron Budea <aron.bu...@collabora.com> CommitDate: Thu Dec 30 12:24:03 2021 +0100 tdf#142364 exception thrown during destruction Change-Id: I4e06ac82108e5381cd11fbd6407e1ce1e85c3ac6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115822 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> (cherry picked from commit feb17e47bc04e2af6b4ecf7202764ce980f83242) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127735 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Aron Budea <aron.bu...@collabora.com> diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index 36fd21204b62..ff9380825bbd 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -289,12 +289,7 @@ ChartAreaPanel::ChartAreaPanel(weld::Widget* pParent, ChartAreaPanel::~ChartAreaPanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); - - css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (xSelectionSupplier.is()) - xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + doUpdateModel(nullptr); } void ChartAreaPanel::Initialize() @@ -512,23 +507,25 @@ void ChartAreaPanel::selectionChanged(bool bCorrectType) updateData(); } -void ChartAreaPanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartAreaPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); - } - css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( - mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (oldSelectionSupplier.is()) { - oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( + mxModel->getCurrentController(), css::uno::UNO_QUERY); + if (oldSelectionSupplier.is()) { + oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + } } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); xBroadcasterNew->addModifyListener(mxListener); @@ -538,6 +535,11 @@ void ChartAreaPanel::updateModel( xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get()); } +void ChartAreaPanel::updateModel( css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + } diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.hxx b/chart2/source/controller/sidebar/ChartAreaPanel.hxx index 01fb9077a178..110132ca4356 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.hxx @@ -72,6 +72,7 @@ private: rtl::Reference<ChartSidebarSelectionListener> mxSelectionListener; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); bool mbUpdate; bool mbModelValid; diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.cxx b/chart2/source/controller/sidebar/ChartAxisPanel.cxx index 0574878b8cb2..5d50ff9848cc 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.cxx @@ -222,12 +222,7 @@ ChartAxisPanel::ChartAxisPanel( ChartAxisPanel::~ChartAxisPanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxModifyListener); - - css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (xSelectionSupplier.is()) - xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener); + doUpdateModel(nullptr); mxCBShowLabel.reset(); mxCBReverse.reset(); @@ -311,23 +306,25 @@ void ChartAxisPanel::modelInvalid() mbModelValid = false; } -void ChartAxisPanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartAxisPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxModifyListener); - } - css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( - mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (oldSelectionSupplier.is()) { - oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( + mxModel->getCurrentController(), css::uno::UNO_QUERY); + if (oldSelectionSupplier.is()) { + oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + } } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); xBroadcasterNew->addModifyListener(mxModifyListener); @@ -337,6 +334,11 @@ void ChartAxisPanel::updateModel( xSelectionSupplier->addSelectionChangeListener(mxSelectionListener); } +void ChartAxisPanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + void ChartAxisPanel::selectionChanged(bool bCorrectType) { if (bCorrectType) diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.hxx b/chart2/source/controller/sidebar/ChartAxisPanel.hxx index ab7d87fedf77..38c1de70fa7d 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.hxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.hxx @@ -85,6 +85,7 @@ private: bool mbModelValid; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); DECL_LINK(CheckBoxHdl, weld::ToggleButton&, void); DECL_LINK(ListBoxHdl, weld::ComboBox&, void); diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.cxx b/chart2/source/controller/sidebar/ChartElementsPanel.cxx index e1d4a776f0fe..55168772ce09 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.cxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.cxx @@ -339,8 +339,8 @@ ChartElementsPanel::ChartElementsPanel( ChartElementsPanel::~ChartElementsPanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); + doUpdateModel(nullptr); + mxCBTitle.reset(); mxEditTitle.reset(); mxCBSubtitle.reset(); @@ -563,8 +563,7 @@ void ChartElementsPanel::modelInvalid() mbModelValid = false; } -void ChartElementsPanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartElementsPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { @@ -573,12 +572,20 @@ void ChartElementsPanel::updateModel( } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); xBroadcasterNew->addModifyListener(mxListener); } +void ChartElementsPanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + IMPL_LINK(ChartElementsPanel, CheckBoxHdl, weld::ToggleButton&, rCheckBox, void) { bool bChecked = rCheckBox.get_active(); diff --git a/chart2/source/controller/sidebar/ChartElementsPanel.hxx b/chart2/source/controller/sidebar/ChartElementsPanel.hxx index 801b40efdb72..b53aa715f583 100644 --- a/chart2/source/controller/sidebar/ChartElementsPanel.hxx +++ b/chart2/source/controller/sidebar/ChartElementsPanel.hxx @@ -102,6 +102,7 @@ private: OUString maTextSubTitle; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); void setTitleVisible(TitleHelper::eTitleType eTitle, bool bVisible); diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx index 943abdbdd66c..1b3f35551382 100644 --- a/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx +++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.cxx @@ -251,8 +251,7 @@ ChartErrorBarPanel::ChartErrorBarPanel(weld::Widget* pParent, ChartController* p ChartErrorBarPanel::~ChartErrorBarPanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); + doUpdateModel(nullptr); mxRBPosAndNeg.reset(); mxRBPos.reset(); @@ -371,8 +370,7 @@ void ChartErrorBarPanel::modelInvalid() mbModelValid = false; } -void ChartErrorBarPanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartErrorBarPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { @@ -381,12 +379,20 @@ void ChartErrorBarPanel::updateModel( } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); xBroadcasterNew->addModifyListener(mxListener); } +void ChartErrorBarPanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + IMPL_LINK_NOARG(ChartErrorBarPanel, RadioBtnHdl, weld::ToggleButton&, void) { OUString aCID = getCID(mxModel); diff --git a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx index 0b95a565bf01..e87a65d845b9 100644 --- a/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx +++ b/chart2/source/controller/sidebar/ChartErrorBarPanel.hxx @@ -78,6 +78,7 @@ private: bool mbModelValid; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); DECL_LINK(RadioBtnHdl, weld::ToggleButton&, void); DECL_LINK(ListBoxHdl, weld::ComboBox&, void); diff --git a/chart2/source/controller/sidebar/ChartLinePanel.cxx b/chart2/source/controller/sidebar/ChartLinePanel.cxx index e9603138a341..c2228a577033 100644 --- a/chart2/source/controller/sidebar/ChartLinePanel.cxx +++ b/chart2/source/controller/sidebar/ChartLinePanel.cxx @@ -143,12 +143,7 @@ ChartLinePanel::ChartLinePanel(weld::Widget* pParent, ChartLinePanel::~ChartLinePanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); - - css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (xSelectionSupplier.is()) - xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + doUpdateModel(nullptr); } void ChartLinePanel::Initialize() @@ -205,23 +200,25 @@ void ChartLinePanel::selectionChanged(bool bCorrectType) updateData(); } -void ChartLinePanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartLinePanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); xBroadcaster->removeModifyListener(mxListener); - } - css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( - mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (oldSelectionSupplier.is()) { - oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( + mxModel->getCurrentController(), css::uno::UNO_QUERY); + if (oldSelectionSupplier.is()) { + oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + } } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; maLineStyleWrapper.updateModel(mxModel); maLineColorWrapper.updateModel(mxModel); @@ -234,6 +231,11 @@ void ChartLinePanel::updateModel( xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get()); } +void ChartLinePanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + void ChartLinePanel::setLineJoint(const XLineJointItem* pItem) { css::uno::Reference<css::beans::XPropertySet> xPropSet = diff --git a/chart2/source/controller/sidebar/ChartLinePanel.hxx b/chart2/source/controller/sidebar/ChartLinePanel.hxx index b46452467fec..c1348c7ac481 100644 --- a/chart2/source/controller/sidebar/ChartLinePanel.hxx +++ b/chart2/source/controller/sidebar/ChartLinePanel.hxx @@ -74,6 +74,7 @@ private: rtl::Reference<ChartSidebarSelectionListener> mxSelectionListener; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); bool mbUpdate; bool mbModelValid; diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx index 03e16396daff..045c033a5756 100644 --- a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx +++ b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx @@ -300,11 +300,7 @@ ChartSeriesPanel::ChartSeriesPanel( ChartSeriesPanel::~ChartSeriesPanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); - css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (xSelectionSupplier.is()) - xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener); + doUpdateModel(nullptr); mxCBLabel.reset(); mxCBTrendline.reset(); @@ -409,8 +405,7 @@ void ChartSeriesPanel::modelInvalid() mbModelValid = false; } -void ChartSeriesPanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartSeriesPanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { @@ -425,7 +420,10 @@ void ChartSeriesPanel::updateModel( } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); xBroadcasterNew->addModifyListener(mxListener); @@ -435,6 +433,11 @@ void ChartSeriesPanel::updateModel( xSelectionSupplier->addSelectionChangeListener(mxSelectionListener); } +void ChartSeriesPanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + void ChartSeriesPanel::selectionChanged(bool bCorrectType) { if (bCorrectType) diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx index 2844051001fe..64bc5315bfaa 100644 --- a/chart2/source/controller/sidebar/ChartSeriesPanel.hxx +++ b/chart2/source/controller/sidebar/ChartSeriesPanel.hxx @@ -98,6 +98,7 @@ private: bool mbModelValid; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); DECL_LINK(CheckBoxHdl, weld::ToggleButton&, void); DECL_LINK(RadioBtnHdl, weld::ToggleButton&, void); diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx index 66ffaa97c819..68aac5baa472 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.cxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx @@ -121,9 +121,7 @@ ChartTypePanel::ChartTypePanel(weld::Widget* pParent, ::chart::ChartController* ChartTypePanel::~ChartTypePanel() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, - css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); + doUpdateModel(nullptr); //delete all dialog controller m_aChartTypeDialogControllerList.clear(); @@ -263,7 +261,7 @@ void ChartTypePanel::HandleContextChange(const vcl::EnumContext& rContext) void ChartTypePanel::modelInvalid() { mbModelValid = false; } -void ChartTypePanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +void ChartTypePanel::doUpdateModel(css::uno::Reference<css::frame::XModel> xModel) { if (mbModelValid) { @@ -273,13 +271,21 @@ void ChartTypePanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); xBroadcasterNew->addModifyListener(mxListener); } +void ChartTypePanel::updateModel(css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + uno::Reference<css::chart2::XChartTypeTemplate> ChartTypePanel::getCurrentTemplate() const { if (m_pCurrentMainType && m_xChartModel.is()) diff --git a/chart2/source/controller/sidebar/ChartTypePanel.hxx b/chart2/source/controller/sidebar/ChartTypePanel.hxx index 6a9036ebaa02..9610ce3520e9 100644 --- a/chart2/source/controller/sidebar/ChartTypePanel.hxx +++ b/chart2/source/controller/sidebar/ChartTypePanel.hxx @@ -96,6 +96,7 @@ private: bool mbModelValid; void Initialize(); + void doUpdateModel(css::uno::Reference<css::frame::XModel> xModel); std::unique_ptr<Dim3DLookResourceGroup> m_pDim3DLookResourceGroup; std::unique_ptr<StackingResourceGroup> m_pStackingResourceGroup;