Scroll transitions would only apply to discrete, indirect scrolling
initiated by a mouse wheel. It doesn't apply when the user is directly
in control of the scroll motion, for example by dragging the scroll
bar, using a high-resolution continuous mouse wheel, a trackpad, or a
touchscreen.

On Mon, Sep 7, 2026 at 10:29 PM Christopher Schnick <[email protected]> wrote:
>
> Would this only affect how scroll events from the mouse or gestures are
> handled, or does it also apply for when you drag the scrollbar?
>
> On 07/09/2026 22:24, Marius Hanl wrote:
> > I like this idea.
> > With your proposed interface, is it possible that the complete logic
> > is handled inside the ScrollTransition, e.g. all the ScrollPane need
> > to do is call a method on ScrollTransition?
> >
> > Just wondering how much the ScrollPane need to "know" about the
> > transitions, so need code to account for that (or maybe for all
> > possible cases), or the changes are more concentrated on the
> > ScrollTransition itself and the containers only manage the property
> > and delegate to it.
> >
> > -- Marius
> >
> > On 9/4/26 5:08 PM, Michael Strauß wrote:
> >> Previously, we've improved the JavaFX animation story by making
> >> backgrounds and borders interpolatable, and adding timeline-driven
> >> CSS-based transitions that automatically run when the state of a node
> >> changes.
> >>
> >> What's still missing is scroll transitions. A scroll transition is not
> >> triggered by a state change, but by a scroll gesture performed by the
> >> user. It is defined by a new property on VirtualFlow-based controls
> >> (ListView, etc.) and on ScrollPane:
> >>
> >>      /**
> >>       * Specifies the transition used to animate discrete
> >>       * mouse-wheel scrolling.
> >>       * <p>
> >>       * The transition is applied when scrolling occurs in
> >>       * discrete wheel steps. It is not applied to fine-grained
> >>       * precision scrolling by a touchpad or a high-resolution
> >>       * mouse wheel.
> >>       *
> >>       * @defaultValue {@code null}
> >>       * @since 28
> >>       */
> >>      private ObjectProperty<ScrollTransition> scrollTransition;
> >>
> >>
> >> Here's how ScrollTransition is defined:
> >>
> >>      public sealed interface ScrollTransition
> >>              permits ScrollTransition.Spring,
> >>                      ScrollTransition.ExponentialDecay {
> >>
> >>          record Spring(double naturalFrequency,
> >>                        double dampingRatio)
> >>              implements ScrollTransition { ... }
> >>
> >>          record ExponentialDecay(Duration halfLife)
> >>              implements ScrollTransition { ... }
> >>      }
> >>
> >>
> >> When a scroll event is encountered that exceeds a continuous-scrolling
> >> threshold, the viewport is animated to its new position as defined by
> >> the ScrollTransition.
> >>
> >> Here's how it looks like in action:
> >> https://github.com/user-attachments/assets/edf65b66-3ec3-4495-9c70-9154c586515e
> >>
> >>
> >> It is probably a good idea to allow scroll transitions be
> >> CSS-styleable. However, this is not a standard CSS property, so we'd
> >> need to invent a JavaFX-specific grammar.
> >>
> >> If there is interest in this feature, I can prepare a PR with the
> >> implementation.

Reply via email to