Summary: | Conditional formatting isn't updated when formula is updated (XLSX) | ||
---|---|---|---|
Product: | LibreOffice | Reporter: | Aron Budea <aron.budea> |
Component: | Calc | Assignee: | Not Assigned <libreoffice-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | markus.mohrhard, mikekaganski |
Priority: | medium | Keywords: | bibisected, bisected, regression |
Version: | 5.2.0.4 release | ||
Hardware: | All | ||
OS: | All | ||
See Also: | https://bugs.documentfoundation.org/show_bug.cgi?id=95437 | ||
Whiteboard: | target:6.1.0 target:6.0.2 target:5.4.6 | ||
Crash report or crash signature: | Regression By: | ||
Bug Depends on: | |||
Bug Blocks: | 113782 | ||
Attachments: | Sample XLSX |
Description
Aron Budea
2018-02-07 22:14:13 UTC
Created attachment 139679 [details]
Sample XLSX
Bibisected to the following commit using repo bibisect-win32-5.2. Adding Cc: to Markus Mohrhard. author Markus Mohrhard <markus.mohrhard@googlemail.com> 2016-03-26 13:11:53 +0100 committer Markus Mohrhard <markus.mohrhard@googlemail.com> 2016-03-26 16:59:20 +0100 switch to a listener based cond format update, tdf#95437 And the commit link: https://cgit.freedesktop.org/libreoffice/core/commit/?id=88a0c7d01b7dfd085a0569030f97cc7de0f0d106 It seems that when ScConditionEntry::StartListening() is called during XLSX import, the ranges aren't there yet. My idea is that in the following function: void CondFormat::finalizeImport() https://opengrok.libreoffice.org/xref/core/sc/source/filter/oox/condformatbuffer.cxx#1052 ...move the following line: mpFormat->SetRange(maModel.maRanges); ...so it precedes this one: maRules.forEachMem( &CondFormatRule::finalizeImport ); Based on a quick test that seems to fix the issue, but not sure if there's more to it. (In reply to Aron Budea from comment #4) > It seems that when ScConditionEntry::StartListening() is called during XLSX > import, the ranges aren't there yet. > > My idea is that in the following function: > void CondFormat::finalizeImport() > https://opengrok.libreoffice.org/xref/core/sc/source/filter/oox/ > condformatbuffer.cxx#1052 > > ...move the following line: > mpFormat->SetRange(maModel.maRanges); > > ...so it precedes this one: > maRules.forEachMem( &CondFormatRule::finalizeImport ); > > Based on a quick test that seems to fix the issue, but not sure if there's > more to it. I think it should fix all cases. XLSX does not allow some of the complicated formulas that would require us to move the formula calculation after the import. Aron Budea committed a patch related to this issue. It has been pushed to "master": http://cgit.freedesktop.org/libreoffice/core/commit/?id=26b51c9550ef300e7685fc41eb9cde4dbbc11265 for listeners the range needs to be set before the formula, tdf#115530 It will be available in 6.1.0. The patch should be included in the daily builds available at http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: http://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback. Aron Budea committed a patch related to this issue. It has been pushed to "libreoffice-6-0": http://cgit.freedesktop.org/libreoffice/core/commit/?id=2e06dfb831a93b8207cc4e0f43221ef5eeb1853b&h=libreoffice-6-0 for listeners the range needs to be set before the formula, tdf#115530 It will be available in 6.0.2. The patch should be included in the daily builds available at http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: http://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback. Markus Mohrhard committed a patch related to this issue. It has been pushed to "master": http://cgit.freedesktop.org/libreoffice/core/commit/?id=dc0cdf9396af7cd0d4517fac102a604b99834e68 add test for tdf#115530 It will be available in 6.1.0. The patch should be included in the daily builds available at http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: http://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback. Aron Budea committed a patch related to this issue. It has been pushed to "libreoffice-5-4": http://cgit.freedesktop.org/libreoffice/core/commit/?id=56e0895730fa289d72333d7b432122292e37b4c4&h=libreoffice-5-4 for listeners the range needs to be set before the formula, tdf#115530 It will be available in 5.4.6. The patch should be included in the daily builds available at http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: http://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback. |