Skip to content

Viewport shift on offset recalc - #812

Closed
hannesa2 wants to merge 2 commits into
masterfrom
viewport-shift-on-offset-recalc
Closed

Viewport shift on offset recalc#812
hannesa2 wants to merge 2 commits into
masterfrom
viewport-shift-on-offset-recalc

Conversation

@hannesa2

@hannesa2 hannesa2 commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

It's just a copy of #812 to see if CI is working properly

The pan is stored in the touch matrix as a pixel translation, while the
value-to-pixel scale is derived from the content rect. Resizing the content
rect therefore makes the same pixel translation denote a different value,
sliding the visible range.

This is most visible after a zoom gesture: BarLineChartTouchListener defers
chart.calculateOffsets() to ACTION_UP, so a y-zoom that widens the y-axis
labels resizes the content rect only once the gesture ends, and the chart
jumps sideways. The same happens when a fling settles, via computeScroll().

Scale the translation by the same ratio as the content rect so the visible
range survives the resize. The visible extent is unaffected: it is
(axis range / touch scale), which does not depend on the content width.
Adds two instrumented tests covering the viewport preservation fix in
ViewPortHandler.restrainViewPort (PR #811). These must run on a device
because the library's JVM unit tests stub android.graphics and cannot
exercise the real Matrix math the fix depends on.

The first test reproduces a real-world scenario: deeply zoomed/panned
viewport, then content rect resize (from y-axis label growth). It verifies
the visible x-range is preserved and reconstructs the pre-fix behavior to
show it would shift ~83 x-units on a 3600-unit range.

The second test asserts the pan ratios (transX/contentWidth,
transY/contentHeight) are preserved across the resize.

Also updates chartLib/build.gradle.kts to add androidTest dependencies.
@hannesa2
hannesa2 marked this pull request as draft July 28, 2026 14:06
@hannesa2 hannesa2 closed this Jul 28, 2026
@hannesa2
hannesa2 deleted the viewport-shift-on-offset-recalc branch July 28, 2026 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants