desktop/inc/lib/init.hxx                 |    3 -
 desktop/source/lib/init.cxx              |   14 +----
 include/editeng/outliner.hxx             |    2 
 include/sfx2/lokhelper.hxx               |   12 +---
 include/sfx2/viewsh.hxx                  |    2 
 include/svl/undo.hxx                     |    2 
 sc/source/ui/docshell/dbdocfun.cxx       |    4 -
 sc/source/ui/docshell/docfunc.cxx        |    5 -
 sc/source/ui/docshell/docsh4.cxx         |    5 -
 sc/source/ui/docshell/olinefun.cxx       |    9 +--
 sc/source/ui/inc/tabvwsh.hxx             |    5 +
 sc/source/ui/undo/undoblk.cxx            |    8 +--
 sc/source/ui/undo/undodat.cxx            |   10 +--
 sc/source/ui/unoobj/docuno.cxx           |   11 +---
 sc/source/ui/view/dbfunc3.cxx            |    7 +-
 sc/source/ui/view/gridwin.cxx            |    9 +--
 sc/source/ui/view/gridwin4.cxx           |    4 -
 sc/source/ui/view/tabview4.cxx           |    2 
 sc/source/ui/view/tabview5.cxx           |    3 -
 sc/source/ui/view/tabvwsh4.cxx           |   15 +----
 sc/source/ui/view/tabvwshc.cxx           |   14 +++--
 sc/source/ui/view/viewfun2.cxx           |    4 -
 sc/source/ui/view/viewfunc.cxx           |   17 ++----
 sd/source/ui/sidebar/SlideBackground.cxx |   10 +--
 sfx2/source/view/lokcharthelper.cxx      |    4 -
 sfx2/source/view/lokhelper.cxx           |   78 ++++---------------------------
 sfx2/source/view/viewimp.hxx             |    1 
 sfx2/source/view/viewsh.cxx              |   19 +------
 starmath/source/smmod.cxx                |    3 -
 sw/source/core/doc/docredln.cxx          |    3 -
 30 files changed, 88 insertions(+), 197 deletions(-)

New commits:
commit e94d9c1c346a8b7e58c24bcf554c0a2bab77f59c
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Tue Jul 21 10:59:24 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jul 21 10:59:42 2020 +0200

    Revert "tdf#128502: Try to support multiple documents ...
    
    in LibreOfficeKit-using process"
    
    This reverts commit b0da52d19ed40dd0871f208eb7387ec1d8252de4.
    We decided not to have this "multiple docs" feature in stable cp-6.2
    because it caused regressions that we could not fix quickly.
    
    Change-Id: Ib9ad6e010935e6a936832c01756700735a8cc6c5

diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
index 237a17a59eee..5957f56ed344 100644
--- a/desktop/inc/lib/init.hxx
+++ b/desktop/inc/lib/init.hxx
@@ -149,9 +149,8 @@ namespace desktop {
         css::uno::Reference<css::lang::XComponent> mxComponent;
         std::shared_ptr< LibreOfficeKitDocumentClass > m_pDocumentClass;
         std::map<size_t, std::shared_ptr<CallbackFlushHandler>> 
mpCallbackFlushHandlers;
-        const int mnDocumentId;
 
-        explicit LibLODocument_Impl(const css::uno::Reference 
<css::lang::XComponent> &xComponent, int nDocumentId = -1);
+        explicit LibLODocument_Impl(const css::uno::Reference 
<css::lang::XComponent> &xComponent);
         ~LibLODocument_Impl();
     };
 
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 568363fea289..2e5f9380fa44 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1207,9 +1207,8 @@ VclPtr<Window> getSidebarWindow()
 
 } // anonymous namespace
 
-LibLODocument_Impl::LibLODocument_Impl(const uno::Reference 
<css::lang::XComponent> &xComponent, int nDocumentId)
+LibLODocument_Impl::LibLODocument_Impl(const uno::Reference 
<css::lang::XComponent> &xComponent)
     : mxComponent(xComponent)
-    , mnDocumentId(nDocumentId)
 {
     if (!(m_pDocumentClass = gDocumentClass.lock()))
     {
@@ -2151,8 +2150,6 @@ static LibreOfficeKitDocument* 
lo_documentLoadWithOptions(LibreOfficeKit* pThis,
 
     SolarMutexGuard aGuard;
 
-    static int nDocumentIdCounter = 0;
-
     LibLibreOffice_Impl* pLib = static_cast<LibLibreOffice_Impl*>(pThis);
     pLib->maLastExceptionMsg.clear();
 
@@ -2249,10 +2246,7 @@ static LibreOfficeKitDocument* 
lo_documentLoadWithOptions(LibreOfficeKit* pThis,
             return nullptr;
         }
 
-        LibLODocument_Impl* pDocument = new LibLODocument_Impl(xComponent, 
nDocumentIdCounter++);
-
-        // Do we know that after loading the document, its initial view is the 
"current" view?
-        SfxLokHelper::setDocumentIdOfView(pDocument->mnDocumentId);
+        LibLODocument_Impl* pDocument = new LibLODocument_Impl(xComponent);
         if (pLib->mpCallback)
         {
             int nState = doc_getSignatureState(pDocument);
@@ -3143,9 +3137,7 @@ static void doc_paintPartTile(LibreOfficeKitDocument* 
pThis,
     {
         // tile painting always needs a SfxViewShell::Current(), but actually
         // it does not really matter which one - all of them should paint the
-        // same thing. It's important to get a view for the correct document,
-        // though.
-        // doc_getViewsCount() returns the count of views for the document in 
the current view.
+        // same thing.
         int viewCount = doc_getViewsCount(pThis);
         if (viewCount == 0)
             return;
diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx
index 05a1aae85851..68b13a311f36 100644
--- a/include/editeng/outliner.hxx
+++ b/include/editeng/outliner.hxx
@@ -376,8 +376,6 @@ class SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI OutlinerViewShell
 public:
     virtual void libreOfficeKitViewCallback(int nType, const char* pPayload) 
const = 0;
     virtual ViewShellId GetViewShellId() const = 0;
-    virtual void SetDocId(ViewShellDocId nId) = 0;
-    virtual ViewShellDocId GetDocId() const = 0;
     /// Wrapper around SfxLokHelper::notifyOtherViews().
     virtual void NotifyOtherViews(int nType, const OString& rKey, const 
OString& rPayload) = 0;
     /// Wrapper around SfxLokHelper::notifyOtherView().
diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx
index d88ae25adcff..63c88b988b2e 100644
--- a/include/sfx2/lokhelper.hxx
+++ b/include/sfx2/lokhelper.hxx
@@ -53,12 +53,8 @@ public:
     static int getView(SfxViewShell* pViewShell = nullptr);
     /// Get the number of views of the current object shell.
     static std::size_t getViewsCount();
-    /// Get viewIds of views of the current object shell.
+    /// Get viewIds of all existing views.
     static bool getViewIds(int* pArray, size_t nSize);
-    /// Set the document id of the currently active view
-    static void setDocumentIdOfView(int nId);
-    /// Get the document id for a view
-    static int getDocumentIdOfView(int nViewId);
     /// Get the default language that should be used for views
     static LanguageTag getDefaultLanguage();
     /// Set language of the given view.
@@ -74,7 +70,7 @@ public:
     /// Iterate over any view shell, except pThisViewShell, passing it to the 
f function.
     template<typename ViewShellType, typename FunctionType>
     static void forEachOtherView(ViewShellType* pThisViewShell, FunctionType 
f);
-    /// Invoke the LOK callback of all other views showing the same document 
as pThisView, with a payload of rKey-rPayload.
+    /// Invoke the LOK callback of all views except pThisView, with a payload 
of rKey-rPayload.
     static void notifyOtherViews(SfxViewShell* pThisView, int nType, const 
OString& rKey, const OString& rPayload);
     /// Same as notifyOtherViews(), but works on a selected "other" view, not 
on all of them.
     static void notifyOtherView(SfxViewShell* pThisView, SfxViewShell const* 
pOtherView, int nType, const OString& rKey, const OString& rPayload);
@@ -87,7 +83,7 @@ public:
                              const std::vector<vcl::LOKPayloadItem>& rPayload 
= std::vector<vcl::LOKPayloadItem>());
     /// Emits a LOK_CALLBACK_DOCUMENT_SIZE_CHANGED - if @bInvalidateAll - 
first invalidates all parts
     static void notifyDocumentSizeChanged(SfxViewShell const* pThisView, const 
OString& rPayload, vcl::ITiledRenderable* pDoc, bool bInvalidateAll = true);
-    /// Emits a LOK_CALLBACK_DOCUMENT_SIZE_CHANGED for all views of the same 
document - if @bInvalidateAll - first invalidates all parts
+    /// Emits a LOK_CALLBACK_DOCUMENT_SIZE_CHANGED for all views - if 
@bInvalidateAll - first invalidates all parts
     static void notifyDocumentSizeChangedAllViews(vcl::ITiledRenderable* pDoc, 
bool bInvalidateAll = true);
     /// Emits a LOK_CALLBACK_INVALIDATE_TILES, but tweaks it according to 
setOptionalFeatures() if needed.
     static void notifyInvalidation(SfxViewShell const* pThisView, const 
OString& rPayload);
@@ -122,7 +118,7 @@ void SfxLokHelper::forEachOtherView(ViewShellType* 
pThisViewShell, FunctionType
     while (pViewShell)
     {
         auto pOtherViewShell = dynamic_cast<ViewShellType*>(pViewShell);
-        if (pOtherViewShell != nullptr && pOtherViewShell != pThisViewShell && 
pOtherViewShell->GetDocId() == pThisViewShell->GetDocId())
+        if (pOtherViewShell != nullptr && pOtherViewShell != pThisViewShell)
         {
             f(pOtherViewShell);
         }
diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx
index a54909ace2b5..6628b7f822aa 100644
--- a/include/sfx2/viewsh.hxx
+++ b/include/sfx2/viewsh.hxx
@@ -341,8 +341,6 @@ public:
     virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const;
     /// See OutlinerViewShell::GetViewShellId().
     ViewShellId GetViewShellId() const override;
-    void SetDocId(ViewShellDocId nId) override;
-    ViewShellDocId GetDocId() const override;
     /// See OutlinerViewShell::NotifyOtherViews().
     void NotifyOtherViews(int nType, const OString& rKey, const OString& 
rPayload) override;
     /// See OutlinerViewShell::NotifyOtherView().
diff --git a/include/svl/undo.hxx b/include/svl/undo.hxx
index 1ca989fd4a5d..c2862b886c6f 100644
--- a/include/svl/undo.hxx
+++ b/include/svl/undo.hxx
@@ -28,8 +28,6 @@
 #include <vector>
 
 typedef o3tl::strong_int<sal_Int32, struct ViewShellIdTag> ViewShellId;
-typedef o3tl::strong_int<int, struct ViewShellDocIdTag> ViewShellDocId;
-
 
 class SVL_DLLPUBLIC SfxRepeatTarget
 {
diff --git a/sc/source/ui/docshell/dbdocfun.cxx 
b/sc/source/ui/docshell/dbdocfun.cxx
index 3ad4fc6032eb..5060c53ff205 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -620,8 +620,7 @@ bool ScDBDocFunc::Query( SCTAB nTab, const ScQueryParam& 
rQueryParam,
 
     ScDocument& rDoc = rDocShell.GetDocument();
 
-    ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
-    if (pViewSh && ScTabViewShell::isAnyEditViewInRange(pViewSh, /*bColumns*/ 
false, rQueryParam.nRow1, rQueryParam.nRow2))
+    if (ScTabViewShell::isAnyEditViewInRange(/*bColumns*/ false, 
rQueryParam.nRow1, rQueryParam.nRow2))
     {
         return false;
     }
@@ -936,6 +935,7 @@ bool ScDBDocFunc::Query( SCTAB nTab, const ScQueryParam& 
rQueryParam,
                                         pOld, bDoSize, pAdvSource ) );
     }
 
+    ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
     if ( pViewSh )
     {
         // could there be horizontal autofilter ?
diff --git a/sc/source/ui/docshell/docfunc.cxx 
b/sc/source/ui/docshell/docfunc.cxx
index ffb74bc7411c..38af064a918c 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -139,7 +139,6 @@ static void lcl_PaintAbove( ScDocShell& rDocShell, const 
ScRange& rRange )
 bool ScDocFunc::AdjustRowHeight( const ScRange& rRange, bool bPaint )
 {
     ScDocument& rDoc = rDocShell.GetDocument();
-    SfxViewShell* pSomeViewForThisDoc = rDocShell.GetBestViewShell(false);
     if ( rDoc.IsImportingXML() )
     {
         //  for XML import, all row heights are updated together after 
importing
@@ -160,7 +159,7 @@ bool ScDocFunc::AdjustRowHeight( const ScRange& rRange, 
bool bPaint )
         while (pViewShell)
         {
             ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-            if (pTabViewShell && pTabViewShell->GetDocId() == 
pSomeViewForThisDoc->GetDocId())
+            if (pTabViewShell)
             {
                 
pTabViewShell->GetViewData().GetLOKHeightHelper(nTab)->invalidateByIndex(nStartRow);
             }
@@ -182,7 +181,7 @@ bool ScDocFunc::AdjustRowHeight( const ScRange& rRange, 
bool bPaint )
                             PaintPartFlags::Grid | PaintPartFlags::Left);
 
     if (comphelper::LibreOfficeKit::isActive())
-        ScTabViewShell::notifyAllViewsHeaderInvalidation(pSomeViewForThisDoc, 
ROW_HEADER, nTab);
+        ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER, nTab);
 
     return bChanged;
 }
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 6cce2f468b4d..8d9d5ce9cb12 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -2528,13 +2528,10 @@ void 
ScDocShell::LOKCommentNotify(LOKCommentNotificationType nType, const ScDocu
     boost::property_tree::write_json(aStream, aTree);
     std::string aPayload = aStream.str();
 
-    ScViewData* pViewData = GetViewData();
-    SfxViewShell* pThisViewShell = ( pViewData ? pViewData->GetViewShell() : 
nullptr );
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pThisViewShell == nullptr || pViewShell->GetDocId() == 
pThisViewShell->GetDocId())
-            pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_COMMENT, 
aPayload.c_str());
+        pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_COMMENT, 
aPayload.c_str());
         pViewShell = SfxViewShell::GetNext(*pViewShell);
     }
 }
diff --git a/sc/source/ui/docshell/olinefun.cxx 
b/sc/source/ui/docshell/olinefun.cxx
index d92de37eca25..23a8f846af35 100644
--- a/sc/source/ui/docshell/olinefun.cxx
+++ b/sc/source/ui/docshell/olinefun.cxx
@@ -317,7 +317,6 @@ bool ScOutlineDocFunc::SelectLevel( SCTAB nTab, bool 
bColumns, sal_uInt16 nLevel
                                     bool bRecord, bool bPaint )
 {
     ScDocument& rDoc = rDocShell.GetDocument();
-    ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
 
     if (bRecord && !rDoc.IsUndoEnabled())
         bRecord = false;
@@ -365,7 +364,7 @@ bool ScOutlineDocFunc::SelectLevel( SCTAB nTab, bool 
bColumns, sal_uInt16 nLevel
         sal_uInt16 nThisLevel = aIter.LastLevel();
         bool bShow = (nThisLevel < nLevel);
 
-        if (!bShow && pViewSh && ScTabViewShell::isAnyEditViewInRange(pViewSh, 
bColumns, nThisStart, nThisEnd))
+        if (!bShow && ScTabViewShell::isAnyEditViewInRange(bColumns, 
nThisStart, nThisEnd))
             continue;
 
         if (bShow)                                          // enable
@@ -413,6 +412,7 @@ bool ScOutlineDocFunc::SelectLevel( SCTAB nTab, bool 
bColumns, sal_uInt16 nLevel
     rDoc.SetDrawPageSize(nTab);
     rDoc.UpdatePageBreaks( nTab );
 
+    ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
     if ( pViewSh )
         pViewSh->OnLOKShowHideColRow(bColumns, nStart - 1);
 
@@ -735,8 +735,8 @@ bool ScOutlineDocFunc::HideOutline( SCTAB nTab, bool 
bColumns, sal_uInt16 nLevel
     SCCOLROW nStart = pEntry->GetStart();
     SCCOLROW nEnd   = pEntry->GetEnd();
 
-    ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
-    if (pViewSh && ScTabViewShell::isAnyEditViewInRange(pViewSh, bColumns, 
nStart, nEnd))
+
+    if (ScTabViewShell::isAnyEditViewInRange(bColumns, nStart, nEnd))
         return false;
 
     // TODO undo can mess things up when another view is editing a cell in the 
range of group entry
@@ -777,6 +777,7 @@ bool ScOutlineDocFunc::HideOutline( SCTAB nTab, bool 
bColumns, sal_uInt16 nLevel
     rDoc.InvalidatePageBreaks(nTab);
     rDoc.UpdatePageBreaks( nTab );
 
+    ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();
     if ( pViewSh )
         pViewSh->OnLOKShowHideColRow(bColumns, nStart - 1);
 
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index bbce30066e3b..8191d629b381 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -390,8 +390,9 @@ public:
     /// See SfxViewShell::NotifyCursor().
     void NotifyCursor(SfxViewShell* pViewShell) const override;
     /// Emits a LOK_CALLBACK_INVALIDATE_HEADER for all views whose current tab 
is equal to nCurrentTabIndex
-    static void notifyAllViewsHeaderInvalidation(SfxViewShell* pForViewShell, 
HeaderType eHeaderType, SCTAB nCurrentTabIndex);
-    static bool isAnyEditViewInRange(SfxViewShell* pForViewShell, bool 
bColumns, SCCOLROW nStart, SCCOLROW nEnd);
+    static void notifyAllViewsHeaderInvalidation(HeaderType eHeaderType, SCTAB 
nCurrentTabIndex);
+    static void notifyAllViewsHeaderInvalidation(bool Columns, SCTAB 
nCurrentTabIndex);
+    static bool isAnyEditViewInRange(bool bColumns, SCCOLROW nStart, SCCOLROW 
nEnd);
     css::uno::Reference<css::drawing::XShapes> getSelectedXShapes();
     static  css::uno::Reference<css::datatransfer::XTransferable2> 
GetClipData(vcl::Window* pWin);
 
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 956d99d91cab..6e0f254d34bb 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -278,10 +278,10 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
         if (comphelper::LibreOfficeKit::isActive())
         {
             if (eCmd == INS_INSCOLS_BEFORE || eCmd == INS_INSCOLS_AFTER || 
eCmd == INS_CELLSRIGHT)
-                ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, 
COLUMN_HEADER,  pViewShell->GetViewData().GetTabNo());
+                
ScTabViewShell::notifyAllViewsHeaderInvalidation(COLUMN_HEADER,  
pViewShell->GetViewData().GetTabNo());
 
             if (eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSROWS_AFTER || 
eCmd == INS_CELLSDOWN)
-                ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, 
ROW_HEADER, pViewShell->GetViewData().GetTabNo());
+                ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER,  
pViewShell->GetViewData().GetTabNo());
         }
     }
 }
@@ -538,10 +538,10 @@ void ScUndoDeleteCells::DoChange( const bool bUndo )
         if (comphelper::LibreOfficeKit::isActive())
         {
             if (eCmd == DelCellCmd::Cols || eCmd == DelCellCmd::CellsLeft)
-                ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, 
COLUMN_HEADER, pViewShell->GetViewData().GetTabNo());
+                
ScTabViewShell::notifyAllViewsHeaderInvalidation(COLUMN_HEADER,  
pViewShell->GetViewData().GetTabNo());
 
             if (eCmd == DelCellCmd::Rows || eCmd == DelCellCmd::CellsUp)
-                ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, 
ROW_HEADER, pViewShell->GetViewData().GetTabNo());
+                ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER,  
pViewShell->GetViewData().GetTabNo());
         }
 
     }
diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx
index 20d6eac3b6ea..45047082faca 100644
--- a/sc/source/ui/undo/undodat.cxx
+++ b/sc/source/ui/undo/undodat.cxx
@@ -184,7 +184,7 @@ void ScUndoMakeOutline::Undo()
 
     
pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PaintPartFlags::Grid|PaintPartFlags::Left|PaintPartFlags::Top|PaintPartFlags::Size);
 
-    ScTabViewShell::notifyAllViewsHeaderInvalidation( pViewShell, bColumns ? 
COLUMN_HEADER : ROW_HEADER, nTab );
+    ScTabViewShell::notifyAllViewsHeaderInvalidation( bColumns, nTab );
 
     EndUndo();
 }
@@ -453,7 +453,7 @@ void ScUndoRemoveAllOutlines::Undo()
 
     
pDocShell->PostPaint(0,0,nTab,MAXCOL,MAXROW,nTab,PaintPartFlags::Grid|PaintPartFlags::Left|PaintPartFlags::Top|PaintPartFlags::Size);
 
-    ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, BOTH_HEADERS, 
nTab);
+    ScTabViewShell::notifyAllViewsHeaderInvalidation(BOTH_HEADERS, nTab);
 
     EndUndo();
 }
@@ -737,13 +737,13 @@ OUString ScUndoQuery::GetComment() const
 
 void ScUndoQuery::Undo()
 {
-    ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
-    if (ScTabViewShell::isAnyEditViewInRange(pViewShell, /*bColumns*/ false, 
aQueryParam.nRow1, aQueryParam.nRow2))
+    if (ScTabViewShell::isAnyEditViewInRange(/*bColumns*/ false, 
aQueryParam.nRow1, aQueryParam.nRow2))
         return;
 
     BeginUndo();
 
     ScDocument& rDoc = pDocShell->GetDocument();
+    ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
 
     bool bCopy = !aQueryParam.bInplace;
     SCCOL nDestEndCol = 0;
@@ -818,7 +818,7 @@ void ScUndoQuery::Undo()
 
     // invalidate cache positions and update cursor and selection
     pViewShell->OnLOKShowHideColRow(/*bColumns*/ false, aQueryParam.nRow1 - 1);
-    ScTabViewShell::notifyAllViewsHeaderInvalidation(pViewShell, ROW_HEADER, 
nTab);
+    ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER, nTab);
 
     //  Paint
 
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index fc849c2ba8c0..d1f57b46dead 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -105,7 +105,7 @@ void ScDBFunc::MakeOutline( bool bColumns, bool bRecord )
         ScOutlineDocFunc aFunc(*pDocSh);
         aFunc.MakeOutline( aRange, bColumns, bRecord, false );
 
-        
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
bColumns ? COLUMN_HEADER : ROW_HEADER, GetViewData().GetTabNo());
+        ScTabViewShell::notifyAllViewsHeaderInvalidation(bColumns, 
GetViewData().GetTabNo());
     }
     else
         ErrorMessage(STR_NOMULTISELECT);
@@ -122,7 +122,7 @@ void ScDBFunc::RemoveOutline( bool bColumns, bool bRecord )
         ScOutlineDocFunc aFunc(*pDocSh);
         aFunc.RemoveOutline( aRange, bColumns, bRecord, false );
 
-        
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
bColumns ? COLUMN_HEADER : ROW_HEADER, GetViewData().GetTabNo());
+        ScTabViewShell::notifyAllViewsHeaderInvalidation(bColumns, 
GetViewData().GetTabNo());
     }
     else
         ErrorMessage(STR_NOMULTISELECT);
@@ -2253,12 +2253,11 @@ void ScDBFunc::OnLOKShowHideColRow(bool bColumns, 
SCCOLROW nStart)
         return;
 
     SCTAB nCurrentTabIndex = GetViewData().GetTabNo();
-    SfxViewShell* pThisViewShell = GetViewData().GetViewShell();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
         ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-        if (pTabViewShell && pTabViewShell->GetDocId() == 
pThisViewShell->GetDocId())
+        if (pTabViewShell)
         {
             if (bColumns)
                 
pTabViewShell->GetViewData().GetLOKWidthHelper(nCurrentTabIndex)->invalidateByIndex(nStart);
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index c0e437b8f98d..6e8cfc680e47 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -825,7 +825,7 @@ void ScGridWindow::UpdateAutoFilterFromMenu(AutoFilterMode 
eMode)
             // Something went terribly wrong!
             return;
 
-        if (ScTabViewShell::isAnyEditViewInRange(pViewData->GetViewShell(), 
/*bColumns*/ false, aParam.nRow1, aParam.nRow2))
+        if (ScTabViewShell::isAnyEditViewInRange(/*bColumns*/ false, 
aParam.nRow1, aParam.nRow2))
             return;
 
         pEntry->bDoQuery = true;
@@ -5733,9 +5733,6 @@ void ScGridWindow::notifyKitCellViewCursor(const 
SfxViewShell* pForShell) const
 {
     ScTabViewShell* pViewShell = pViewData->GetViewShell();
 
-    if (pViewShell->GetDocId() != pForShell->GetDocId())
-        return;
-
     OString aCursor("EMPTY");
     if (mpOOCursors) // cf. getCellCursor above
     {
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 80739983cf80..065f56bf1591 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -336,7 +336,7 @@ void ScGridWindow::InvalidateLOKViewCursor(const 
tools::Rectangle& rCursorRect,
 
     while (pViewShell)
     {
-        if (pViewShell != pThisViewShell && pViewShell->GetDocId() == 
pThisViewShell->GetDocId())
+        if (pViewShell != pThisViewShell)
         {
             ScTabViewShell* pOtherViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
             if (pOtherViewShell)
@@ -955,7 +955,7 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const 
ScTableInfo& rTableI
 
         while (pViewShell)
         {
-            if (pViewShell != pThisViewShell && pViewShell->GetDocId() == 
pThisViewShell->GetDocId())
+            if (pViewShell != pThisViewShell)
             {
                 ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
                 if (pTabViewShell)
diff --git a/sc/source/ui/view/tabview4.cxx b/sc/source/ui/view/tabview4.cxx
index a8051c7e8128..2efc0ef197ca 100644
--- a/sc/source/ui/view/tabview4.cxx
+++ b/sc/source/ui/view/tabview4.cxx
@@ -392,7 +392,7 @@ static long lcl_GetScrollRange( SCCOLROW nDocEnd, SCCOLROW 
nPos, SCCOLROW nVis,
 
 void ScTabView::UpdateScrollBars( HeaderType eHeaderType )
 {
-    
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
eHeaderType, GetViewData().GetTabNo());
+    ScTabViewShell::notifyAllViewsHeaderInvalidation(eHeaderType, 
GetViewData().GetTabNo());
 
     long        nDiff;
     bool        bTop =   ( aViewData.GetVSplitMode() != SC_SPLIT_NONE );
diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx
index abf8a1e8ccb4..b8736dd6d6e5 100644
--- a/sc/source/ui/view/tabview5.cxx
+++ b/sc/source/ui/view/tabview5.cxx
@@ -677,12 +677,11 @@ void ScTabView::OnLOKNoteStateChanged(const ScPostIt* 
pNote)
     aInvalidRect.AdjustTop( -nBorderSize );
     aInvalidRect.AdjustBottom( nBorderSize );
 
-    SfxViewShell* pCurrentViewShell = SfxViewShell::Current();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
         ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-        if (pTabViewShell && pViewShell->GetDocId() == 
pCurrentViewShell->GetDocId())
+        if (pTabViewShell)
         {
             for (auto& pWin: pTabViewShell->pGridWin)
             {
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index afbe40780c3f..ec912c115848 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1,4 +1,4 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; 
fill-column: 100 -*- */
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /*
  * This file is part of the LibreOffice project.
  *
@@ -141,11 +141,6 @@ void ScTabViewShell::Activate(bool bMDI)
                     SfxViewShell* pSh = SfxViewShell::GetFirst( true, 
checkSfxViewShell<ScTabViewShell> );
                     while ( pSh!=nullptr && pOldHdl!=nullptr)
                     {
-                        // Hmm, what if pSh is a shell for a different 
document? But as this code
-                        // does not seem to be LibreOfficeKit-specific, 
probably that doesn't
-                        // happen, because having multiple documents open 
simultaneously has of
-                        // course not been a problem at all in traditional 
desktop LibreOffice.
-                        // (Unlike in a LibreOfficeKit-based process where it 
has been a problem.)
                         if 
(static_cast<ScTabViewShell*>(pSh)->GetInputHandler() == pOldHdl)
                         {
                             pOldHdl->ResetDelayTimer();
@@ -1721,12 +1716,8 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
         // have we already one view ?
         if (pViewShell)
         {
-            // this view is not yet visible at this stage, so we look for not 
visible views, too, for this same document
-            SfxViewShell* pViewShell2 = pViewShell;
-            do
-            {
-                pViewShell2 = SfxViewShell::GetNext(*pViewShell2, /*only 
visible shells*/ false);
-            } while (pViewShell2 && pViewShell2->GetDocId() != 
pViewShell->GetDocId());
+            // this view is not yet visible at this stage, so we look for not 
visible views, too
+            SfxViewShell* pViewShell2 = SfxViewShell::GetNext(*pViewShell, 
/*only visible shells*/ false);
             // if the second view is not this one, it means that there is
             // already more than one active view and so the formula mode
             // has already been disabled
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index aba771e1035a..1f0cd9bf737b 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -572,7 +572,7 @@ css::uno::Reference<css::datatransfer::XTransferable2> 
ScTabViewShell::GetClipDa
     return xTransferable;
 }
 
-void ScTabViewShell::notifyAllViewsHeaderInvalidation(SfxViewShell* 
pForViewShell, HeaderType eHeaderType, SCTAB nCurrentTabIndex)
+void ScTabViewShell::notifyAllViewsHeaderInvalidation(HeaderType eHeaderType, 
SCTAB nCurrentTabIndex)
 {
     if (comphelper::LibreOfficeKit::isActive())
     {
@@ -595,7 +595,7 @@ void 
ScTabViewShell::notifyAllViewsHeaderInvalidation(SfxViewShell* pForViewShel
         while (pViewShell)
         {
             ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-            if (pTabViewShell && pViewShell->GetDocId() == 
pForViewShell->GetDocId() && (nCurrentTabIndex == -1 || 
pTabViewShell->getPart() == nCurrentTabIndex))
+            if (pTabViewShell && (nCurrentTabIndex == -1 || 
pTabViewShell->getPart() == nCurrentTabIndex))
             {
                 
pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_HEADER, 
aPayload.getStr());
             }
@@ -604,7 +604,13 @@ void 
ScTabViewShell::notifyAllViewsHeaderInvalidation(SfxViewShell* pForViewShel
     }
 }
 
-bool ScTabViewShell::isAnyEditViewInRange(SfxViewShell* pForViewShell, bool 
bColumns, SCCOLROW nStart, SCCOLROW nEnd)
+void ScTabViewShell::notifyAllViewsHeaderInvalidation(bool bColumns, SCTAB 
nCurrentTabIndex)
+{
+    HeaderType eHeaderType = bColumns ? COLUMN_HEADER : ROW_HEADER;
+    ScTabViewShell::notifyAllViewsHeaderInvalidation(eHeaderType, 
nCurrentTabIndex);
+}
+
+bool ScTabViewShell::isAnyEditViewInRange(bool bColumns, SCCOLROW nStart, 
SCCOLROW nEnd)
 {
     if (comphelper::LibreOfficeKit::isActive())
     {
@@ -612,7 +618,7 @@ bool ScTabViewShell::isAnyEditViewInRange(SfxViewShell* 
pForViewShell, bool bCol
         while (pViewShell)
         {
             ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-            if (pTabViewShell && pTabViewShell->GetDocId() == 
pForViewShell->GetDocId())
+            if (pTabViewShell)
             {
                 ScInputHandler* pInputHandler = 
pTabViewShell->GetInputHandler();
                 if (pInputHandler && pInputHandler->GetActiveView())
diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx
index aa4f05844693..1b948b916746 100644
--- a/sc/source/ui/view/viewfun2.cxx
+++ b/sc/source/ui/view/viewfun2.cxx
@@ -170,7 +170,7 @@ bool ScViewFunc::AdjustBlockHeight( bool bPaint, 
ScMarkData* pMarkData )
         pDocSh->UpdateOle(&GetViewData());
 
     if (comphelper::LibreOfficeKit::isActive())
-        
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
ROW_HEADER, GetViewData().GetTabNo());
+        ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER, 
GetViewData().GetTabNo());
 
     return bAnyChanged;
 }
@@ -219,7 +219,7 @@ bool ScViewFunc::AdjustRowHeight( SCROW nStartRow, SCROW 
nEndRow )
                                             PaintPartFlags::Grid | 
PaintPartFlags::Left );
 
     if (comphelper::LibreOfficeKit::isActive())
-        
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
ROW_HEADER, GetViewData().GetTabNo());
+        ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER, 
GetViewData().GetTabNo());
 
     return bChanged;
 }
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index bed9550e77b1..a0e1185a6d3f 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -1481,12 +1481,11 @@ void ScViewFunc::OnLOKInsertDeleteColumn(SCCOL 
nStartCol, long nOffset)
         return;
 
     SCTAB nCurrentTabIndex = GetViewData().GetTabNo();
-    SfxViewShell* pCurrentViewShell = GetViewData().GetViewShell();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
         ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-        if (pTabViewShell && pTabViewShell->GetDocId() == 
pCurrentViewShell->GetDocId())
+        if (pTabViewShell)
         {
             
pTabViewShell->GetViewData().GetLOKWidthHelper(nCurrentTabIndex)->invalidateByIndex(nStartCol);
 
@@ -1537,12 +1536,11 @@ void ScViewFunc::OnLOKInsertDeleteRow(SCROW nStartRow, 
long nOffset)
         return;
 
     SCTAB nCurrentTabIndex = GetViewData().GetTabNo();
-    SfxViewShell* pCurrentViewShell = GetViewData().GetViewShell();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
         ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-        if (pTabViewShell && pTabViewShell->GetDocId() == 
pCurrentViewShell->GetDocId())
+        if (pTabViewShell)
         {
             
pTabViewShell->GetViewData().GetLOKHeightHelper(nCurrentTabIndex)->invalidateByIndex(nStartRow);
 
@@ -1593,12 +1591,11 @@ void ScViewFunc::OnLOKSetWidthOrHeight(SCCOLROW nStart, 
bool bWidth)
         return;
 
     SCTAB nCurTab = GetViewData().GetTabNo();
-    SfxViewShell* pCurrentViewShell = GetViewData().GetViewShell();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
         ScTabViewShell* pTabViewShell = 
dynamic_cast<ScTabViewShell*>(pViewShell);
-        if (pTabViewShell && pTabViewShell->GetDocId() == 
pCurrentViewShell->GetDocId())
+        if (pTabViewShell)
         {
             if (bWidth)
                 
pTabViewShell->GetViewData().GetLOKWidthHelper(nCurTab)->invalidateByIndex(nStart);
@@ -1639,10 +1636,10 @@ bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool 
bRecord, bool bPartOfPaste )
             if (comphelper::LibreOfficeKit::isActive())
             {
                 if (bInsertCols)
-                    
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
COLUMN_HEADER, GetViewData().GetTabNo());
+                    
ScTabViewShell::notifyAllViewsHeaderInvalidation(COLUMN_HEADER, 
GetViewData().GetTabNo());
 
                 if (bInsertRows)
-                    
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
ROW_HEADER, GetViewData().GetTabNo());
+                    
ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER, 
GetViewData().GetTabNo());
             }
         }
         return bSuccess;
@@ -1714,10 +1711,10 @@ void ScViewFunc::DeleteCells( DelCellCmd eCmd )
         if (comphelper::LibreOfficeKit::isActive())
         {
             if (eCmd == DelCellCmd::Cols)
-                
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
COLUMN_HEADER, GetViewData().GetTabNo());
+                
ScTabViewShell::notifyAllViewsHeaderInvalidation(COLUMN_HEADER, 
GetViewData().GetTabNo());
 
             if (eCmd == DelCellCmd::Rows)
-                
ScTabViewShell::notifyAllViewsHeaderInvalidation(GetViewData().GetViewShell(), 
ROW_HEADER, GetViewData().GetTabNo());
+                ScTabViewShell::notifyAllViewsHeaderInvalidation(ROW_HEADER, 
GetViewData().GetTabNo());
         }
     }
     else
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx 
b/sd/source/ui/sidebar/SlideBackground.cxx
index d59cd6616f46..9182f6984056 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -1044,14 +1044,10 @@ IMPL_LINK_NOARG(SlideBackground, PaperSizeModifyHdl, 
ListBox&, void)
     if (comphelper::LibreOfficeKit::isActive())
     {
         SfxViewShell* pViewShell = SfxViewShell::GetFirst();
-        while (pViewShell)
+        if (pViewShell)
         {
-            if (pViewShell->GetDocId() == mrBase.GetDocId())
-            {
-                SdXImpressDocument* pModel = 
SdXImpressDocument::getImplementation(pViewShell->GetCurrentDocument());
-                SfxLokHelper::notifyDocumentSizeChangedAllViews(pModel);
-            }
-            pViewShell = SfxViewShell::GetNext(*pViewShell);
+            SdXImpressDocument* pModel = 
SdXImpressDocument::getImplementation(pViewShell->GetCurrentDocument());
+            SfxLokHelper::notifyDocumentSizeChangedAllViews(pModel);
         }
     }
 }
diff --git a/sfx2/source/view/lokcharthelper.cxx 
b/sfx2/source/view/lokcharthelper.cxx
index 23d84851f5a5..903e4727eb62 100644
--- a/sfx2/source/view/lokcharthelper.cxx
+++ b/sfx2/source/view/lokcharthelper.cxx
@@ -180,7 +180,7 @@ bool LokChartHelper::HitAny(const Point& aPos)
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pViewShell->GetDocId() == pCurView->GetDocId() && 
pViewShell->getPart() == nPartForCurView)
+        if (pViewShell->getPart() == nPartForCurView)
         {
             LokChartHelper aChartHelper(pViewShell);
             if (aChartHelper.Hit(aPos))
@@ -262,7 +262,7 @@ void LokChartHelper::PaintAllChartsOnTile(VirtualDevice& 
rDevice,
         SfxViewShell* pViewShell = SfxViewShell::GetFirst();
         while (pViewShell)
         {
-            if (pCurView && pViewShell->GetDocId() == pCurView->GetDocId() && 
pViewShell->getPart() == nPartForCurView)
+            if (pViewShell->getPart() == nPartForCurView)
             {
                 LokChartHelper aChartHelper(pViewShell);
                 aChartHelper.PaintTile(rDevice, aTileRect);
diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx
index 2f78bfc1eaa5..4fb7761cec95 100644
--- a/sfx2/source/view/lokhelper.cxx
+++ b/sfx2/source/view/lokhelper.cxx
@@ -69,17 +69,11 @@ int SfxLokHelper::createView()
     SfxViewFrame* pViewFrame = SfxViewFrame::GetFirst();
     if (!pViewFrame)
         return -1;
-    SfxViewShell* pPrevViewShell = SfxViewShell::Current();
-    ViewShellDocId nId;
-    if (pPrevViewShell)
-        nId = pPrevViewShell->GetDocId();
     SfxRequest aRequest(pViewFrame, SID_NEWWINDOW);
     pViewFrame->ExecView_Impl(aRequest);
     SfxViewShell* pViewShell = SfxViewShell::Current();
     if (!pViewShell)
         return -1;
-    if (pPrevViewShell)
-        pViewShell->SetDocId(nId);
     return static_cast<sal_Int32>(pViewShell->GetViewShellId());
 }
 
@@ -153,20 +147,7 @@ int SfxLokHelper::getView(SfxViewShell* pViewShell)
 std::size_t SfxLokHelper::getViewsCount()
 {
     SfxApplication* pApp = SfxApplication::Get();
-    if (!pApp)
-        return 0;
-
-    const SfxViewShell* const pCurrentViewShell = SfxViewShell::Current();
-    const ViewShellDocId nCurrentDocId = pCurrentViewShell ? 
pCurrentViewShell->GetDocId() : ViewShellDocId(-1);
-    std::size_t n = 0;
-    SfxViewShell* pViewShell = SfxViewShell::GetFirst();
-    while (pViewShell)
-    {
-        if (pViewShell->GetDocId() == nCurrentDocId)
-            n++;
-        pViewShell = SfxViewShell::GetNext(*pViewShell);
-    }
-    return n;
+    return !pApp ? 0 : pApp->GetViewShells_Impl().size();
 }
 
 bool SfxLokHelper::getViewIds(int* pArray, size_t nSize)
@@ -175,43 +156,16 @@ bool SfxLokHelper::getViewIds(int* pArray, size_t nSize)
     if (!pApp)
         return false;
 
-    const SfxViewShell* const pCurrentViewShell = SfxViewShell::Current();
-    const ViewShellDocId nCurrentDocId = pCurrentViewShell ? 
pCurrentViewShell->GetDocId() : ViewShellDocId(-1);
-    std::size_t n = 0;
-    SfxViewShell* pViewShell = SfxViewShell::GetFirst();
-    while (pViewShell)
-    {
-        if (n == nSize)
-            return false;
-        if (pViewShell->GetDocId() == nCurrentDocId)
-        {
-            pArray[n] = static_cast<sal_Int32>(pViewShell->GetViewShellId());
-            n++;
-        }
-        pViewShell = SfxViewShell::GetNext(*pViewShell);
-    }
-    return true;
-}
-
-void SfxLokHelper::setDocumentIdOfView(int nId)
-{
-    SfxViewShell* pViewShell = SfxViewShell::Current();
-    assert(pViewShell);
-    if (!pViewShell)
-        return;
-    pViewShell->SetDocId(ViewShellDocId(nId));
-}
+    SfxViewShellArr_Impl& rViewArr = pApp->GetViewShells_Impl();
+    if (rViewArr.size() > nSize)
+        return false;
 
-int SfxLokHelper::getDocumentIdOfView(int nViewId)
-{
-    SfxViewShell* pViewShell = SfxViewShell::GetFirst();
-    while (pViewShell)
+    for (std::size_t i = 0; i < rViewArr.size(); ++i)
     {
-        if (pViewShell->GetViewShellId() == ViewShellId(nViewId))
-            return static_cast<int>(pViewShell->GetDocId());
-        pViewShell = SfxViewShell::GetNext(*pViewShell);
+        SfxViewShell* pViewShell = rViewArr[i];
+        pArray[i] = static_cast<sal_Int32>(pViewShell->GetViewShellId());
     }
-    return -1;
+    return true;
 }
 
 LanguageTag SfxLokHelper::getDefaultLanguage()
@@ -298,13 +252,13 @@ void SfxLokHelper::notifyOtherView(SfxViewShell* 
pThisView, SfxViewShell const*
 
 void SfxLokHelper::notifyOtherViews(SfxViewShell* pThisView, int nType, const 
OString& rKey, const OString& rPayload)
 {
-    if (DisableCallbacks::disabled())
+    if (SfxLokHelper::getViewsCount() <= 1 || DisableCallbacks::disabled())
         return;
 
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pViewShell != pThisView && pViewShell->GetDocId() == pThisView-> 
GetDocId())
+        if (pViewShell != pThisView)
             notifyOtherView(pThisView, pViewShell, nType, rKey, rPayload);
 
         pViewShell = SfxViewShell::GetNext(*pViewShell);
@@ -417,13 +371,10 @@ void 
SfxLokHelper::notifyDocumentSizeChangedAllViews(vcl::ITiledRenderable* pDoc
     if (!comphelper::LibreOfficeKit::isActive() || 
DisableCallbacks::disabled())
         return;
 
-    // FIXME: Do we know whether it is the views for the document that is in 
the "current" view that has changed?
-    const SfxViewShell* const pCurrentViewShell = SfxViewShell::Current();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pViewShell->GetDocId() == pCurrentViewShell-> GetDocId())
-            SfxLokHelper::notifyDocumentSizeChanged(pViewShell, "", pDoc, 
bInvalidateAll);
+        SfxLokHelper::notifyDocumentSizeChanged(pViewShell, "", pDoc, 
bInvalidateAll);
         pViewShell = SfxViewShell::GetNext(*pViewShell);
     }
 }
@@ -455,12 +406,10 @@ void SfxLokHelper::notifyAllViews(int nType, const 
OString& rPayload)
         return;
 
     const auto payload = rPayload.getStr();
-    const SfxViewShell* const pCurrentViewShell = SfxViewShell::Current();
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pViewShell->GetDocId() == pCurrentViewShell->GetDocId())
-            pViewShell->libreOfficeKitViewCallback(nType, payload);
+        pViewShell->libreOfficeKitViewCallback(nType, payload);
         pViewShell = SfxViewShell::GetNext(*pViewShell);
     }
 }
diff --git a/sfx2/source/view/viewimp.hxx b/sfx2/source/view/viewimp.hxx
index ef919a2fd89f..00b7b51590fe 100644
--- a/sfx2/source/view/viewimp.hxx
+++ b/sfx2/source/view/viewimp.hxx
@@ -59,7 +59,6 @@ struct SfxViewShell_Impl
     bool m_bTiledSearching;
     static sal_uInt32 m_nLastViewShellId;
     const ViewShellId m_nViewShellId;
-    ViewShellDocId m_nDocId;
 
     explicit SfxViewShell_Impl(SfxViewShellFlags const nFlags);
     ~SfxViewShell_Impl();
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index ad46e704478f..dcbdc9ceef3a 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -228,9 +228,7 @@ SfxViewShell_Impl::SfxViewShell_Impl(SfxViewShellFlags 
const nFlags)
 ,   m_pLibreOfficeKitViewData(nullptr)
 ,   m_bTiledSearching(false)
 ,   m_nViewShellId(SfxViewShell_Impl::m_nLastViewShellId++)
-,   m_nDocId(-1)
-{
-}
+{}
 
 SfxViewShell_Impl::~SfxViewShell_Impl()
 {
@@ -1098,6 +1096,7 @@ SfxViewShell::SfxViewShell
 
 SfxViewShell::~SfxViewShell()
 {
+
     // Remove from list
     const SfxViewShell *pThis = this;
     SfxViewShellArr_Impl &rViewArr = SfxGetpApp()->GetViewShells_Impl();
@@ -1479,8 +1478,7 @@ void 
SfxViewShell::registerLibreOfficeKitViewCallback(LibreOfficeKitCallback pCa
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pViewShell->GetDocId() == GetDocId())
-            pViewShell->NotifyCursor(this);
+        pViewShell->NotifyCursor(this);
         pViewShell = SfxViewShell::GetNext(*pViewShell);
     }
 }
@@ -1575,17 +1573,6 @@ ViewShellId SfxViewShell::GetViewShellId() const
     return pImpl->m_nViewShellId;
 }
 
-void SfxViewShell::SetDocId(ViewShellDocId nId)
-{
-    assert(static_cast<int>(pImpl->m_nDocId) == -1);
-    pImpl->m_nDocId = nId;
-}
-
-ViewShellDocId SfxViewShell::GetDocId() const
-{
-    return pImpl->m_nDocId;
-}
-
 void SfxViewShell::NotifyOtherViews(int nType, const OString& rKey, const 
OString& rPayload)
 {
     SfxLokHelper::notifyOtherViews(this, nType, rKey, rPayload);
diff --git a/starmath/source/smmod.cxx b/starmath/source/smmod.cxx
index 93f27da82eef..32cd5550d9e5 100644
--- a/starmath/source/smmod.cxx
+++ b/starmath/source/smmod.cxx
@@ -139,9 +139,6 @@ void SmModule::ApplyColorConfigValues( const 
svtools::ColorConfig &rColorCfg )
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        // FIXME: What if pViewShell is for a different document,
-        // but OTOH Math is presumably never used through
-        // LibreOfficeKit, so maybe an irrelevant concern?
         if (dynamic_cast<const SmViewShell *>(pViewShell) != nullptr)
         {
             SmViewShell *pSmView = static_cast<SmViewShell *>(pViewShell);
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
index 1f642b5c9b3e..a3fabfaf514d 100644
--- a/sw/source/core/doc/docredln.cxx
+++ b/sw/source/core/doc/docredln.cxx
@@ -426,8 +426,7 @@ void 
SwRedlineTable::LOKRedlineNotification(RedlineNotification nType, SwRangeRe
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        if (pView && pView->GetDocId() == pViewShell->GetDocId())
-            pViewShell->libreOfficeKitViewCallback(nType == 
RedlineNotification::Modify ? LOK_CALLBACK_REDLINE_TABLE_ENTRY_MODIFIED : 
LOK_CALLBACK_REDLINE_TABLE_SIZE_CHANGED, aPayload.c_str());
+        pViewShell->libreOfficeKitViewCallback(nType == 
RedlineNotification::Modify ? LOK_CALLBACK_REDLINE_TABLE_ENTRY_MODIFIED : 
LOK_CALLBACK_REDLINE_TABLE_SIZE_CHANGED, aPayload.c_str());
         pViewShell = SfxViewShell::GetNext(*pViewShell);
     }
 }
commit 08febf86699fc1a1e69f32fb57f46ad84b8322b2
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Tue Jul 21 10:58:25 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jul 21 10:58:50 2020 +0200

    Revert "tdf#128502: Remove assertions that fire for gtktiledviewer ...
    
    on two docs"
    
    This reverts commit a84adccbd8cda66fd4d84c8443b0715820afd1da.
    We decided not to have this "multiple docs" feature in stable cp-6.2
    because it caused regressions that we could not fix quickly.
    
    Change-Id: I01de0740cafa27a2fd5e07dd3a3ebd223c64297f

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 7d686de0e4aa..c0e437b8f98d 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -5740,6 +5740,7 @@ void ScGridWindow::notifyKitCellViewCursor(const 
SfxViewShell* pForShell) const
     if (mpOOCursors) // cf. getCellCursor above
     {
         auto pForTabView = dynamic_cast<const ScTabViewShell *>(pForShell);
+        assert(pForTabView);
         if (!pForTabView)
             return;
         aCursor = pForTabView->GetViewData().describeCellCursorAt(
@@ -5776,6 +5777,7 @@ void ScGridWindow::updateKitOtherCursors() const
          it = SfxViewShell::GetNext(*it))
     {
         auto pOther = dynamic_cast<const ScTabViewShell *>(it);
+        assert(pOther);
         if (!pOther)
             continue;
         const ScGridWindow *pGrid = pOther->GetViewData().GetActiveWin();
@@ -6000,6 +6002,7 @@ void ScGridWindow::updateOtherKitSelections() const
          it = SfxViewShell::GetNext(*it))
     {
         auto pOther = dynamic_cast<const ScTabViewShell *>(it);
+        assert(pOther);
         if (!pOther)
             return;
 
commit 519b0805da405d14badbe314d855bc222c80776a
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Tue Jul 21 10:57:52 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jul 21 10:58:08 2020 +0200

    Revert "tdf#128502: Remove one more assertion"
    
    This reverts commit daebdc6928aff7c09f9e961ce11c38d5e636ed0b.
    We decided not to have this "multiple docs" feature in stable cp-6.2
    because it caused regressions that we could not fix quickly.
    
    Change-Id: I57928d615d03f850cae6b713eb6a0601a57c6e99

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index b1a002a332a4..7d686de0e4aa 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -5971,6 +5971,7 @@ void ScGridWindow::UpdateKitSelection(const 
std::vector<tools::Rectangle>& rRect
         if (it == pViewShell)
             continue;
         auto pOther = dynamic_cast<const ScTabViewShell *>(it);
+        assert(pOther);
         if (!pOther)
             return;
 
commit 47f8af9ca69d0bc7b0f200df447440750ade9464
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Tue Jul 21 10:56:31 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jul 21 10:57:13 2020 +0200

    Revert "Avoid crash with multiple documents open in the iOS app"
    
    This reverts commit 818a68cb259078fe2cc1ae1d82d3b854e49b24fe.
    We decided not to have this "multiple docs" feature in stable cp-6.2
    because it caused regressions that we could not fix quickly.
    
    Change-Id: I526b094d255a40d7b9427237ffdd86e3923e64ca

diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index e1efd7ca485e..5cdac44a46ab 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -505,13 +505,7 @@ void ScModelObj::paintTile( VirtualDevice& rDevice,
 {
     // There seems to be no clear way of getting the grid window for this
     // particular document, hence we need to hope we get the right window.
-    // FIXME: "hope"? Are you kidding me?
     ScViewData* pViewData = ScDocShell::GetViewData();
-
-    // FIXME
-    if (!pViewData)
-        return;
-
     ScGridWindow* pGridWindow = pViewData->GetActiveWin();
 
     // update the size of the area we are painting
commit 102520f3f309b7632992a30997d630db1ad9e754
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Tue Jul 21 10:55:45 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jul 21 10:56:00 2020 +0200

    Revert "Let's not run on hope"
    
    This reverts commit 6dd8180d046e88f95816d59701f78b2f81e1cb64.
    We decided not to have this "multiple docs" feature in stable cp-6.2
    because it caused regressions that we could not fix quickly.
    
    Change-Id: Ib2b6b5196221ef2ec16308cc79b245a2c8d6e7de

diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index b63a5d1cae06..e1efd7ca485e 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -503,14 +503,15 @@ void ScModelObj::paintTile( VirtualDevice& rDevice,
                             int nTilePosX, int nTilePosY,
                             long nTileWidth, long nTileHeight )
 {
-    ScTabViewShell* pViewShell = pDocShell->GetBestViewShell(false);
+    // There seems to be no clear way of getting the grid window for this
+    // particular document, hence we need to hope we get the right window.
+    // FIXME: "hope"? Are you kidding me?
+    ScViewData* pViewData = ScDocShell::GetViewData();
 
-    // FIXME: Can this happen? What should we do?
-    if (!pViewShell)
+    // FIXME
+    if (!pViewData)
         return;
 
-    ScViewData* pViewData = &pViewShell->GetViewData();
-
     ScGridWindow* pGridWindow = pViewData->GetActiveWin();
 
     // update the size of the area we are painting
commit 12fb7c85de84f573f2aa6705f4fd26e00cf86768
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Tue Jul 21 10:51:59 2020 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jul 21 10:53:25 2020 +0200

    Revert "tdf#128502: Fix (haha) for a crash with multiple docs ...
    
    open in the iOS app"
    
    This reverts commit 2768b5828df4b045c65c1fbfd724c8066761711a.
    We decided not to have this "multiple docs" feature in stable cp-6.2
    because it caused regressions that we could not fix quickly.
    
    Change-Id: If9c6002782bf76957ad384556152a173dd2c18cb

diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx
index 800bd162117a..2f78bfc1eaa5 100644
--- a/sfx2/source/view/lokhelper.cxx
+++ b/sfx2/source/view/lokhelper.cxx
@@ -422,10 +422,7 @@ void 
SfxLokHelper::notifyDocumentSizeChangedAllViews(vcl::ITiledRenderable* pDoc
     SfxViewShell* pViewShell = SfxViewShell::GetFirst();
     while (pViewShell)
     {
-        // FIXME: What if SfxViewShell::Current() returned null?
-        // Should we then do this for all views of all open documents
-        // or not?
-        if (pCurrentViewShell == nullptr || pViewShell->GetDocId() == 
pCurrentViewShell-> GetDocId())
+        if (pViewShell->GetDocId() == pCurrentViewShell-> GetDocId())
             SfxLokHelper::notifyDocumentSizeChanged(pViewShell, "", pDoc, 
bInvalidateAll);
         pViewShell = SfxViewShell::GetNext(*pViewShell);
     }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to