diff options
Diffstat (limited to 'chart2/source/controller/sidebar/ChartSeriesPanel.cxx')
-rw-r--r-- | chart2/source/controller/sidebar/ChartSeriesPanel.cxx | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/chart2/source/controller/sidebar/ChartSeriesPanel.cxx b/chart2/source/controller/sidebar/ChartSeriesPanel.cxx index 4ce23d66811c..fe2452572985 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) |