tdf#165706: Fix visualization of MultiFirmControls in EditMode

'Simple' FormControls were rendered correctly with SDPR
active, but 'Multi' FormControls did not. Found an error
regarding use of MapModes in that drawing code below in
vcl that did not handle an evtl. set MapMode, corrected
that.

Change-Id: I51d7318c2950b7d70e3064ba628909cb17416bae
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183196
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
This commit is contained in:
Armin Le Grand (Collabora)
2025-03-21 11:29:49 +01:00
committed by Armin Le Grand
parent 08cce3e642
commit 6a7e2f4ba5

View File

@@ -1547,7 +1547,11 @@ void Window::ImplPaintToDevice( OutputDevice* i_pTargetOutDev, const Point& i_rP
nDeltaX = GetOutDev()->mnOutWidth - nDeltaX - pChild->GetOutDev()->mnOutWidth;
tools::Long nDeltaY = pChild->GetOutOffYPixel() - GetOutOffYPixel();
Point aPos( i_rPos );
Point aDelta( nDeltaX, nDeltaY );
// tdf#165706 those delta values are in pixels, but aPos copied from
// i_rPos *may* be in logical coordinates if a MapMode is set at
// i_pTargetOutDev. To not mix values of different coordinate systems
// it *needs* to be converted (which does nothing if no MapMode)
Point aDelta( i_pTargetOutDev->PixelToLogic( Point( nDeltaX, nDeltaY )) );
aPos += aDelta;
pChild->ImplPaintToDevice( i_pTargetOutDev, aPos );
}