diff options
Diffstat (limited to 'editeng/source/editeng')
-rw-r--r-- | editeng/source/editeng/editview.cxx | 7 | ||||
-rw-r--r-- | editeng/source/editeng/impedit.cxx | 17 |
2 files changed, 20 insertions, 4 deletions
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index 51d9cd42d3b9..ee6a864f5394 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -1361,4 +1361,11 @@ void EditView::SetCursorLogicPosition(const Point& rPosition, bool bPoint, bool ShowCursor(/*bGotoCursor=*/false); } +void EditView::DrawSelection(OutlinerViewShell* pOtherShell) +{ + pImpEditView->RegisterOtherShell(pOtherShell); + pImpEditView->DrawSelection(); + pImpEditView->RegisterOtherShell(nullptr); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index 3fa2b5111d37..83a8e352943c 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -375,8 +375,8 @@ void ImpEditView::DrawSelection( EditSelection aTmpSel, vcl::Region* pRegion, Ou aOrigin = pOutWin->GetMapMode().GetOrigin(); OString sRectangle; - // If we are not in selection mode, then the exported selection should be empty. - if (pEditEngine->pImpEditEngine->IsInSelectionMode()) + // If we are not in selection mode, then the exported own selection should be empty. + if (pEditEngine->pImpEditEngine->IsInSelectionMode() || mpOtherShell) { std::vector<Rectangle> aRectangles; pRegion->GetRegionRectangles(aRectangles); @@ -412,8 +412,17 @@ void ImpEditView::DrawSelection( EditSelection aTmpSel, vcl::Region* pRegion, Ou sRectangle = comphelper::string::join("; ", v); } - mpViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, sRectangle.getStr()); - mpViewShell->NotifyOtherViews(LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", sRectangle); + if (mpOtherShell) + { + // An other shell wants to know about our existing selection. + if (mpViewShell != mpOtherShell) + mpViewShell->NotifyOtherView(mpOtherShell, LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", sRectangle); + } + else + { + mpViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, sRectangle.getStr()); + mpViewShell->NotifyOtherViews(LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", sRectangle); + } pOutWin->Pop(); } |