use a ScopeGuard to restore the original map mode

in these cases the original map mode was *not* always restored,
but the intent seems to be like the others that the mapmode should
be the same on exit as on enter.

Change-Id: Id7b668a9977c4c84df5234288baca8bd6f4232e5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162307
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
Caolán McNamara
2024-01-19 14:52:24 +01:00
parent 49d502e801
commit 559489549f
+30 -24
View File
@@ -6192,10 +6192,16 @@ void ScGridWindow::DeleteCopySourceOverlay()
void ScGridWindow::UpdateCopySourceOverlay()
{
MapMode aDrawMode = GetDrawMapMode();
MapMode aOldMode = GetMapMode();
if ( aOldMode != aDrawMode )
SetMapMode( aDrawMode );
const MapMode aDrawMode = GetDrawMapMode();
const MapMode aOldMode = GetMapMode();
comphelper::ScopeGuard aMapModeGuard(
[&aOldMode, &aDrawMode, this] {
if (aOldMode != aDrawMode)
SetMapMode(aOldMode);
}
);
if (aOldMode != aDrawMode)
SetMapMode(aDrawMode);
DeleteCopySourceOverlay();
@@ -6246,9 +6252,6 @@ void ScGridWindow::UpdateCopySourceOverlay()
xOverlayManager->add(*pDashedBorder);
mpOOSelectionBorder->append(std::move(pDashedBorder));
}
if ( aOldMode != aDrawMode )
SetMapMode( aOldMode );
}
static std::vector<tools::Rectangle> convertPixelToLogical(
@@ -6439,10 +6442,16 @@ void ScGridWindow::UpdateCursorOverlay()
{
ScDocument& rDoc = mrViewData.GetDocument();
MapMode aDrawMode = GetDrawMapMode();
MapMode aOldMode = GetMapMode();
if ( aOldMode != aDrawMode )
SetMapMode( aDrawMode );
const MapMode aDrawMode = GetDrawMapMode();
const MapMode aOldMode = GetMapMode();
comphelper::ScopeGuard aMapModeGuard(
[&aOldMode, &aDrawMode, this] {
if (aOldMode != aDrawMode)
SetMapMode(aOldMode);
}
);
if (aOldMode != aDrawMode)
SetMapMode(aDrawMode);
// Existing OverlayObjects may be transformed in later versions.
// For now, just re-create them.
@@ -6601,9 +6610,6 @@ void ScGridWindow::UpdateCursorOverlay()
}
}
}
if ( aOldMode != aDrawMode )
SetMapMode( aOldMode );
}
void ScGridWindow::GetCellSelection(std::vector<tools::Rectangle>& rLogicRects)
@@ -6706,9 +6712,6 @@ void ScGridWindow::UpdateSelectionOverlay()
ScInputHandler::SendReferenceMarks(pViewShell, aReferenceMarks);
}
}
if ( aOldMode != aDrawMode )
SetMapMode( aOldMode );
}
void ScGridWindow::UpdateHighlightOverlay()
@@ -6774,10 +6777,16 @@ void ScGridWindow::DeleteAutoFillOverlay()
void ScGridWindow::UpdateAutoFillOverlay()
{
MapMode aDrawMode = GetDrawMapMode();
MapMode aOldMode = GetMapMode();
if ( aOldMode != aDrawMode )
SetMapMode( aDrawMode );
const MapMode aDrawMode = GetDrawMapMode();
const MapMode aOldMode = GetMapMode();
comphelper::ScopeGuard aMapModeGuard(
[&aOldMode, &aDrawMode, this] {
if (aOldMode != aDrawMode)
SetMapMode(aOldMode);
}
);
if (aOldMode != aDrawMode)
SetMapMode(aDrawMode);
DeleteAutoFillOverlay();
@@ -6856,9 +6865,6 @@ void ScGridWindow::UpdateAutoFillOverlay()
mpOOAutoFill.reset(new sdr::overlay::OverlayObjectList);
mpOOAutoFill->append(std::move(pOverlay));
}
if ( aOldMode != aDrawMode )
SetMapMode( aOldMode );
}
void ScGridWindow::DeleteDragRectOverlay()