linebender / linebender/runebender
Spamming left/right click can hit an assert
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 799
- Forks
- 35
- PR merge metrics
- No merged PRs in 30d
Description
This was an assert I wanted to ensure something like this wouldn't happen; I'll have to do some thinking about what it actually means.
_Originally posted by @Connum in https://github.com/linebender/runebender/issues/154#issuecomment-781247076_
It's definitely way better now, but I still managed to get a crash, clicking quite wildly alternating between left and right clicks...
I know this is not standard user behaviour, so the priority of this might have decreased drastically, but I guess it would be good to get the app as robust as possible.
```
DEBUG [druid::localization] available locales [], current en-US
DEBUG [druid::localization] resolved: [en-US]
DEBUG [druid_shell::platform::windows::window] dxgi factory pointer = 0x1e85ef9cf90
DEBUG [druid_shell::platform::windows::window] 0x1e85efa3720: desc = Some("NVIDIA GeForce GTX 980 Ti"), vram = 6393823232
DEBUG [druid_shell::platform::windows::window] 0x1e85efaae20: desc = Some("Microsoft Basic Render Driver"), vram = 0
DEBUG [druid_shell::platform::windows::window] adapter = 0x1e85efa3720
DEBUG [druid_shell::platform::windows::window] swap chain res = 0x0, pointer = 0x1e8638fd810
INFO [druid_theme_loader::widget] loaded 45 items to theme
DEBUG [druid_shell::platform::windows::window] dxgi factory pointer = 0x1e86383f830
DEBUG [druid_shell::platform::windows::window] 0x1e870424b50: desc = Some("NVIDIA GeForce GTX 980 Ti"), vram = 6393823232
DEBUG [druid_shell::platform::windows::window] 0x1e870424fe0: desc = Some("Microsoft Basic Render Driver"), vram = 0
DEBUG [druid_shell::platform::windows::window] adapter = 0x1e870424b50
DEBUG [druid_shell::platform::windows::window] swap chain res = 0x0, pointer = 0x1e8706db800
INFO [druid_theme_loader::widget] loaded 45 items to theme
ERROR [druid_shell::platform::windows::window] failed to borrow WndState at C:\Users\*****\.cargo\git\checkouts\druid-f71533f3d81c0bc8\fb434a1\druid-shell\src\platform\windows\window.rs:713:22
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1626.25, 1616.75)/(1578.25, 1493.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1579.25, 1609.75)/(1729.25, 1511.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1759.25, 1536.75)/(1615.25, 1609.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1801.25, 1744.75)/(1628.25, 1631.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1584.25, 1636.75)/(1782.25, 1715.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1628.25, 1551.75)/(1646.25, 1580.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1439.25, 1650.75)/(1605.25, 1655.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1708.25, 1502.75)/(1511.25, 1622.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1519.25, 1669.75)/(1523.25, 1712.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1651.25, 1638.75)/(1655.25, 1795.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1367.25, 1699.75)/(1548.25, 1793.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1718.25, 1826.75)/(1787.25, 1774.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1407.25, 1478.75)/(1407.25, 1479.75)
DEBUG [runebender_lib::tools::select] double-click mouse state: Idle(None)
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1491.25, 1532.75)/(1475.25, 1497.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1694.25, 1775.75)/(1642.25, 1685.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1752.25, 1798.75)/(1750.25, 1799.75)
DEBUG [runebender_lib::tools::select] double-click mouse state: Idle(None)
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1780.25, 1578.75)/(1780.25, 1704.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1394.25, 1824.75)/(1415.25, 1721.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1640.25, 1777.75)/(1640.25, 1832.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1521.25, 1538.75)/(1704.25, 1608.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1343.25, 1788.75)/(1364.25, 1633.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1537.25, 1634.75)/(1534.25, 1677.75)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1540.25, 1614.75)/(1540.25, 1616.75)
DEBUG [runebender_lib::tools::select] double-click mouse state: Idle(None)
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1519.25, 1624.75)/(1540.25, 1614.75)
DEBUG [runebender_lib::tools::select] double-click mouse state: Idle(None)
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
DEBUG [runebender_lib::tools::select] unexpected state in drag_changed: SuppressDrag
INFO [runebender_lib::tools::select] left_down pos != mouse_move pos: (1542.25, 1758.75)/(1686.25, 1660.75)
thread 'main' panicked at 'assertion failed: prev.button != event.button', runebender-lib\src\mouse.rs:304:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `target\debug\runebender.exe` (exit code: 0x80000003)
```
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at runebender-lib/src/mouse.rs:304, where rapid alternating clicks trigger the assertion, and review the mouse event state handling around it. Reproduce the issue by alternating left and right clicks quickly, then verify the application no longer panics while preserving normal mouse and selection behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100