summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/view/gridwin.cxx50
1 files changed, 36 insertions, 14 deletions
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index d7c23d5696dc..cb5c6a3bab7f 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -5912,23 +5912,41 @@ static void updateLibreOfficeKitSelection(const ScViewData* pViewData, const std
return;
// selection start handle
- tools::Rectangle aStart(aBoundingBox.Left() / nPPTX, aBoundingBox.Top() / nPPTY,
- aBoundingBox.Left() / nPPTX, (aBoundingBox.Top() / nPPTY) + 256);
-
- // selection end handle
- tools::Rectangle aEnd(aBoundingBox.Right() / nPPTX, (aBoundingBox.Bottom() / nPPTY) - 256,
+ tools::Rectangle aRectangle(
+ aBoundingBox.Left() / nPPTX, aBoundingBox.Top() / nPPTY,
aBoundingBox.Right() / nPPTX, aBoundingBox.Bottom() / nPPTY);
// the selection itself
OString aSelection = comphelper::string::join("; ", aRectangles).getStr();
ScTabViewShell* pViewShell = pViewData->GetViewShell();
- pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION_START, aStart.toString().getStr());
- pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION_END, aEnd.toString().getStr());
+ pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_CELL_SELECTION_AREA, aRectangle.toString().getStr());
pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, aSelection.getStr());
SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", aSelection.getStr());
}
+namespace
+{
+
+void updateLibreOfficeKitAutoFill(const ScViewData* pViewData, tools::Rectangle const & rRectangle)
+{
+ if (!comphelper::LibreOfficeKit::isActive())
+ return;
+
+ double nPPTX = pViewData->GetPPTX();
+ double nPPTY = pViewData->GetPPTY();
+
+ // selection start handle
+ tools::Rectangle aLogicRectangle(
+ rRectangle.Left() / nPPTX, rRectangle.Top() / nPPTY,
+ rRectangle.Right() / nPPTX, rRectangle.Bottom() / nPPTY);
+
+ ScTabViewShell* pViewShell = pViewData->GetViewShell();
+ pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_CELL_AUTO_FILL_AREA, aLogicRectangle.toString().getStr());
+}
+
+} //end anonymous namespace
+
void ScGridWindow::UpdateCursorOverlay()
{
ScDocument* pDoc = pViewData->GetDocument();
@@ -6169,6 +6187,7 @@ void ScGridWindow::UpdateSelectionOverlay()
{
ScTabViewShell* pViewShell = pViewData->GetViewShell();
pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_TEXT_SELECTION, "EMPTY");
+ pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_CELL_SELECTION_AREA, "EMPTY");
SfxLokHelper::notifyOtherViews(pViewShell, LOK_CALLBACK_TEXT_VIEW_SELECTION, "selection", "EMPTY");
}
@@ -6199,9 +6218,11 @@ void ScGridWindow::UpdateAutoFillOverlay()
SCCOL nX = aAutoMarkPos.Col();
SCROW nY = aAutoMarkPos.Row();
- if (!maVisibleRange.isInside(nX, nY))
+ if (!maVisibleRange.isInside(nX, nY) && !comphelper::LibreOfficeKit::isActive())
+ {
// Autofill mark is not visible. Bail out.
return;
+ }
SCTAB nTab = pViewData->GetTabNo();
ScDocument* pDoc = pViewData->GetDocument();
@@ -6227,15 +6248,16 @@ void ScGridWindow::UpdateAutoFillOverlay()
tools::Rectangle aFillRect(aFillPos, aFillHandleSize);
// expand rect to increase hit area
- mpAutoFillRect = tools::Rectangle(aFillRect.Left() - fScaleFactor,
- aFillRect.Top() - fScaleFactor,
- aFillRect.Right() + fScaleFactor,
- aFillRect.Bottom() + fScaleFactor);
+ mpAutoFillRect = aFillRect;
+ mpAutoFillRect->expand(fScaleFactor);
// #i70788# get the OverlayManager safely
rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager = getOverlayManager();
-
- if (xOverlayManager.is() && !comphelper::LibreOfficeKit::isActive())
+ if (comphelper::LibreOfficeKit::isActive()) // notify the LibreOfficeKit
+ {
+ updateLibreOfficeKitAutoFill(pViewData, aFillRect);
+ }
+ else if (xOverlayManager.is())
{
Color aHandleColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
if (pViewData->GetActivePart() != eWhich)