[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - sd/qa sfx2/source

Tamás Zolnai (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 19 19:41:00 UTC 2021


 sd/qa/unit/tiledrendering/tiledrendering.cxx |    6 +++++-
 sfx2/source/control/bindings.cxx             |   23 +++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

New commits:
commit 69bcdb4cffe2c3a12e215b6cf5d99f18e49a5973
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Mon Mar 15 17:10:10 2021 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Fri Mar 19 20:40:21 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 <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>

diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx
index 79163b0cea67..5c4cb06f0790 100644
--- a/sd/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx
@@ -1002,6 +1002,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();
@@ -1015,6 +1016,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;
@@ -1055,10 +1057,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);
@@ -1185,6 +1187,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 1d6fd0d62441..6be545d382bf 100644
--- a/sfx2/source/control/bindings.cxx
+++ b/sfx2/source/control/bindings.cxx
@@ -55,6 +55,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>
@@ -1240,6 +1243,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();
 


More information about the Libreoffice-commits mailing list