EQAditu / AdvancedCombatTracker

Advanced Combat Tracker
https://advancedcombattracker.com
117 stars 25 forks source link

Windows HiDPI support #32

Closed MikeZTM closed 3 months ago

MikeZTM commented 3 years ago

Since this app is a .net 4.0 app. It by default have HiDPI support built in and is just missing the flag on the exe image to enable it. If I force enable it in Windows Properties HiDPI behavior settings and choose "Application" scaling it automatically works with some minor layout issues that should be easy to deal with (quick fix on some button margins and font size).

3ZRUPTAM} S 57H) AHKVZT

This screenshot was done in 200% DPI setting in system and "Application" scaling in exe file properties.

This is important for any plugin that use an embedded browser. It will only scale to correct size/resolution when the main exe was set to enable HiDPI support flag.

EQAditu commented 3 years ago

You say minor layout issues, but there are 60+ screens in ACT to account for, where some are very broken. This does not account for plugins that are messed up by this as well...

MikeZTM commented 3 years ago

The layout issue is mostly caused by hardcoded layout constraints like hardcoded minimum button sizes which are in fact not a good practice in first place.

Even not rush enabling this flag I think it's still important to build new views with HiDPI in mind so as a hidden feature people with HiDPI screen can benefit from it and will reduce workload in the future. In that case you will only have 60+ old views to fix instead of 80 or more in the future.

And I'm willing to submit pull request for the plugins I use to get HiDPI support fix. I think there's more people like me willing to help the plugin community.

Anyway I'm happy with HiDPI hack with current version. Thanks for that great choice when you select WPF and targeting .Net 4.

EQAditu commented 3 years ago

ACT isn't using MinimumSize nor MaximumSize for anything except for the actual Forms and some WebBrowser controls. The controls simply have an initial size.

I think the worst affected are some controls that are programmatically generated. I don't know why these are different than code-behind set values. They're all hardcoded values in the end. I've wanted to replace these for a while, but doing so will break the structure and I've seen some plugins actually use reflection and navigate inside of the parts I want to replace. I know it's not my problem, but it would be my fault.

EQAditu commented 3 months ago

Resolved in v3.8.0.281