https://bugs.kde.org/show_bug.cgi?id=425315

Ilya Fedin <fedin-ilja2...@ya.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fedin-ilja2...@ya.ru

--- Comment #52 from Ilya Fedin <fedin-ilja2...@ya.ru> ---
TL;DR Qt's architecture is complicated in order to fallback to XEMBED when SNI
is not available, since it's an architectural issue in Qt, it may be they never
would fix the architecture to allow switching the backends on the fly (as needs
a lot of work). Since they don't switch on the fly, the effect is if SNI host
is started after application is started, the tray icon is blurry on X11 and
doesn't show at all on Wayland (as there's nowhere to fallback). As Discord is
mentioned in this bug, it may be that Electron has a similar issue. So it may
be way easier to ensure that applications are started after all services like
SNI host, global menu service, xsettingsd (Qt reads XSETTINGS and doesn't
handle when it appears after Qt initialization, just like with SNI/global
menu), kwin (https://bugreports.qt.io/browse/QTBUG-95338) and etc, rather than
fixing all bugs in all toolkits.

That's where Qt decides to use SNI or not:
https://github.com/qt/qtbase/blob/a8e6a0e546a6a90ff2daee79c3cf504b7160cb86/src/gui/platform/unix/qgenericunixthemes.cpp#L71-L101

It's called by createPlatformSystemTrayIcon() down this file. If it's not
available, it returns nullptr.

Every other platform has built-in platformtheme and has windowing system-based
tray backend returned by createPlatformSystemTrayIcon() therefore. But X11 is
different. They replace entire private QSystemTrayIcon class implementation for
it:
https://github.com/qt/qtbase/blob/a8e6a0e546a6a90ff2daee79c3cf504b7160cb86/src/widgets/CMakeLists.txt#L825-L833

So it tries to call createPlatformSystemTrayIcon() and creates X11 window right
in the private class:
https://github.com/qt/qtbase/blob/a8e6a0e546a6a90ff2daee79c3cf504b7160cb86/src/widgets/util/qsystemtrayicon_x11.cpp#L186-L217

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to