Bug 147487

Summary: Drawing a shape using the same coordinates gives different visual output depending on cell grid size
Product: LibreOffice Reporter: Mike Kaganski <mikekaganski>
Component: CalcAssignee: Not Assigned <libreoffice-bugs>
Status: NEW ---    
Severity: normal CC: kelemeng, thb
Priority: medium Keywords: bibisected, bisected, regression
Version: 6.3.0.4 release   
Hardware: All   
OS: All   
URL: https://forumooo.ru/index.php/topic,9043.0.html
See Also: https://bugs.documentfoundation.org/show_bug.cgi?id=147490
Whiteboard:
Crash report or crash signature: Regression By: Armin Le Grand
Bug Depends on:    
Bug Blocks: 128256    
Attachments: A sample with macros to change cell size and draw a rectangle

Description Mike Kaganski 2022-02-17 08:53:01 UTC
Created attachment 178340 [details]
A sample with macros to change cell size and draw a rectangle

Open the attachment. Click on [ Draw ] button, see the new rectangle. Press [ 500x500 ] button (see the cells taking a different size), then press [ Draw ] button. See how the second rectangle does not match the older one.

Reproducible both on Windows and Ubuntu, including current master; does not depend on Skia.

This happens after https://git.libreoffice.org/core/+/d464d505fbf6e53a38afdd3661d320fac8c760d6

> author	Armin Le Grand <Armin.Le.Grand@cib.de>	Fri Oct 12 11:13:09 2018 +0200
> 
> Refactor calc non-linear ViewToDevice transform
Comment 1 Armin Le Grand 2022-02-21 10:20:45 UTC
It's a refresh problem: If you change zoom slightly (e.g. to 90% and back) you see the two objects snapping to same place. I guess macro creation somehow may not yet use the tooling introduced by the mentioned change to solve the non-linear transformation space problem, so it may be necessary to add taking that in account there.
Due to solving a system-imminent problem in calc (that we derived unfortunately) and not being able to forsee all places that may need to be adapted I see this not as regression. Without that now available correction tooling it just looks the same because the same error is done on both objects.