summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2022-04-22 16:17:09 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2022-04-22 16:49:51 +0200
commita09cf7e76a6d90a50a373d04d717897b7f717d54 (patch)
treed3adf07a2bf0032bcef1420aa96a915623a227b1
parent27953931d4f6a8c69b98a90c63db81ebb27cdf63 (diff)
Drop a bit more special-casing for Chart's sidebar property deck
Introduced in commit 2d01ed9e8be543460e41e009fa992103a7c8d4c0 Author Muhammet Kara <muhammet.kara@collabora.com> Date Mon Nov 25 21:55:31 2019 +0300 tdf#94288: Show chart props sidebar on activation The problem was that ChartController::attachFrame, that called SelectionChangeHandler::selectionChanged notification, did that *prior* to setting its m_xFrame - and the notification failed in ContextChangeEventMultiplexer::NotifyContextChange, that checks the frame first. That prevented the proper context (with correct application and context names) to arrive to listeners, and the sidebar didn't update properly. Changing the order of the calls should fix the original problem. Change-Id: I9da8465af2ee4ed1f8eabed1c65d1c318f81a3f9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133326 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--chart2/source/controller/main/ChartController.cxx21
-rw-r--r--framework/source/services/ContextChangeEventMultiplexer.cxx17
2 files changed, 11 insertions, 27 deletions
diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx
index 54e950a3b6eb..d2a313f3ed03 100644
--- a/chart2/source/controller/main/ChartController.cxx
+++ b/chart2/source/controller/main/ChartController.cxx
@@ -366,6 +366,17 @@ void SAL_CALL ChartController::attachFrame(
if( impl_isDisposedOrSuspended() ) //@todo? allow attaching the frame while suspended?
return; //behave passive if already disposed or suspended
+ if(m_xFrame.is()) //what happens, if we do have a Frame already??
+ {
+ //@todo? throw exception?
+ OSL_FAIL( "there is already a frame attached to the controller" );
+ return;
+ }
+
+ //--attach frame
+ m_xFrame = xFrame; //the frameloader is responsible to call xFrame->setComponent
+
+ // Only notify after setting the frame, otherwise notification will fail
mpSelectionChangeHandler->Connect();
uno::Reference<ui::XSidebar> xSidebar = getSidebarFromModel(getChartModel());
@@ -379,16 +390,6 @@ void SAL_CALL ChartController::attachFrame(
mpSelectionChangeHandler->selectionChanged(aEvent);
}
- if(m_xFrame.is()) //what happens, if we do have a Frame already??
- {
- //@todo? throw exception?
- OSL_FAIL( "there is already a frame attached to the controller" );
- return;
- }
-
- //--attach frame
- m_xFrame = xFrame; //the frameloader is responsible to call xFrame->setComponent
-
//add as disposelistener to the frame (due to persistent reference) ??...:
//the frame is considered to be owner of this controller and will live longer than we do
diff --git a/framework/source/services/ContextChangeEventMultiplexer.cxx b/framework/source/services/ContextChangeEventMultiplexer.cxx
index 76424b3aea03..b2f6db457fac 100644
--- a/framework/source/services/ContextChangeEventMultiplexer.cxx
+++ b/framework/source/services/ContextChangeEventMultiplexer.cxx
@@ -162,23 +162,6 @@ void SAL_CALL ContextChangeEventMultiplexer::addContextChangeEventListener (
if (!(rxEventFocus.is() && pFocusDescriptor!=nullptr))
return;
- if (pFocusDescriptor->msCurrentApplicationName.isEmpty() && pFocusDescriptor->msCurrentContextName.isEmpty()
- && rxEventFocus.is())
- {
- Reference< lang::XServiceInfo > xServInfo( rxEventFocus, uno::UNO_QUERY );
- if( xServInfo.is() && xServInfo->getImplementationName() == "com.sun.star.comp.chart2.ChartController")
- {
- css::ui::ContextChangeEventObject aEvent (
- rxEventFocus,
- "com.sun.star.chart2.ChartDocument",
- "Chart");
- rxListener->notifyContextChangeEvent(aEvent);
-
- return;
- }
-
- }
-
css::ui::ContextChangeEventObject aEvent (
nullptr,
pFocusDescriptor->msCurrentApplicationName,