summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorArmin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de>2025-02-24 15:33:16 +0100
committerThorsten Behrens <thorsten.behrens@allotropia.de>2025-03-02 19:32:14 +0100
commit7c483a0d5287de5eb0face12d02673a50f656633 (patch)
tree3631c62fa21c98f641ff7e7144a80f139acecbe5 /editeng
parent83579ee9f1312d71fb223fff2dee19c616fd87f2 (diff)
Avoid slight jumping of TextEdit on activation
A PixelSnap was used before using GetOutputDevice() and LogicToPixel/PixelToLogic (what was incorrect, would need to take care of 1/2 pixel in logic for rounding). We do not need that anymore, in fact it leads to the text slightly 'jumping' around by up to 1 pixel (of course). We paint text nowadays using decomposed TextPrimitives with sub-pixel precision and similar (using a shortcut) for text in TextEdit on the Overlay, also using sub-pixel precision. Just remove this to avoid Text being displayed different in TextEdit and EditView paint visualizations and assign given value to OutputArea unchanged. If this should cause problems somewhere (I do not think so, we try to paint text with Sub-Pixel quality now anyways) this can also be done in alternative ways and only for TextEdit on Overlay. Change-Id: If177ceec880a29a6d102ad4f0dddf891d95b69c2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182094 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
Diffstat (limited to 'editeng')
-rw-r--r--editeng/source/editeng/impedit.cxx18
1 files changed, 13 insertions, 5 deletions
diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx
index f67073380470..337183d04ac3 100644
--- a/editeng/source/editeng/impedit.cxx
+++ b/editeng/source/editeng/impedit.cxx
@@ -858,11 +858,19 @@ weld::Widget* ImpEditView::GetPopupParent(tools::Rectangle& rRect) const
void ImpEditView::SetOutputArea( const tools::Rectangle& rRect )
{
- const OutputDevice& rOutDev = GetOutputDevice();
- // should be better be aligned on pixels!
- tools::Rectangle aNewRect(rOutDev.LogicToPixel(rRect));
- aNewRect = rOutDev.PixelToLogic(aNewRect);
- maOutputArea = aNewRect;
+ // Here a PixelSnap was used before using GetOutputDevice() and
+ // LogicToPixel/PixelToLogic (what was incorrect, would need
+ // to take care of 1/2 pixel in logic for rounding). We do not
+ // need that anymore, in fact it leads to text slightly
+ // 'jumping' around by up to 1 pixel (of course).
+ // We paint text nowadays using decomposed TextPrimitives
+ // with sub-pixel precision and similar (using a shortcut)
+ // for text in TextEdit on the Overlay, also using sub-pixel
+ // precision. Just remove this to avoid Text being displayed
+ // different in TextEdit and EditView paint visualizations
+ // and assign given value to OutputArea unchanged.
+ maOutputArea = rRect;
+
if (!maOutputArea.IsWidthEmpty() && maOutputArea.Right() < maOutputArea.Left())
maOutputArea.SetRight(maOutputArea.Left());
if (!maOutputArea.IsHeightEmpty() && maOutputArea.Bottom() < maOutputArea.Top())