summaryrefslogtreecommitdiff
path: root/editeng/source/editeng
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/source/editeng')
-rw-r--r--editeng/source/editeng/editview.cxx7
-rw-r--r--editeng/source/editeng/impedit.cxx17
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();
}