Bug 160589 - Charts are not updated after data entry if freezing of columns is activated
Summary: Charts are not updated after data entry if freezing of columns is activated
Status: VERIFIED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Calc (show other bugs)
Version:
(earliest affected)
24.2.0.0 alpha1+
Hardware: x86-64 (AMD64) All
: medium normal
Assignee: Armin Le Grand
URL:
Whiteboard: target:24.8.0
Keywords: bibisected, bisected, regression
Depends on:
Blocks:
 
Reported: 2024-04-08 17:11 UTC by Jürgen Kirsten
Modified: 2024-04-20 19:55 UTC (History)
3 users (show)

See Also:
Crash report or crash signature:


Attachments
Sample file with several charts - with and without frozen columns/rows (127.36 KB, application/vnd.oasis.opendocument.spreadsheet)
2024-04-08 17:11 UTC, Jürgen Kirsten
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jürgen Kirsten 2024-04-08 17:11:32 UTC
Created attachment 193574 [details]
Sample file with several charts - with and without frozen columns/rows

Charts should always update immediately when the data changes, without another command being executed.

If column freezing or row freezing or both are used on a worksheet, the data is only updated after using "Recalculate" F9, or after changing the worksheet or scrolling to another cell range.

If you have several charts on a worksheet with frozen columns and you click on one of the charts and then click again in a cell, this chart is updated immediately. The second chart will not. If you switch worksheets and return, all charts will not be updated immediately.

I have not noticed the same behavior under Linux. After entering data and pressing Enter, the program was not updated immediately. However, if you made a second movement with the cursor keys, it was then updated.

My System:
Version: 24.2.0.1 (X86_64) / LibreOffice Community
Build ID: b4d45829793cddfe67b58a53f495528c75738d8a
CPU threads: 8; OS: Windows 10.0 Build 22631; UI render: Skia/Vulkan; VCL: win
Locale: en-US (de_DE); UI: en-US
Calc: threaded

My tests under LO 7.6.6.3 or older behaved normally. Immediate update!
Comment 1 Robert Großkopf 2024-04-08 19:00:45 UTC
Have changed the value in C3 of first table from 25 to 40.
Refreshes immediately in 
Version: 7.6.4.1 (X86_64) / LibreOffice Community
Build ID: e19e193f88cd6c0525a17fb7a176ed8e6a3e2aa1
CPU threads: 6; OS: Linux 6.4; UI render: default; VCL: kf5 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Calc: threaded

Doesn't refresh in LO 24.2.2.2 on the same system (OpenSUSE 14.6 64bit rpm Linux). Have to press F9 to recalculate.

Set this one to NEW and regression
Comment 2 Kira Tubo 2024-04-10 02:05:11 UTC
To help narrow down the issue, it seems that the bug occurs when freezing the column (bug does not occur if only the row is frozen). To simplify into steps: 

1. Open Calc
2. Add a table with data (or copy the table from attachment 193574 [details])
3. Select whole table
4. Insert > Chart > Finish
5. Select B2
6. View > Freeze Rows and Columns OR View > Freeze Cells > Freeze First Column
7. Edit B2 with a new number and press Enter

Expected results: Chart updates when values of table are changed and columns are frozen

Actual results: Chart does not update when values of table are changed and columns are frozen

Version: 24.8.0.0.alpha0+ (X86_64) / LibreOffice Community
Build ID: 806362b915ee89a4f907905a8ac8c1527ea99223
CPU threads: 6; OS: Windows 10.0 Build 22631; UI render: Skia/Raster; VCL: win
Locale: en-US (en_US); UI: en-US
Calc: CL threaded
Comment 3 Kira Tubo 2024-04-10 02:27:55 UTC
Bibisected win64-24.2. Added Armin Le Grand to cc. 

This commit is the first instance in which the bug occurs:
https://git.libreoffice.org/core/+/596c53b06cbb33d312d58572b61e966e913109f3

commit 596c53b06cbb33d312d58572b61e966e913109f3	[log]
author	Armin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de>	Thu Nov 30 15:33:07 2023 +0100
committer	Armin Le Grand <Armin.Le.Grand@me.com>	Thu Nov 30 19:52:41 2023 +0100
tree 6e95df2c77d7eca4dae31828abcb3b3b2d99415a
parent 96b15a13e9654b399e63661c66df3df6069a6f8f [diff]

-------------

Version: 24.2.0.0.alpha1+ (X86_64) / LibreOffice Community
Build ID: 596c53b06cbb33d312d58572b61e966e913109f3
CPU threads: 6; OS: Windows 10.0 Build 22631; UI render: Skia/Raster; VCL: win
Locale: en-US (en_US); UI: en-US
Calc: CL threaded
Comment 4 Armin Le Grand 2024-04-16 12:49:49 UTC
Taking a look...
Comment 5 Armin Le Grand 2024-04-16 12:55:13 UTC
Could not reproduce with
Version: 24.8.0.0.alpha0+ (X86_64) / LibreOffice Community
Build ID: b99082e4f3d4e4d13433ca062ba98da7cd14aa9a
CPU threads: 16; OS: Linux 6.5; UI render: default; VCL: gtk3
Locale: en-US (en_US.UTF-8); UI: en-US
Calc: threaded
continue trying...
Comment 6 Armin Le Grand 2024-04-16 13:10:26 UTC
After step (4) from comment 2 I have no menu anymore in calc -> cannot continue (?)

In the 'Row' button in the toolbar I could use 'Freeze first row'. Update still works. Used UNDO to revert that freeze, but it's NOT in the UNDO -> chart gets removed (?). So used REDO to get back to the chart -> LO cashed (?)

Found a way to keep the menu: after insert chart, do not immediately click besides the chart to deactivate OLE, but once on the chart and then besides. Could now reproduce a situation where update is missing.

Update happens as soon as i move the cursor one more cell. Update always happens when using mouse to end the input. Update also happens when zooming in/out slightly -> update problem (?)
Comment 7 Armin Le Grand 2024-04-16 14:25:33 UTC
Looks like the check in ScOutputData::DrawSelectiveObjects if for mpDev a PaintWindow is registered can fail. That can happen when ScGridWindow::DrawContent called ScOutputData::SetContentDevice with the result of SdrPaintWindow::GetTargetOutputDevice(). This is because that may return a pre-render device, so THAT OutDev will not e one registered using a PageWindow.

In that case, the workaround I added https://gerrit.libreoffice.org/c/core/+/160155 is triggered unwanted.

Thought about different possibilities to avoid that. Unfortunately that area with SdrPaitView/PageWindpw/PaintWindow is highly complex. It is only needed in Calc when views get split anyways, s a candidate for some rework - but not now.

I now remember the OriginalTargetDevice when the ScOutputData gets created. That pt is not changed, so should be safe for comparisons with PaintWindow. This is the safest solution I could find for now.
Comment 8 Armin Le Grand 2024-04-16 14:27:43 UTC
Solution on https://gerrit.libreoffice.org/c/core/+/166151, lets see what the UTs say...
Comment 9 Commit Notification 2024-04-16 16:13:08 UTC
Armin Le Grand (allotropia) committed a patch related to this issue.
It has been pushed to "master":

https://git.libreoffice.org/core/commit/1e1a3825d76ed8071424e8e21bbda23464c10fff

tdf#160589: compare the correct OutDev with PageWindows

It will be available in 24.8.0.

The patch should be included in the daily builds available at
https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
https://wiki.documentfoundation.org/Testing_Daily_Builds

Affected users are encouraged to test the fix and report feedback.
Comment 10 Jürgen Kirsten 2024-04-19 13:24:46 UTC
Hello Armin,

I have tested again under Daily Build from 2024-Apr-17 02:50:

Version: 24.8.0.0.alpha0+ (X86_64) / LibreOffice Community
Build ID: 0957ee9f5d379c80fca4027c187b471118d0490d
CPU threads: 8; OS: Windows 10.0 Build 22631; UI render: Skia/Vulkan; VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: threaded

Everything is running fine. The charts are updated immediately!
Thank you for your great job!
Comment 11 Kira Tubo 2024-04-20 01:15:27 UTC
(In reply to Jürgen Kirsten from comment #10)
> Everything is running fine. The charts are updated immediately!
> Thank you for your great job!

Closing this issue as RESOVLVED FIXED since original poster confirmed the fix. Great job Armin!