Skip to content

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

@zhagao-ms

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions