diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2022-11-05 21:16:29 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2022-11-05 23:37:35 +0100 |
commit | 1b1a066b935158dc029939520c8fe70b029cb311 (patch) | |
tree | 037c031d6bda8dc59cd2fce809277ab72bca3d07 /starmath/source/view.cxx | |
parent | d90bf6f8c19d7c43ec83656a3a6f85a81aee573c (diff) |
lok: show Math selection
Change-Id: I950ae3e5fb000d6acec4c26ff143b918a4e48a27
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142342
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'starmath/source/view.cxx')
-rw-r--r-- | starmath/source/view.cxx | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx index 95a175081737..1bcfc0d3efc7 100644 --- a/starmath/source/view.cxx +++ b/starmath/source/view.cxx @@ -2324,10 +2324,28 @@ std::optional<OString> SmViewShell::getLOKPayload(int nType, int nViewId) const } return SfxLokHelper::makeVisCursorInvalidation(nViewId, sRectangle, false, {}); } - case LOK_CALLBACK_INVALIDATE_VIEW_CURSOR: case LOK_CALLBACK_TEXT_SELECTION: + { + OString sRectangle; + if (const SmGraphicWidget& widget = GetGraphicWidget(); widget.IsCursorVisible()) + { + SmCursor& rCursor = GetDoc()->GetCursor(); + OutputDevice& rOutDev = const_cast<SmGraphicWidget&>(widget).GetOutputDevice(); + tools::Rectangle aSelection = rCursor.GetSelectionRectangle(rOutDev); + if (!aSelection.IsEmpty()) + { + LokStarMathHelper helper(SfxViewShell::Current()); + tools::Rectangle aBounds = helper.GetBoundingBox(); + + aSelection.Move(aBounds.Left(), aBounds.Top()); + sRectangle = aSelection.toString(); + } + } + return sRectangle; + } case LOK_CALLBACK_TEXT_SELECTION_START: case LOK_CALLBACK_TEXT_SELECTION_END: + case LOK_CALLBACK_INVALIDATE_VIEW_CURSOR: case LOK_CALLBACK_TEXT_VIEW_SELECTION: return {}; } @@ -2342,6 +2360,10 @@ void SmViewShell::SendCaretToLOK() const libreOfficeKitViewCallbackWithViewId(LOK_CALLBACK_INVALIDATE_VISIBLE_CURSOR, payload->getStr(), nViewId); } + if (const auto& payload = getLOKPayload(LOK_CALLBACK_TEXT_SELECTION, nViewId)) + { + libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, payload->getStr()); + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |