[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - desktop/qa desktop/source include/vcl sc/inc sc/source
Michael Meeks (via logerrit)
logerrit at kemper.freedesktop.org
Sun May 17 22:06:36 UTC 2020
desktop/qa/desktop_lib/test_desktop_lib.cxx | 2 -
desktop/source/lib/init.cxx | 40 +-------------------
include/vcl/ITiledRenderable.hxx | 8 +---
sc/inc/docuno.hxx | 5 --
sc/source/ui/inc/gridwin.hxx | 9 +---
sc/source/ui/inc/viewdata.hxx | 4 ++
sc/source/ui/unoobj/docuno.cxx | 5 +-
sc/source/ui/view/gridwin.cxx | 54 +---------------------------
sc/source/ui/view/viewdata.cxx | 31 ++++++++++++++++
9 files changed, 49 insertions(+), 109 deletions(-)
New commits:
commit b703ac70fca000dc9e45f2faad33996305ca8ecf
Author: Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Tue Dec 3 10:55:35 2019 +0000
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Mon May 18 00:05:54 2020 +0200
lok: cleanup getCellCursor
Switching the zoom is no longer necessary - we now have a known
and fixed zoom per view now (as the core has), that saves some
complexity.
Change-Id: I14c952ca1e06fae016faa8b6ee07115c56312ed6
Reviewed-on: https://gerrit.libreoffice.org/84372
Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
Tested-by: Michael Meeks <michael.meeks at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94392
Tested-by: Tor Lillqvist <tml at collabora.com>
Reviewed-by: Tor Lillqvist <tml at collabora.com>
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index ad75b751a190..9ce44aacafc7 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -825,7 +825,7 @@ void DesktopLOKTest::testCellCursor()
OString aRectangle(aTree.get<std::string>("commandValues").c_str());
// cell cursor geometry + col + row
- CPPUNIT_ASSERT_EQUAL(OString("0, 0, 1279, 255, 0, 0"), aRectangle);
+ CPPUNIT_ASSERT_EQUAL(OString("0, 0, 1274, 254, 0, 0"), aRectangle);
}
void DesktopLOKTest::testCommandResult()
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 1fd899a61829..c08baee81358 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -4848,44 +4848,8 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
SetLastExceptionMsg("Document doesn't support tiled rendering");
return nullptr;
}
-
- // Command has parameters.
- int nOutputWidth = 0;
- int nOutputHeight = 0;
- long nTileWidth = 0;
- long nTileHeight = 0;
- if (aCommand.getLength() > aCellCursor.getLength())
- {
- OString aArguments = aCommand.copy(aCellCursor.getLength() + 1);
- sal_Int32 nParamIndex = 0;
- do
- {
- OString aParamToken = aArguments.getToken(0, '&', nParamIndex);
- sal_Int32 nIndex = 0;
- OString aKey;
- OString aValue;
- do
- {
- OString aToken = aParamToken.getToken(0, '=', nIndex);
- if (!aKey.getLength())
- aKey = aToken;
- else
- aValue = aToken;
- }
- while (nIndex >= 0);
- if (aKey == "outputWidth")
- nOutputWidth = aValue.toInt32();
- else if (aKey == "outputHeight")
- nOutputHeight = aValue.toInt32();
- else if (aKey == "tileWidth")
- nTileWidth = aValue.toInt64();
- else if (aKey == "tileHeight")
- nTileHeight = aValue.toInt64();
- }
- while (nParamIndex >= 0);
- }
-
- return convertOString(pDoc->getCellCursor(nOutputWidth, nOutputHeight, nTileWidth, nTileHeight));
+ // Ignore command's deprecated parameters.
+ return convertOString(pDoc->getCellCursor());
}
else if (aCommand.startsWith(aFontSubset))
{
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
index e26c1387b6e1..163be5f55213 100644
--- a/include/vcl/ITiledRenderable.hxx
+++ b/include/vcl/ITiledRenderable.hxx
@@ -175,13 +175,11 @@ public:
}
/**
- * Get position and size of cell cursor in Calc.
+ * Get position and size of cell cursor in Calc - as JSON in the
+ * current' views' co-ordinate system.
* (This could maybe also be used for tables in Writer/Impress in future?)
*/
- virtual OString getCellCursor(int /*nOutputWidth*/,
- int /*nOutputHeight*/,
- long /*nTileWidth*/,
- long /*nTileHeight*/)
+ virtual OString getCellCursor()
{
return OString();
}
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index 46461142af3d..f2adcda7a80f 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -367,10 +367,7 @@ public:
virtual OUString getRowColumnHeaders(const tools::Rectangle& rRectangle) override;
/// @see vcl::ITiledRenderable::getCellCursor().
- virtual OString getCellCursor( int nOutputWidth,
- int nOutputHeight,
- long nTileWidth,
- long nTileHeight ) override;
+ virtual OString getCellCursor() override;
/// @see vcl::ITiledRenderable::getPointer().
virtual PointerStyle getPointer() override;
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index bd4ca07159c5..c56eca68895c 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -430,13 +430,8 @@ public:
void UpdateShrinkOverlay();
void UpdateAllOverlays();
- /// @see ScModelObj::getCellCursor().
- OString getCellCursor(const Fraction& rZoomX,
- const Fraction& rZoomY) const;
- OString getCellCursor(int nOutputWidth,
- int nOutputHeight,
- long nTileWidth,
- long nTileHeight);
+ /// get Cell cursor in this view's co-ordinate system @see ScModelObj::getCellCursor().
+ OString getCellCursor() const;
void updateLibreOfficeKitCellCursor(const SfxViewShell* pOtherShell) const;
/// Same as MouseButtonDown(), but coordinates are in logic unit.
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index a01720498893..162ff01492ea 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -599,6 +599,10 @@ public:
Point GetScrPos( SCCOL nWhereX, SCROW nWhereY, ScHSplitPos eWhich ) const;
Point GetScrPos( SCCOL nWhereX, SCROW nWhereY, ScVSplitPos eWhich ) const;
+ /// return json for our cursor position.
+ OString describeCellCursor() const { return describeCellCursorAt(GetCurX(), GetCurY()); }
+ OString describeCellCursorAt(SCCOL nCol, SCROW nRow) const;
+
SCCOL CellsAtX( SCCOL nPosX, SCCOL nDir, ScHSplitPos eWhichX, sal_uInt16 nScrSizeY = SC_SIZE_NONE ) const;
SCROW CellsAtY( SCROW nPosY, SCROW nDir, ScVSplitPos eWhichY, sal_uInt16 nScrSizeX = SC_SIZE_NONE ) const;
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 6cd831b802bc..6113506648e8 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -902,8 +902,7 @@ OUString ScModelObj::getRowColumnHeaders(const tools::Rectangle& rRectangle)
return pTabView->getRowColumnHeaders(rRectangle);
}
-OString ScModelObj::getCellCursor( int nOutputWidth, int nOutputHeight,
- long nTileWidth, long nTileHeight )
+OString ScModelObj::getCellCursor()
{
SolarMutexGuard aGuard;
@@ -916,7 +915,7 @@ OString ScModelObj::getCellCursor( int nOutputWidth, int nOutputHeight,
if (!pGridWindow)
return OString();
- return "{ \"commandName\": \".uno:CellCursor\", \"commandValues\": \"" + pGridWindow->getCellCursor( nOutputWidth, nOutputHeight, nTileWidth, nTileHeight ) + "\" }";
+ return "{ \"commandName\": \".uno:CellCursor\", \"commandValues\": \"" + pGridWindow->getCellCursor() + "\" }";
}
PointerStyle ScModelObj::getPointer()
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 9219bc896e1a..78371c7eb53d 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -5697,68 +5697,20 @@ bool ScGridWindow::InsideVisibleRange( SCCOL nPosX, SCROW nPosY )
return maVisibleRange.isInside(nPosX, nPosY);
}
-// Use the same zoom calculations as in paintTile - this
-// means the client can ensure they can get the correct
-// cursor corresponding to their current tile sizings.
-OString ScGridWindow::getCellCursor( int nOutputWidth, int nOutputHeight,
- long nTileWidth, long nTileHeight )
-{
- Fraction zoomX(long(nOutputWidth * TWIPS_PER_PIXEL), nTileWidth);
- Fraction zoomY(long(nOutputHeight * TWIPS_PER_PIXEL), nTileHeight);
- return getCellCursor(zoomX, zoomY);
-}
-
-OString ScGridWindow::getCellCursor(const Fraction& rZoomX, const Fraction& rZoomY) const
+OString ScGridWindow::getCellCursor() const
{
// GridWindow stores a shown cell cursor in mpOOCursors, hence
// we can use that to determine whether we would want to be showing
// one (client-side) for tiled rendering too.
if (!mpOOCursors)
- {
return "EMPTY";
- }
-
- SCCOL nX = pViewData->GetCurX();
- SCROW nY = pViewData->GetCurY();
-
- Fraction defaultZoomX = pViewData->GetZoomX();
- Fraction defaultZoomY = pViewData->GetZoomY();
-
- pViewData->SetZoom(rZoomX, rZoomY, true);
-
- Point aScrPos = pViewData->GetScrPos( nX, nY, eWhich, true );
- long nSizeXPix;
- long nSizeYPix;
- pViewData->GetMergeSizePixel( nX, nY, nSizeXPix, nSizeYPix );
-
- double fPPTX = pViewData->GetPPTX();
- double fPPTY = pViewData->GetPPTY();
-
- // make it a slim cell cursor, but not empty
- if (nSizeXPix == 0)
- nSizeXPix = 1;
-
- if (nSizeYPix == 0)
- nSizeYPix = 1;
-
- long nPosXTw = rtl::math::round(aScrPos.getX() / fPPTX);
- long nPosYTw = rtl::math::round(aScrPos.getY() / fPPTY);
- // look at Rectangle( const Point& rLT, const Size& rSize ) for the '- 1'
- long nSizeXTw = rtl::math::round(nSizeXPix / fPPTX) - 1;
- long nSizeYTw = rtl::math::round(nSizeYPix / fPPTY) - 1;
-
- std::stringstream ss;
- ss << nPosXTw << ", " << nPosYTw << ", " << nSizeXTw << ", " << nSizeYTw << ", "
- << nX << ", " << nY;
-
- pViewData->SetZoom(defaultZoomX, defaultZoomY, true);
- return ss.str().c_str();
+ return pViewData->describeCellCursor();
}
void ScGridWindow::updateLibreOfficeKitCellCursor(const SfxViewShell* pOtherShell) const
{
- OString aCursor = getCellCursor(pViewData->GetZoomX(), pViewData->GetZoomY());
+ OString aCursor = getCellCursor();
ScTabViewShell* pViewShell = pViewData->GetViewShell();
if (pOtherShell)
{
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index c740e7465769..d10e1d8be8ed 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2207,6 +2207,37 @@ Point ScViewData::GetScrPos( SCCOL nWhereX, SCROW nWhereY, ScSplitPos eWhich,
return Point( nScrPosX, nScrPosY );
}
+OString ScViewData::describeCellCursorAt(SCCOL nX, SCROW nY) const
+{
+ Point aScrPos = GetScrPos( nX, nY, SC_SPLIT_BOTTOMRIGHT, true );
+
+ long nSizeXPix;
+ long nSizeYPix;
+ GetMergeSizePixel( nX, nY, nSizeXPix, nSizeYPix );
+
+ double fPPTX = GetPPTX();
+ double fPPTY = GetPPTY();
+
+ // make it a slim cell cursor, but not empty
+ if (nSizeXPix == 0)
+ nSizeXPix = 1;
+
+ if (nSizeYPix == 0)
+ nSizeYPix = 1;
+
+ long nPosXTw = rtl::math::round(aScrPos.getX() / fPPTX);
+ long nPosYTw = rtl::math::round(aScrPos.getY() / fPPTY);
+ // look at Rectangle( const Point& rLT, const Size& rSize ) for the '- 1'
+ long nSizeXTw = rtl::math::round(nSizeXPix / fPPTX) - 1;
+ long nSizeYTw = rtl::math::round(nSizeYPix / fPPTY) - 1;
+
+ std::stringstream ss;
+ ss << nPosXTw << ", " << nPosYTw << ", " << nSizeXTw << ", " << nSizeYTw << ", "
+ << nX << ", " << nY;
+
+ return ss.str().c_str();
+}
+
// Number of cells on a screen
SCCOL ScViewData::CellsAtX( SCCOL nPosX, SCCOL nDir, ScHSplitPos eWhichX, sal_uInt16 nScrSizeX ) const
{
More information about the Libreoffice-commits
mailing list