Skip to content

fix: handle negative mouse coordinates #5688

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

TomJGooding
Copy link
Contributor

It is possible that terminals will report negative mouse coordinates when using SGR-Pixels (1016). While this arguably violates the standard for CSI sequences (see #5559), perhaps Textual should be more resilient to handle these sequences.

Please review the following checklist.

  • Docstrings on all new or modified functions / classes
  • Updated documentation
  • Updated CHANGELOG.md (where appropriate)

It is possible that terminals will report negative mouse coordinates
when using SGR-Pixels (1016). While this arguably violates the standard
for CSI sequences (see Textualize#5559),
perhaps Textual should be more resilient to handle these sequences.
@willmcgugan
Copy link
Collaborator

I'm all for a pragmatic approach. It's certainly better than breaking. But there are a couple of issues here.

What happens when a negative coordinate arrives? Presumably Textual will send that negative coordinate to the app. But then we have different behavior compared to more compliant terminals. I think we should ignore negative coordinates to maintain consistency.

I'd also like to tighten up the regexes a bit. My regex-fu isn't great, but if I have read the code correctly, it will allow nonsense strings like "12-1234-234-234-23". Which isn't likely to occur, but I'd feel better about it if the hyphen could occur in the first position only.

@TomJGooding
Copy link
Contributor Author

TomJGooding commented Apr 9, 2025

Agreed, I'm very wary to change the regex which is why I left this in draft!

Should the negative coordinates just be ignored? I think clicking and dragging outside the terminal window still reports mouse events even in 'compliant' terminals, but just aren't negative. Perhaps I've just misunderstood what you mean.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants