Skip to content

[Drawer] BottomDrawer does not respond to mouse drag/fling #836

Description

@zhagao-ms

Environment Information

  • Package version(s): com.microsoft.fluentui:FluentUIAndroid:0.3.12
  • Android SDK version: compileSdk 35 / targetSdk 35, tested on Android 15

Please provide a reproduction of the bug:

Reproduces on a stock BottomDrawer containing a scrollable list (LazyColumn) when interacted with via a mouse (InputDevice.SOURCE_MOUSE) instead of a finger.

Steps (against a BottomDrawer demo or our host app):

  1. Run on an Android device with a connected mouse (Bluetooth/USB, Samsung DeX, or a Chromebook with Android subsystem).
  2. Open a BottomDrawer whose content is taller than the drawer's expanded height (e.g. an account list).
  3. With the mouse pointer over the top region of the drawer (drag handle / header area), press → drag up/down → release at varying speeds.
  4. Repeat the same gestures with a finger on the touchscreen for comparison.

on Samsung Galaxy S25 / Android 15. Internal tracking: Microsoft ADO OS#60001005 (resolved as External against this library).

Actual behavior:

  • Slow mouse press-and-drag → works; inner list scrolls.
  • Fast mouse flick / fling → either toggles the drawer's expand/collapse state, or becomes a no-op when the drawer is already fully expanded. Fling velocity is not forwarded to the inner scrollable child.
  • The same gestures with a finger on the touchscreen work as expected.

Suspected cause: the drawer's gesture / nested-scroll handling does not differentiate SOURCE_MOUSE (or SOURCE_CLASS_POINTER) from SOURCE_TOUCHSCREEN. Fling thresholds tuned for finger swipes classify mouse drag velocity as a drawer-state fling and consume it, instead of dispatching it through the nested-scroll connection to the inner content. When drawerState == Expanded, the consumed fling has nowhere to go and is dropped.

Expected behavior:

Mouse drag and fling on the drawer should behave the same as finger drag/fling:

  • Drag deltas should scroll the inner content when the drawer is at its expanded state.
  • Unconsumed fling velocity from the drawer should be forwarded to the inner scrollable child via nested scroll, regardless of input source.
  • Pointer-source events should ideally bypass the touch-tuned fling classifier (or use a pointer-appropriate threshold).

Priorities and help requested:

Are you willing to submit a PR to fix? No (happy to test a fix and provide additional repro on the affected device.)

Requested priority: Normal (impacts mouse / DeX / Chromebook users; finger input unaffected; no host-app workaround short of forking BottomDrawer.)

Products/applications affected: Microsoft Windows App for Android (WAA) — Drawer used for the account switcher; any consumer of fluentui_drawer's BottomDrawer with scrollable content is likely affected when the device uses pointer-class input.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions