Let an embedder override the double-tap word selection - #242
Open
lordspace wants to merge 1 commit into
Open
Conversation
TerminalView gains onDoubleTapDown(TapDownDetails, CellOffset), mirroring the existing onSecondaryTapDown passthrough. When supplied it REPLACES the built-in selectWord rather than running after it. Without a hook an embedder that wants a different double-tap meaning — select the line, open a file, follow a URL — can only correct the word selection afterwards, which is visible as a flicker and depends on scheduling order. Passing null keeps the existing behaviour exactly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This Fixes #241
Adds TerminalView.onDoubleTapDown(TapDownDetails, CellOffset), mirroring the existing onSecondaryTapDown / onSecondaryTapUp passthrough. When supplied it replaces the built-in selectWord rather than running before it.
Replacing rather than chaining is the point. If the built-in word selection runs first, an embedder's own selection becomes a correction: the word is painted and swapped a frame later, which the user sees as a flicker, and whether the correction wins depends on scheduling order between the embedder's gesture layer and xterm's — not on anything the API promises.
Passing null keeps current behaviour byte-for-byte, so this is purely additive for existing embedders.
Two tests in test/src/ui/double_tap_override_test.dart:
Note: running that test on a clean checkout needs the dart_code_metrics removal from #240, which currently blocks the suite. The code change itself is independent of that PR.