amethyst / amethyst/bracket-lib

Expose mouse wheel events

オープン
#377 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Rust
スター
1.7k
フォーク
126
PR マージ指標
30日以内にマージされた PR はありません

説明

# Mouse wheel events silently dropped in both GL and crossterm backends

## Description

Both of bracket-lib's backends (native GL/GLFW and crossterm) catch-all scroll wheel events without relaying them, making it impossible to implement mouse-wheel-scrollable UI panels (e.g. console output, inspector, or logs).

## Affected code

**Native GL backend** — https://github.com/amethyst/bracket-lib/blob/ce9124ad744553b2576e44df44e94b0f72faa8e8/bracket-terminal/src/hal/native/mainloop.rs#L304

Note: `WindowEvent::MouseInput` ([line 262](https://github.com/amethyst/bracket-lib/blob/ce9124ad744553b2576e44df44e94b0f72faa8e8/bracket-terminal/src/hal/native/mainloop.rs#L262)) is handled for button clicks (Left/Right/Middle), but scroll wheels fire a separate `WindowEvent::MouseWheel` variant in glutin, not `MouseInput`. On some GLFW configurations scroll may also emit `MouseButton::Other(4/5)` through `MouseInput`, but this is platform-dependent and not a reliable path for scroll support.

**Crossterm backend** — https://github.com/amethyst/bracket-lib/blob/ce9124ad744553b2576e44df44e94b0f72faa8e8/bracket-terminal/src/hal/crossterm_be/main_loop.rs#L77

`crossterm::event::MouseEventKind::ScrollUp` and `ScrollDown` variants fall through the wildcard on the `MouseEventKind` match.

## Desired behavior

Scroll wheel events should be exposed through `BTerm` or the input state so that downstream consumers can query accumulated scroll delta each frame. For example, an `i32` field like `mouse_scrolled: i32` on `MouseCursor` or `InputState` that resets to 0 after being read, or a `scroll_delta` field on `BTerm`.

## Workaround

Upstream currently requires patching the dependency or forking. In our project we use Up/Down arrow keys to scroll UI panels instead.

---

Yes this description was mostly generated by AI, but if I were to manually write this, I would have never known about the relevant code in question. I need this functionality for my project

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。