You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Previously, dtkgui.cmake unconditionally disabled libxdg for all
non-Qt5 builds with:
else()
set(DTK_DISABLE_LIBXDG ON)
endif()
This caused XdgIconProxyEngine to be excluded from the Qt6 build,
falling back to QPlatformTheme::createIconEngine() which uses Qt's
built-in SVG renderer. That renderer incorrectly renders <clipPath>,
<mask>, and <filter> elements outside <defs> as visible shapes,
causing opaque background corners on many app icons.
Fix by using find_package(qt6xdgiconloader QUIET) for Qt6 builds,
mirroring the existing Qt5XdgIconLoader handling. The XdgIconProxyEngine
is also updated to use DSvgRenderer (librsvg) for all scalable SVG
entries to ensure correct rendering.
Two additional fixes for the Qt6 XdgIconProxy path:
1. XdgIconProxyEngine::isNull() is added as a Qt6-only override.
Qt6 changed isNull() from a virtual_hook-based mechanism to a
direct virtual function (default: false), so without this override
the proxy always appeared non-null even when the underlying engine
found no icon. The override also treats entries with dir.size == 0
(from XdgIconLoader::unthemedFallback, e.g. /usr/share/pixmaps)
as null, since XdgIconProxy cannot render them correctly.
2. DIconProxyEngine::ensureEngine() uses QPlatformTheme::createIconEngine()
as an unconditional fallback after the XdgProxy attempt. This lets
Qt's native QIconLoaderEngine handle icons only found in non-themed
locations like /usr/share/pixmaps (e.g. xscreensaver).
Fixes SVG icon rendering issues on Arch.
0 commit comments