fix(windows): declare PerMonitorV2 DPI awareness so the GUI isn't bitmap-scaled at non-100% scaling - #780
Merged
mrjimenez merged 1 commit intoMay 31, 2026
Conversation
bitmap-scaled at non-100% display scaling (amule-project#777) ngosang reported the aMule GUI rendering blurry on a 150% Windows display scale. Diagnosis confirmed by mifritscher2: amule.rc just pulls in wx.rc's default manifest, which declares only "system DPI aware" -- so Windows applies its bitmap-scaling compatibility shim on any non-system per-monitor DPI, producing the smeared text and controls in the screenshot. Embed an explicit manifest declaring PerMonitorV2 (Win10 1703+) with a PerMonitor fallback via the modern <dpiAwareness> entry, plus the legacy <dpiAware>True/PM</dpiAware> for older Win10 builds and pre-Win10 hosts that don't honour the 2016 namespace. Both forms are inert when not understood, so layering them is safe. amule.rc: - Embed our manifest as resource ID 1 type 24 *before* the wx.rc include so the RC compiler keeps the first definition and ignores wx's duplicate. - Define wxUSE_RC_MANIFEST=0 to also tell wx not to emit one on toolchains that respect this knob. The Common-Controls v6 dependency (themed visual styles) that wx.rc normally provides is now expressed in our manifest, since we're replacing wx's entirely. Caveats: - PerMonitorV2 only fixes the Windows desktop manager's bitmap- scaling shim. wxWidgets 3.2's per-monitor DPI support is best-effort: layouts driven by hardcoded pixel sizes in muuli_wdr (see amule-project#737 for two examples we've already adjusted) may still look slightly off at high scales, and would be follow-up work. - Only affects the WIN32 build targets that include amule.rc (amule monolithic and amulegui). amuled / amulecmd / amuleweb are non-GUI and don't pull in the .rc.
This was referenced May 31, 2026
This was referenced May 31, 2026
mrjimenez
pushed a commit
that referenced
this pull request
May 31, 2026
#780 added an explicit application manifest for amule.exe so the main GUI renders with themed Common Controls v6 (and survives non-100% DPI scaling). alc.exe and wxcas.exe weren't covered: their .rc files (alc.rc / wxcas.rc) only did `#include "wx/msw/wx.rc"`, and the manifest wxWidgets emits in that header on our MinGW/CLANGARM64 build chain doesn't declare the Microsoft.Windows.Common-Controls v6 dependency. Result is the classic Win95-style unthemed widgets reported in #792. Verified empirically against the packaging-run artefacts: the manifest embedded in alc.exe / wxcas.exe today contains only trustInfo + the supportedOS compat list, while amule.exe has the full Common-Controls + dpiAwareness block from amule.manifest. A second pre-existing bug: alc.rc and wxcas.rc were sitting in the tree but never compiled — CMake's target_sources only listed ${CMAKE_BINARY_DIR}/version.rc, so the wx.rc include they contain was dead code. This commit fixes that by adding the .rc files to target_sources for the alc and wxcas targets; alcc is CLI (wxUSE_GUI=0) so doesn't need the manifest. Mirrors #780's pattern exactly: a per-binary .manifest file embedded at resource ID 1 / type 24, with wxUSE_RC_MANIFEST=0 to prevent wx.rc from duplicating the slot. Each manifest sets assemblyIdentity name to "amule-project.alc" / "amule-project.wxcas" for accurate side-by-side metadata.
1 task
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
…ndex Adds 55+ merged PRs to the 3.0.0 changelog since the last update (amule-project#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796 (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths). - Bug Fixes & Stability: post-amule-project#744 fixes including EC notification leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728), amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760), PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788, amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756), Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833, amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774). - Translations: late-cycle wave covering French/Turkish manpages (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for date+version drift (amule-project#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
…ndex Adds 55+ merged PRs to the 3.0.0 changelog since the last update (amule-project#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796 (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths). - Bug Fixes & Stability: post-amule-project#744 fixes including EC notification leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728), amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760), PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788, amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756), Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833, amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774). - Translations: late-cycle wave covering French/Turkish manpages (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for date+version drift (amule-project#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
mrjimenez
pushed a commit
that referenced
this pull request
Jun 4, 2026
Adds 55+ merged PRs to the 3.0.0 changelog since the last update (#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for #785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), #794 (.dmg amuleweb path), #789 (<OS>-<arch> artifact naming), #780 / #796 (Windows DPI + comctl32 manifest), #784 (FHS share/amule paths). - Bug Fixes & Stability: post-#744 fixes including EC notification leak (#797), big-library scaling (#736, #840 superseding #728), amulegui ghost entries (#810, #819, #841, #824, #830, #760), PartFile early hash (#762), server protocol fixes (#835, #788, #721, #787), crypto stream UB (#779), UAF prevention (#756), Kad rotation (#795, #799/#805), GTK warning silencing (#833, #826/#836), and the clang-tidy worklist (#770, #772-#774). - Translations: late-cycle wave covering French/Turkish manpages (#753/#754/#776), Galician (#763), Slovenian (#771), pt-BR (#768/#775/#812), French (#811), plus man-page tooling for date+version drift (#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (#817/#818/#821/#828/#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with #746-#845 + #841.
got3nks
referenced
this pull request
in amule-org/amule
Jul 4, 2026
* fix(gui): scale main-toolbar icons on hi-DPI displays The toolbar icons (Downloads, Shared Files, etc.) were stored in a fixed 32x32 wxImageList and handed to wxToolBar as plain wxBitmaps. Since the executable declares PerMonitorV2 DPI awareness (#780), those bitmaps are drawn at 32 *physical* pixels, so on 4K / scaled displays the icons render tiny and blurry while the rest of the UI scales. Store each toolbar icon as a wxBitmapBundle instead (wx >= 3.2), built from the original 32px art plus a wxIMAGE_QUALITY_HIGH 2x upscale, converting the transparency mask to an alpha channel first so the scaler doesn't smear the mask colour into the icon edges. Drop the hard-coded SetToolBitmapSize(32,32) so the toolbar derives the logical size from the bundles and scales it per monitor DPI. SetMessagesTool gains a bounds guard because m_CurrentBlinkBitmap starts as a stale sentinel (24) that the old wxImageList::GetBitmap tolerated but vector indexing must not. Co-Authored-By: Claude Fable 5 <[email protected]> * refactor(gui): name toolbar icon indexes and drop dead code after review Code-review follow-ups to the wxBitmapBundle toolbar change: - Add ToolbarSkinEnum (mirroring ClientSkinEnum) so the m_tblist indexes duplicated across Apply_Toolbar_Skin, ShowConnectionState, OnGUITimer and the constructor are named instead of magic numbers whose meaning depends on the Add_Skin_Icon call order. - Initialize m_CurrentBlinkBitmap to Toolbar_Messages instead of the stale sentinel 24 (a fossil amuleDlgImages() resource id, never a valid m_tblist index) and drop the SetMessagesTool bounds guard that existed only to defend against it; both callers assign a valid index right before calling, so behavior is identical. - Remove the #ifdef __WXCOCOA__ branches in ShowConnectionState and SetMessagesTool: the old wxCocoa port was removed from wxWidgets before the 3.2 minimum this project requires (modern macOS defines __WXOSX_COCOA__), so those lines could never compile again. - Use the two-bitmap wxBitmapBundle::FromBitmaps overload instead of building a wxVector by hand. Co-Authored-By: Claude Fable 5 <[email protected]> * style(gui): use emplace_back for the fallback toolbar bundle Fixes the clang-tidy Tier-2 modernize-use-emplace warning on the wxBitmapBundle fallback path in Add_Skin_Icon. Co-Authored-By: Claude Fable 5 <[email protected]> --------- Co-authored-by: Carlos Barrero <[email protected]> Co-authored-by: Claude Fable 5 <[email protected]>
Cflsft
referenced
this pull request
in Cflsft/amule
Jul 6, 2026
* fix(gui): scale main-toolbar icons on hi-DPI displays The toolbar icons (Downloads, Shared Files, etc.) were stored in a fixed 32x32 wxImageList and handed to wxToolBar as plain wxBitmaps. Since the executable declares PerMonitorV2 DPI awareness (amule-org#780), those bitmaps are drawn at 32 *physical* pixels, so on 4K / scaled displays the icons render tiny and blurry while the rest of the UI scales. Store each toolbar icon as a wxBitmapBundle instead (wx >= 3.2), built from the original 32px art plus a wxIMAGE_QUALITY_HIGH 2x upscale, converting the transparency mask to an alpha channel first so the scaler doesn't smear the mask colour into the icon edges. Drop the hard-coded SetToolBitmapSize(32,32) so the toolbar derives the logical size from the bundles and scales it per monitor DPI. SetMessagesTool gains a bounds guard because m_CurrentBlinkBitmap starts as a stale sentinel (24) that the old wxImageList::GetBitmap tolerated but vector indexing must not. Co-Authored-By: Claude Fable 5 <[email protected]> * refactor(gui): name toolbar icon indexes and drop dead code after review Code-review follow-ups to the wxBitmapBundle toolbar change: - Add ToolbarSkinEnum (mirroring ClientSkinEnum) so the m_tblist indexes duplicated across Apply_Toolbar_Skin, ShowConnectionState, OnGUITimer and the constructor are named instead of magic numbers whose meaning depends on the Add_Skin_Icon call order. - Initialize m_CurrentBlinkBitmap to Toolbar_Messages instead of the stale sentinel 24 (a fossil amuleDlgImages() resource id, never a valid m_tblist index) and drop the SetMessagesTool bounds guard that existed only to defend against it; both callers assign a valid index right before calling, so behavior is identical. - Remove the #ifdef __WXCOCOA__ branches in ShowConnectionState and SetMessagesTool: the old wxCocoa port was removed from wxWidgets before the 3.2 minimum this project requires (modern macOS defines __WXOSX_COCOA__), so those lines could never compile again. - Use the two-bitmap wxBitmapBundle::FromBitmaps overload instead of building a wxVector by hand. Co-Authored-By: Claude Fable 5 <[email protected]> * style(gui): use emplace_back for the fallback toolbar bundle Fixes the clang-tidy Tier-2 modernize-use-emplace warning on the wxBitmapBundle fallback path in Add_Skin_Icon. Co-Authored-By: Claude Fable 5 <[email protected]> --------- Co-authored-by: Carlos Barrero <[email protected]> Co-authored-by: Claude Fable 5 <[email protected]>
got3nks
pushed a commit
to got3nks/amule
that referenced
this pull request
Aug 3, 2026
Translated using Weblate (Tamil) Currently translated at 0.8% (2 of 246 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/ta/ Translated using Weblate Translated using Weblate (Tamil) Currently translated at 1.2% (24 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ta/ Translated using Weblate Translated using Weblate (Latvian) Currently translated at 60.9% (150 of 246 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/lv/ Translated using Weblate Translated using Weblate (Latvian) Currently translated at 32.4% (621 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/lv/ Translated using Weblate Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 86.8% (218 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/zh_Hant/ Translated using Weblate Translated using Weblate (Turkish) Currently translated at 98.0% (246 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/tr/ Translated using Weblate Translated using Weblate (Russian) Currently translated at 100.0% (251 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/ru/ Translated using Weblate Translated using Weblate (Romanian) Currently translated at 86.8% (218 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/ro/ Translated using Weblate Translated using Weblate (Portuguese (Brazil)) Currently translated at 97.2% (244 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/pt_BR/ Translated using Weblate Translated using Weblate (Italian) Currently translated at 100.0% (251 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/it/ Translated using Weblate Translated using Weblate (Hungarian) Currently translated at 86.8% (218 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/hu/ Translated using Weblate Translated using Weblate (French) Currently translated at 98.0% (246 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/fr/ Translated using Weblate Translated using Weblate (Spanish) Currently translated at 98.0% (246 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/es/ Translated using Weblate Translated using Weblate (German) Currently translated at 96.4% (242 of 251 strings) Translation: aMule/Application Man Pages Translate-URL: https://hosted.weblate.org/projects/amule/application-man-pages/de/ Translated using Weblate Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 80.2% (1537 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/zh_Hant/ Translated using Weblate Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1916 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/zh_Hans/ Translated using Weblate Translated using Weblate (Ukrainian) Currently translated at 73.9% (1416 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/uk/ Translated using Weblate Translated using Weblate (Turkish) Currently translated at 95.7% (1835 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/tr/ Translated using Weblate Translated using Weblate (Swedish) Currently translated at 80.8% (1550 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/sv/ Translated using Weblate Translated using Weblate (Albanian) Currently translated at 60.1% (1153 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/sq/ Translated using Weblate Translated using Weblate (Slovenian) Currently translated at 81.1% (1554 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/sl/ Translated using Weblate Translated using Weblate (Russian) Currently translated at 100.0% (1916 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ru/ Translated using Weblate Translated using Weblate (Russian) Currently translated at 100.0% (1916 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ru/ Translated using Weblate Translated using Weblate (Romanian) Currently translated at 80.8% (1549 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ro/ Translated using Weblate Translated using Weblate (Portuguese (Portugal)) Currently translated at 80.0% (1534 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/pt_PT/ Translated using Weblate Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1916 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/pt_BR/ Translated using Weblate Translated using Weblate (Polish) Currently translated at 78.1% (1497 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/pl/ Translated using Weblate Translated using Weblate (Norwegian Nynorsk) Currently translated at 67.2% (1288 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/nn/ Translated using Weblate Translated using Weblate (Dutch) Currently translated at 81.5% (1562 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/nl/ Translated using Weblate Translated using Weblate (Lithuanian) Currently translated at 67.2% (1288 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/lt/ Translated using Weblate Translated using Weblate (Korean) Currently translated at 55.8% (1070 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ko/ Translated using Weblate Translated using Weblate (Japanese) Currently translated at 61.5% (1179 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ja/ Translated using Weblate Translated using Weblate (Italian) Currently translated at 100.0% (1916 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/it/ Translated using Weblate Translated using Weblate (Hungarian) Currently translated at 85.5% (1640 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/hu/ Translated using Weblate Translated using Weblate (Croatian) Currently translated at 24.3% (466 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/hr/ Translated using Weblate Translated using Weblate (Hebrew) Currently translated at 43.9% (843 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/he/ Translated using Weblate Translated using Weblate (Galician) Currently translated at 85.4% (1637 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/gl/ Translated using Weblate Translated using Weblate (French) Currently translated at 97.3% (1865 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/fr/ Translated using Weblate Translated using Weblate (Finnish) Currently translated at 80.3% (1539 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/fi/ Translated using Weblate Translated using Weblate (Basque) Currently translated at 80.3% (1539 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/eu/ Translated using Weblate Translated using Weblate (Estonian) Currently translated at 79.2% (1518 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/et/ Translated using Weblate Translated using Weblate (Spanish) Currently translated at 95.5% (1830 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/es/ Translated using Weblate Translated using Weblate (Spanish) Currently translated at 95.5% (1830 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/es/ Translated using Weblate Translated using Weblate (Greek) Currently translated at 70.6% (1354 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/el/ Translated using Weblate Translated using Weblate (German) Currently translated at 86.6% (1661 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/de/ Translated using Weblate Translated using Weblate (Danish) Currently translated at 24.0% (460 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/da/ Translated using Weblate Translated using Weblate (Czech) Currently translated at 90.5% (1734 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/cs/ Translated using Weblate Translated using Weblate (Catalan) Currently translated at 81.7% (1566 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ca/ Translated using Weblate Translated using Weblate (Bulgarian) Currently translated at 13.4% (257 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/bg/ Translated using Weblate Translated using Weblate (Asturian) Currently translated at 74.7% (1432 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ast/ Translated using Weblate Translated using Weblate (Arabic) Currently translated at 15.8% (304 of 1916 strings) Translation: aMule/Application Translate-URL: https://hosted.weblate.org/projects/amule/amule-application/ar/ Co-authored-by: Andrei Stepanov <[email protected]> Co-authored-by: Diego Heras <[email protected]> Co-authored-by: danim7 <[email protected]> Co-authored-by: தமிழ்நேரம் <[email protected]> Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #777. The Windows build embeds wx's default manifest via
#include <wx/msw/wx.rc>inamule.rc, which declares only "System DPI aware". On any non-system per-monitor DPI (e.g. 150% global scaling, multi-monitor setups with mixed scales) Windows applies its bitmap-scaling compatibility shim and the GUI renders blurry — exactly the screenshot in #777.Fix
Embed an explicit application manifest declaring PerMonitorV2 (Win10 1703+) with a PerMonitor fallback via
<dpiAwareness>, plus the legacy<dpiAware>True/PM</dpiAware>for older Windows that doesn't honour the 2016 manifest namespace. Both forms are inert when not understood, so layering them is safe.amule.rcpulls our manifest in beforewx.rc, so the RC compiler keeps our resource (ID 1, type 24) and ignores wx's duplicate;wxUSE_RC_MANIFEST=0additionally tells wx not to emit one on toolchains that respect the knob.Themed Common-Controls v6 (which
wx.rc's manifest normally requests) is now declared in our manifest, since we're replacing wx's entirely.Scope
amule.manifest— new fileamule.rc— embed the manifest beforewx.rc, set the wx knobOnly the
WIN32targets that includeamule.rcare affected (amulemonolithic andamulegui).amuled/amulecmd/amulewebare non-GUI and don't pull in the resource file.Caveats
PerMonitorV2only fixes the desktop manager's bitmap-scaling shim. wxWidgets 3.2's per-monitor DPI support is best-effort — layouts using hardcoded pixel sizes inmuuli_wdr(e.g. the two sites adjusted in #737) may still look slightly off at high scales. That's follow-up work if it shows up.Test plan
amule.manifestparses as well-formed XMLI can't compile-test the resource locally on macOS (windres / mingw-only). Asking the reporters to test once a built artifact is available.