RFR: 8198830: BarChart: auto-range of CategoryAxis not working on dynamically setting data
Markus Mack
mmack at openjdk.org
Thu Jun 27 20:26:45 UTC 2024
This PR fixes the placement of `BarChart` bars and category tick marks, particularly when adding data / multiple series and enabling animations.
It covers all cases mentioned in the JBS ticket and adds a unit test.
The settable `barGap` and `categoryGap` now should also behave as expected.
There's a change regarding consistent placement of bars when there is more than one series:
Now, for example, if there are two series S1 and S2, S1 bars will always be on the left and S2 bars will always be on the right side of the tick mark.
This means that if some data category (=x-value) is only present in S2, but not S1, the bar will still be drawn on the right. The previous behavior, if the marks weren't off completely, would have put it on the left which I'd say looks inconsistent.
There's a test for this situation as well.
Note this does not fix [JDK-8334873](https://bugs.openjdk.org/browse/JDK-8334873) where bars get stuck while having different widths. There seem to be additional issues which seem not directly related to the changed code and are probably out of scope for this PR (unless we see some regressions).
-------------
Commit messages:
- testTickMarksMatchBarPositionsAfterAnimation
- testBarPositionsWithMultipleIncompleteSeries
- BarChart: Fix bar position when there are missing data items in other series
- BarChart: Fix sign error in bar offset layout calculation
- CategoryAxis: Ensure requestAxisLayout is called and measureInvalid=true when animated properties change
Changes: https://git.openjdk.org/jfx/pull/1492/files
Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1492&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8198830
Stats: 119 lines in 3 files changed: 113 ins; 2 del; 4 mod
Patch: https://git.openjdk.org/jfx/pull/1492.diff
Fetch: git fetch https://git.openjdk.org/jfx.git pull/1492/head:pull/1492
PR: https://git.openjdk.org/jfx/pull/1492
More information about the openjfx-dev
mailing list