Skip to content

IME: keyboard starts in float mode after switching keyboards — docked choice doesn't survive (Heide, pre-v0.1.22) #73

Closed

Description

@willwade

Heide (before testing v0.1.22, i.e. on v0.1.21 which introduced #64's mode persistence):

"Oh yeah, I forgot about the docking issue. The IME still starts in float mode, then you have to tap on dock. Then it's fine unless you switch keyboards."

Not fixed by v0.1.22 (its IME changes are output batching + force-show only). Lifecycle holes in the #64 restore machinery, found by inspection:

  1. onCreateInputView can run again on a LIVE instance (configuration change; some OEM IME-switch flows keep the service alive): createEngine() builds a second engine (the first keeps its dasher_frame loop — both submit into the same canvas), and a stale floating=true makes the posted restore early-return inside enterFloatingMode() — a dead overlay canvas presents as "floating" over a full-height docked root. Tap Dock → clean; switch keyboards → repeats.
  2. No onUnbindInput cleanup — a surviving service leaves the overlay hovering over the next keyboard.
  3. exitFloatingMode returns early when floatingView == null — a swallowed removeView failure strands a dead overlay over every subsequent show.

Manual repro needed on Heide's device (Samsung, Android 16) to confirm which path she hits; the fix hardens all three.

Activity

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

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