Skip to content

Event and condition dialogs auto-scroll on open in landscape #1054

Description

@vibhor1102

Description

When opening an Event from a scenario in landscape orientation, the dialog does not consistently start at the top of its scrollable content. Shortly after opening, it scrolls down by a small amount automatically.

This appears to be a regression introduced in the July 2026 changes. A build from roughly ~40 days earlier did not show the same behavior.

The issue is much easier to notice in landscape because the vertical viewport is shorter. Portrait may appear unaffected because more monitored fields are already fully visible.

Steps to reproduce

  1. Start a scenario and open the scenario editor in landscape orientation.
  2. Open an existing Event.
  3. Observe the initial position of the Event configuration dialog.
  4. The content may initially appear at/near the top and then automatically scroll downward slightly.

The same mechanism may also affect other scrollable configuration dialogs such as Image Condition dialogs.

Expected behavior

Opening an Event/Condition configuration dialog should leave its scroll position at the top unless the user scrolls it, or unless an active tutorial explicitly needs to reveal a monitored UI element.

Actual behavior

The dialog can automatically scroll during the first moments after opening, even during normal editing with no tutorial being followed.

Suspected regression / root cause

The strongest suspect is commit:

ca40f9939ca00374fc3cfdebba59096d2d9e343b
"Automatically scroll to monitored view"

That change added delayed visibility checks to ViewMonitor and, when a monitored view is not fully visible, finds a NestedScrollView ancestor and calls smoothScrollTo(...) to bring the view into view.

The important part is that normal configuration dialogs attach monitored tutorial views unconditionally:

  • EventDialog.onStart() calls viewModel.monitorViews(...) for Conditions, AND/OR controls, Actions, Initial State, Save, etc.
  • ImageConditionDialog.onStart() similarly registers Save, detection type, area selector, visibility, etc.
  • MonitoredViewsManagerImpl.attach(...) attaches a ViewMonitor without checking whether a tutorial is actually active.

Because ViewMonitor now has a scrolling side effect, tutorial instrumentation can alter normal non-tutorial UI behavior.

This is especially visible in landscape: lower monitored fields are more likely to be partially outside the shorter NestedScrollView viewport, so the new visibility check scrolls the dialog down to expose them.

There was also a related July 9 change:

855b90da3b490392f1bc60d80f2993bf1ee9b2ce
"Fix condition and action access in tutorials"

which changed Event Actions monitoring to the new layoutActionsSelector wrapper. This may affect monitored geometry, but ca40f993 appears to be the main behavioral regression because it introduced the actual automatic scrolling.

Possible fix

Only perform scrollIntoViewIfNeeded() when a tutorial is actively requesting/using that monitored view, rather than whenever any monitored view is attached.

Alternatively, gate the dialog monitoring/auto-scroll behavior behind tutorial-active state.

This would preserve tutorial auto-navigation while preventing monitoring from changing ordinary Event/Condition editor scroll positions.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

acknowledged-priority-normalThe bug has been reproduced, would be nice to fix it in next stable versionbugSomething isn't workingfixedThe bug has been fixed in Klick'r

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions