View Issue Details

IDProjectCategoryView StatusLast Update
0000627OpenMPTUser Interfacepublic2024-11-10 18:49
ReporterSaga Musix Assigned ToSaga Musix  
PrioritynormalSeverityminorReproducibilityhave not tried
Status assignedResolutionopen 
Target VersionOpenMPT 1.33 / libopenmpt 0.9 (goals) 
Summary0000627: Make OpenMPT completely DPI-aware
Description

Several parts of OpenMPT are not compatible with high-DPI devices yet.
Currently, this is true for:

  • All icons (currently upscaled, should provide high-res replacements)
  • Cursors (Windows currently scales them to the correct size, should provide high-res replacements)
  • Channel headers in pattern editor
  • Channel Manager
  • Default plugin manager size
  • Channel VU meters
  • Example picture in Display settings
  • Splash screen
  • Credits font
  • Default plugin GUI
TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Relationships

related to 0001490 resolvedSaga Musix Freeze when file dialog tries to display overly long tooltip of file type selector on mixed-DPI screens 
has duplicate 0001066 closed Optimization for 1920 x 1080 displays 
related to 0001114 new Rewrite pattern view drawing 

Activities

Saga Musix

Saga Musix

2016-09-21 11:48

administrator   ~0002669

The line drawing width may also have to be adjusted in several places, for example the parameter editor and instrument editor. Maybe we could switch those to use GDI+ (it's implicitely requried by MFC in VS2010+ and comes pre-installed on XP and newer anyway) and have anti-aliased lines as a free bonus.

Saga Musix

Saga Musix

2019-05-22 19:08

administrator   ~0003947

Starting from Windows 10 1607, there is SetThreadDpiAwarenessContext which we could use to selectively scale some plugin UIs but not others (probably not trivial to implement, though). When OpenMPT is not set to be DPI-aware, we should also consider using SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED) as it will essentially cause fonts to be no longer blurry even when scaled up. There are a couple of remaining UI glitches (some random pixels at the top of pattern and instrument editor, and maybe more) that currently prevent us from using it, and then there is of course also all those plugins that will potentially also look broken for the same reasons.

Saga Musix

Saga Musix

2024-11-10 01:38

administrator   ~0006163

Last edited: 2024-11-10 01:39

r22122 brings some more huge improvements for mixed-DPI and high-DPI setups: In particular we were claiming to be per-monitor DPI-aware but were not querying the DPI settings for the correct monitor / window. MFC's resizable dialog is also broken on mixed-DPI setups (or simply when changing the DPI of a single screen while the dialog is open). This has been rewritten as well.

All in all, enabling DPI-aware mode by default could be a good idea by now. I think the only thing really missing is automatically upscaling the default pattern font when a high-DPI device is detected. For custom pattern fonts, we do this automaticalyl.

Saga Musix

Saga Musix

2024-11-10 01:55

administrator   ~0006164

Last edited: 2024-11-10 01:56

r22134 enables dynamic scaling for the built-in pattern font.

I'll do a bit more testing with a proper 4K screen and then see if DPI awareness can be enabled by default.

Saga Musix

Saga Musix

2024-11-10 16:28

administrator   ~0006167

Last edited: 2024-11-10 17:32

Remaining oddities on high-DPI setups:

  • Maximized MDI child windows show part of their (normally hidden) title bar. Maybe a DPI-unaware pixel calculation somewhere in MFC. Not a showstopper if it cannot be fixed.
  • First item of `CCheckListBox´ overlaps with the rest of the list. Resolves itself after scrolling. Maybe another DPI-unaware calculation in MFC's implementation. Fixed in r22146
Saga Musix

Saga Musix

2024-11-10 17:59

administrator   ~0006169

Last edited: 2024-11-10 18:49

Maximized MDI child windows show part of their (normally hidden) title bar. Maybe a DPI-unaware pixel calculation somewhere in MFC. Not a showstopper if it cannot be fixed.

This also happens in pure WinAPI MDI implementations. Appears to only be an issue on mixed-DPI setups, a single high-DPI screen should not have the same problem.

Edit: https://stackoverflow.com/questions/67304083/problems-with-per-monitor-dpi-aware-mfc-mdi-app

Issue History

Date Modified Username Field Change
2014-12-31 02:08 Saga Musix New Issue
2014-12-31 02:08 Saga Musix Status new => assigned
2014-12-31 02:08 Saga Musix Assigned To => Saga Musix
2014-12-31 17:44 Saga Musix Description Updated
2014-12-31 18:03 Saga Musix Description Updated
2014-12-31 21:23 Saga Musix Description Updated
2015-03-11 13:04 Saga Musix Description Updated
2015-05-24 22:38 Saga Musix Description Updated
2015-06-08 20:33 Saga Musix Description Updated
2016-08-07 20:29 Saga Musix Product Version OpenMPT 1.?? (long term goals) =>
2016-08-07 20:29 Saga Musix Target Version => OpenMPT 1.27.01.00 / libopenmpt 0.3.1 (upgrade first)
2016-09-21 11:48 Saga Musix Note Added: 0002669
2017-05-07 10:26 Saga Musix Description Updated
2017-09-22 12:16 manx Target Version OpenMPT 1.27.01.00 / libopenmpt 0.3.1 (upgrade first) => OpenMPT 1.28.01.00 / libopenmpt 0.4.0 (upgrade first)
2017-11-23 01:32 Saga Musix Relationship added has duplicate 0001066
2018-04-15 17:25 manx Relationship added related to 0001114
2018-06-27 21:20 Saga Musix Description Updated
2018-09-25 19:05 Saga Musix Description Updated
2018-12-23 13:25 Saga Musix Target Version OpenMPT 1.28.01.00 / libopenmpt 0.4.0 (upgrade first) => OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first)
2019-05-22 19:08 Saga Musix Note Added: 0003947
2020-04-14 16:08 Saga Musix Target Version OpenMPT 1.29.01.00 / libopenmpt 0.5.0 (upgrade first) => OpenMPT 1.30.01.00 / libopenmpt 0.6.0 (upgrade first)
2021-09-15 15:10 Saga Musix Relationship added related to 0001490
2021-09-15 15:10 Saga Musix Target Version OpenMPT 1.30.01.00 / libopenmpt 0.6.0 (upgrade first) => OpenMPT 1.31.01.00 / libopenmpt 0.7.0 (upgrade first)
2023-01-04 20:29 Saga Musix Description Updated
2023-03-19 16:13 Saga Musix Target Version OpenMPT 1.31.01.00 / libopenmpt 0.7.0 (upgrade first) => OpenMPT 1.32 / libopenmpt 0.8 (goals)
2024-10-26 18:10 Saga Musix Target Version OpenMPT 1.32 / libopenmpt 0.8 (goals) => OpenMPT 1.33 / libopenmpt 0.9 (goals)
2024-11-10 01:38 Saga Musix Note Added: 0006163
2024-11-10 01:39 Saga Musix Note Edited: 0006163
2024-11-10 01:55 Saga Musix Note Added: 0006164
2024-11-10 01:56 Saga Musix Note Edited: 0006164
2024-11-10 16:28 Saga Musix Note Added: 0006167
2024-11-10 17:32 Saga Musix Note Edited: 0006167
2024-11-10 17:59 Saga Musix Note Added: 0006169
2024-11-10 18:03 Saga Musix Note Edited: 0006169
2024-11-10 18:49 Saga Musix Note Edited: 0006169