sd/qa/unit/tiledrendering/tiledrendering.cxx | 6 +++++- sfx2/source/control/bindings.cxx | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-)
New commits: commit 35b81a05c7c58d0db2276627a9387a738c409974 Author: Tamás Zolnai <tamas.zol...@collabora.com> AuthorDate: Mon Mar 15 17:10:10 2021 +0100 Commit: Tamás Zolnai <tamas.zol...@collabora.com> CommitDate: Mon Mar 22 19:20:11 2021 +0100 lok: switch to the correct view before any UI update is done via SfxBindings. Change-Id: I541e53b4219340233ed5a4bec407ded5adf6a841 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112538 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Tamás Zolnai <tamas.zol...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112730 Tested-by: Tamás Zolnai <tamas.zol...@collabora.com> diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx index cc11e2483991..d553dfce610f 100644 --- a/sd/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx @@ -1005,6 +1005,7 @@ void SdTiledRenderingTest::testViewCursorParts() SfxLokHelper::createView(); pXImpressDocument->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>()); ViewCallback aView2; + int nView2 = SfxLokHelper::getView(); // Select the shape in the second view. sd::ViewShell* pViewShell = pXImpressDocument->GetDocShell()->GetViewShell(); @@ -1018,6 +1019,7 @@ void SdTiledRenderingTest::testViewCursorParts() pView->UnmarkAllObj(pView->GetSdrPageView()); // Now switch to the second part in the second view. + SfxLokHelper::setView(nView2); pXImpressDocument->setPart(1); aView2.m_nPart = 1; aView1.m_bGraphicViewSelectionInvalidated = false; @@ -1058,10 +1060,10 @@ void SdTiledRenderingTest::testCursorViews() // second view as well, even if the second view was created after begin // text edit in the first view. ViewCallback aView2; + SfxLokHelper::setView(nView1); // This failed: the second view didn't get a lock notification, even if the // first view already started text edit. CPPUNIT_ASSERT(aView2.m_bViewLock); - SfxLokHelper::setView(nView1); aView2.m_bTilesInvalidated = false; pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 'x', 0); pXImpressDocument->postKeyEvent(LOK_KEYEVENT_KEYUP, 'x', 0); @@ -1188,6 +1190,8 @@ void SdTiledRenderingTest::testCursorVisibility_MultiView() pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONDOWN, centerX, centerY, 2, MOUSE_LEFT, 0); + + SfxLokHelper::setView(nView1); pXImpressDocument->postMouseEvent(LOK_MOUSEEVENT_MOUSEBUTTONUP, centerX, centerY, 2, MOUSE_LEFT, 0); diff --git a/sfx2/source/control/bindings.cxx b/sfx2/source/control/bindings.cxx index aa565d9c4a96..0c430db5e184 100644 --- a/sfx2/source/control/bindings.cxx +++ b/sfx2/source/control/bindings.cxx @@ -48,6 +48,9 @@ #include <sfx2/viewfrm.hxx> #include <sfx2/objsh.hxx> #include <sfx2/msgpool.hxx> +#include <sfx2/viewsh.hxx> +#include <sfx2/lokhelper.hxx> +#include <comphelper/lok.hxx> #include <cstddef> #include <memory> @@ -1235,6 +1238,26 @@ bool SfxBindings::NextJob_Impl(Timer const * pTimer) SfxApplication *pSfxApp = SfxGetpApp(); + // Switch to the right view for state update. + if (comphelper::LibreOfficeKit::isActive()) + { + if( pDispatcher ) + { + SfxViewFrame* pFrame = pDispatcher->GetFrame(); + if (pFrame) + { + vcl::Window* pFrameWin = pFrame->GetWindow().GetFrameWindow(); + if (pFrameWin && pFrameWin->GetLOKNotifier()) { + const SfxViewShell* pView = dynamic_cast<const SfxViewShell*>(pFrameWin->GetLOKNotifier()); + if (pView) + { + SfxLokHelper::setView(pView->GetViewShellId().get()); + } + } + } + } + } + if( pDispatcher ) pDispatcher->Update_Impl(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits