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