summaryrefslogtreecommitdiffstats
path: root/chart2/source/controller/sidebar/ChartAreaPanel.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-05-19 17:36:48 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-05-19 21:38:06 +0200
commitfeb17e47bc04e2af6b4ecf7202764ce980f83242 (patch)
treeb7008c444a4eea937c705ebdd3f1723f64e9552a /chart2/source/controller/sidebar/ChartAreaPanel.cxx
parentuse toggle instead of click for RadioButton (diff)
downloadcore-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.cxx30
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);
+}
+
}