diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-05-19 17:36:48 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-05-19 21:38:06 +0200 |
commit | feb17e47bc04e2af6b4ecf7202764ce980f83242 (patch) | |
tree | b7008c444a4eea937c705ebdd3f1723f64e9552a /chart2/source/controller/sidebar/ChartAreaPanel.cxx | |
parent | use toggle instead of click for RadioButton (diff) | |
download | core-feb17e47bc04e2af6b4ecf7202764ce980f83242.tar.gz core-feb17e47bc04e2af6b4ecf7202764ce980f83242.zip |
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 <caolanm@redhat.com>
Diffstat (limited to 'chart2/source/controller/sidebar/ChartAreaPanel.cxx')
-rw-r--r-- | chart2/source/controller/sidebar/ChartAreaPanel.cxx | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index 51e71e22cf33..0378f7bbda6f 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); + 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); + css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( + mxModel->getCurrentController(), css::uno::UNO_QUERY); + if (oldSelectionSupplier.is()) { + oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener); + } } 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); } +void ChartAreaPanel::updateModel( css::uno::Reference<css::frame::XModel> xModel) +{ + doUpdateModel(xModel); +} + } |