gyscos / cursive

A Text User Interface library for the Rust programming language
MIT License
4.26k stars 243 forks source link

[BUG] Button gets pressed on mouse hover with crossterm #767

Open nxsaken opened 10 months ago

nxsaken commented 10 months ago

Describe the bug Hovering over a button presses it when using the crossterm backend. Termion has the correct behavior.

To Reproduce

  1. cursive = { version = "0.20.0", default-features = false, features = ["crossterm-backend"] }

  2. Use the example code:

    
    use cursive::views::{Dialog, TextView};

fn main() { // Creates the cursive root - required for every application. let mut siv = cursive::default();

// Creates a dialog with a single "Quit" button
siv.add_layer(Dialog::around(TextView::new("Hello Dialog!"))
                     .title("Cursive")
                     .button("Quit", |s| s.quit()));

// Starts the event loop.
siv.run();

}

3. Touch the quit button with the mouse cursor.

**Expected behavior**
Nothing happens unless I left-click.

**Environment**
* macOS Sonoma 14.0, M1 pro
* Backend: crossterm
* Current locale: 

LANG="" LC_COLLATE="C" LC_CTYPE="UTF-8" LC_MESSAGES="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_ALL=


* Cursive version: 0.20
gyscos commented 8 months ago

Hi, and thanks for the report!

I'm unable to reproduce the issue so far, running on a M1 pro laptop on Sonoma 14.2.1. What version of crossterm is in Cargo.lock?

nxsaken commented 8 months ago

Hi! 0.25.0

gyscos commented 8 months ago

I still cannot reproduce it, either with the default terminal app, or with alacritty.

Does the issue still exist when running from this git main branch? (It should use crossterm 0.27.0).

Note also that cursive expects a utf-8 locale. You could try setting for example export LANG=en_US.UTF-8 (or some other locale of your choice) to see if that makes a difference, though I don't think it should in this case.

nxsaken commented 8 months ago

Huh, I ran the app from Terminal, and it worked as expected. The problem only happens if I run the app from the terminal in my IDE (CLion).