Skip to content

[PowerDisplay] Add setting for mouse wheel increment on slider controls#48809

Open
giruuuuj wants to merge 3 commits into
microsoft:mainfrom
giruuuuj:feature/powerdisplay-mouse-wheel-v3
Open

[PowerDisplay] Add setting for mouse wheel increment on slider controls#48809
giruuuuj wants to merge 3 commits into
microsoft:mainfrom
giruuuuj:feature/powerdisplay-mouse-wheel-v3

Conversation

@giruuuuj

Copy link
Copy Markdown
Contributor

Summary of the Pull Request

Adds a configurable mouse_wheel_change setting so users can control how much brightness, contrast, and volume sliders change per mouse wheel notch (default 5, range 1-25).

Detailed Description of the Pull Request / Additional Comments

Previously the mouse wheel increment was hardcoded to 5 in the XAML. This PR adds it as a user-configurable setting in PowerToys Settings.

Changes:

  • PowerDisplayProperties.cs: Added MouseWheelChange property (default 5, JSON key mouse_wheel_change)
  • MainWindow.xaml: Changed all 4 slider MouseWheelChange from hardcoded "5" to ViewModel binding
  • MainViewModel.cs: Added [ObservableProperty] double MouseWheelChange, loaded in LoadUIDisplaySettings()
  • MonitorViewModel.cs: Added MouseWheelChange passthrough from MainViewModel with PropertyChanged forwarding
  • PowerDisplayViewModel.cs (Settings): Added MouseWheelChange property with IPC signal on change
  • PowerDisplayPage.xaml: Added NumberBox (1-25, inline spin buttons) in flyout settings group
  • Resources.resw: Added en-us localization strings

Closes

#48805

…ls (microsoft#48805)

Adds a configurable mouse_wheel_change setting (default 5, range 1-25)
so users can control how much brightness, contrast, and volume sliders
change per mouse wheel notch.

Changes:
- PowerDisplayProperties: add MouseWheelChange property (default 5)
- MainWindow.xaml: bind slider MouseWheelChange to ViewModel instead of hardcoded 5
- MainViewModel: expose MouseWheelChange observable property, load from settings
- MonitorViewModel: forward MouseWheelChange from parent MainViewModel
- PowerDisplayViewModel (Settings): add MouseWheelChange property with IPC signal
- PowerDisplayPage.xaml: add NumberBox (1-25) for mouse wheel increment
- Resources.resw: add en-us localization strings
@github-actions github-actions Bot added Area-Localization issues regarding to Localization the application Product-PowerDisplay Product-Settings The standalone PowerToys Settings application labels Jun 23, 2026
@niels9001

Copy link
Copy Markdown
Collaborator

@giruuuuj Can you please post a screenrecording of the new behavior? Thanks

@niels9001 niels9001 requested a review from moooyo June 23, 2026 07:41
@moooyo

moooyo commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Please run xaml script to fix the style bug.

giruuuuj added 2 commits June 23, 2026 13:31
Migrates the Quick Accent module from WPF (PowerAccent.UI) to WinUI3,
following the Image Resizer migration as the reference pattern.

### Changes

**PowerAccent.Core** (class library - no more WPF/WinForms dependencies):
- Removed <UseWPF> and <UseWindowsForms> from .csproj
- Replaced System.Windows.Application.Current.Dispatcher.Invoke()
  with injected Action<Action> dispatcher delegate
- Replaced System.Windows.Forms.SendKeys with native PInvoke.SendInput
- Added WindowsFunctions.SendVirtualKey() for VK_LEFT/VK_RIGHT input

**PowerAccent.UI** (WinUI3 project - was WPF):
- Rewrote .csproj: <UseWPF> -> <UseWinUI>, WinAppSDK + WinUIEx refs
- Rewrote App.xaml + App.xaml.cs: WinUI3 Application with XamlControlsResources
- Rewrote Program.cs: WinUI3 Application.Start() with DispatcherQueueSynchronizationContext
- Created MainWindow.xaml + .cs: WinUI3 WindowEx with DesktopAcrylicBackdrop,
  ListView (horizontal), native WS_EX_NOACTIVATE/TOOLWINDOW styles,
  AppWindow-based show/hide/topmost/positioning
- Deleted Selector.xaml, Selector.xaml.cs, AssemblyInfo.cs (WPF-only)

### Architecture notes
- Window overlay uses native win32 extended styles (WS_EX_NOACTIVATE,
  WS_EX_TOOLWINDOW, WS_EX_TRANSPARENT) instead of WPF AllowsTransparency
- DesktopAcrylicBackdrop provides modern Windows 11 acrylic background
- Per-pixel transparency gap is avoided by using native DWM rounded corners
- Dispatcher injection pattern allows Core library to remain framework-agnostic
@giruuuuj giruuuuj requested a review from a team as a code owner June 23, 2026 08:11
@github-actions github-actions Bot requested a review from chatasweetie June 23, 2026 08:12
@github-actions

Copy link
Copy Markdown

Thank you for contributing to PowerToys. We've detected that this PR might include a new or modified telemetry event. Please ensure the following before merging:

@niels9001 niels9001 added the Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something label Jun 23, 2026
@niels9001

Copy link
Copy Markdown
Collaborator

@giruuuuj Accept the Microsoft GitHub Policy Service and post a screenrecording of the new behavior. Without it we will not continue reviewing this PR

@giruuuuj

Copy link
Copy Markdown
Contributor Author

@microsoft-github-policy-service agree

@microsoft-github-policy-service microsoft-github-policy-service Bot added Needs-Triage For issues raised to be triaged and prioritized by internal Microsoft teams Needs-Team-Response An issue author responded so the team needs to follow up and removed Needs-Author-Feedback The original author of the issue/PR needs to come back and respond to something labels Jun 23, 2026
@chatasweetie chatasweetie removed their request for review June 23, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area-Localization issues regarding to Localization the application Needs-Team-Response An issue author responded so the team needs to follow up Needs-Triage For issues raised to be triaged and prioritized by internal Microsoft teams Product-PowerDisplay Product-Settings The standalone PowerToys Settings application

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants