Skip to content

Make scroll-wheel volume changes configurable#1814

Open
SetupCoding wants to merge 123 commits intoFile-New-Project:devfrom
SetupCoding:disable-scroll-wheel-volume
Open

Make scroll-wheel volume changes configurable#1814
SetupCoding wants to merge 123 commits intoFile-New-Project:devfrom
SetupCoding:disable-scroll-wheel-volume

Conversation

@SetupCoding
Copy link
Copy Markdown

@SetupCoding SetupCoding commented May 5, 2026

Summary

Makes all scroll-wheel volume adjustment behavior configurable via the Mouse Settings page, rather than always-on.

Settings

  • Use scroll wheel in tray (existing, default: on) - scroll over the EarTrumpet tray icon to change volume
  • Use global mouse wheel hook (existing, default: off) - scroll anywhere while the flyout is open to change volume
  • Use scroll wheel in sliders (NEW, default: on) - scroll over individual volume sliders to change volume

Changes

  • App.xaml.cs: Restore tray icon scroll handler, gated by UseScrollWheelInTray setting
  • VolumeSlider.cs: Restore mouse wheel handler, gated by new UseScrollWheelInSliders setting
  • FlyoutViewModel.cs: Restore MouseHook for global scroll, gated by UseGlobalMouseWheelHook setting
  • AppSettings.cs: Add new UseScrollWheelInSliders property (default: true)
  • EarTrumpetMouseSettingsPageViewModel.cs: Expose new setting to UI
  • SettingsWindow.xaml: Add checkbox for new setting
  • Resources.resx / Resources.Designer.cs: Add display string for new checkbox

All three scroll-wheel behaviors can now be independently toggled on or off by the user. Build succeeds with 0 errors.

riverar and others added 30 commits February 10, 2023 12:09
actions-user and others added 27 commits November 16, 2025 00:30
- Remove tray icon scroll subscription and handler from App.xaml.cs
- Remove MouseWheel handler from VolumeSlider.cs (keep ChangePositionByAmount)
- Remove MouseHook field, initialization, SetHook/UnHook, and OnMouseWheelEvent from FlyoutViewModel.cs
- Remove unused _winRect field (UpdateWindowPos kept as no-op for IFlyoutViewModel interface)
- Remove unused 'using EarTrumpet.Interop' and 'using EarTrumpet.Interop.Helpers' (MouseHook)
- Click/drag/touch slider, hotkeys, and mute commands still work
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented May 5, 2026

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
2 out of 3 committers have signed the CLA.

✅ riverar
✅ SetupCoding
❌ actions-user
You have signed the CLA already but the status is still pending? Let us recheck it.

Restore all scroll-wheel volume behavior but gate each path behind
its existing or new setting:

- Tray icon scroll: gated by UseScrollWheelInTray (existing, default on)
- Global mouse wheel hook while flyout open: gated by UseGlobalMouseWheelHook (existing, default off)
- Volume slider scroll: gated by new UseScrollWheelInSliders setting (default on)

Add UseScrollWheelInSliders to AppSettings, mouse settings page VM,
settings UI (checkbox), and string resources.
@SetupCoding SetupCoding changed the title Disable all scroll-wheel-driven volume changes Make scroll-wheel volume changes configurable May 5, 2026
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.

5 participants