jj icon indicating copy to clipboard operation
jj copied to clipboard

default pager repeats inputs on windows

Open Zoybean opened this issue 1 year ago • 2 comments

Description

inputs are duplicated in default pager cannot select text in default pager

Steps to Reproduce the Problem

  1. Open windows terminal
  2. navigate to a jj repo
  3. jj log
  4. press / and start typing (e.g. "cat")
  5. click and drag mouse to select text

Expected Behavior

pager searches for the entered term (e.g. "cat") terminal selects the moused-over text

Actual Behavior

pager has duplicated every keypress, so it is searching for e.g. "/ccatat" instead of "cat" cannot select text, ~~and screen appears to refresh every time the mouse moves~~ (flicker no longer happens in 0.16)

Specifications

  • Platform: Windows 10
  • Version: jj 0.16.0 (originally jj 0.15.1-bf76080f42f77cad934d9a5202c7b7d29ab2c890)

Zoybean avatar Apr 04 '24 09:04 Zoybean

This actually goes a few layers down into dependencies. 😅 minus updated its crossterm dependency in https://github.com/AMythicDev/minus/commit/39224c3cba9c88c2822359b86279ba76e8c31f52, which started reporting key repeats and releases (distinguished by the KeyEvent::kind field) when the KeyboardEnhancementFlags::REPORT_EVENT_TYPES feature was set. minus didn't migrate code to distinguish these events, so it ends up duplicating input when the feature is set. crossterm always[^1] sets this feature on Windows, so this bubbled up to jj.

I've filed an issue and PR pair in minus upstream to handle this bug:

  • https://github.com/AMythicDev/minus/issues/140
  • https://github.com/AMythicDev/minus/pull/141

[^1]: This is slated to change to be opt-in with https://github.com/crossterm-rs/crossterm/pull/778.

ErichDonGubler avatar Jun 03 '24 19:06 ErichDonGubler

Update: minus upstream has merged https://github.com/AMythicDev/minus/pull/141, and is awaiting release.

ErichDonGubler avatar Jun 05 '24 18:06 ErichDonGubler