diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2021-02-26 08:20:22 +0100 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2021-03-09 11:05:52 +0100 |
commit | 642ed84a2db1ced7373707230d18e9d677277fa2 (patch) | |
tree | 4cb1e2d584c239878434db3af2c6cb937f1ddec3 /src/gui/kernel/qguiapplication.cpp | |
parent | 2f9a3352b25417845375c47382f6e5fe931c157a (diff) |
wayland: Remove bogus warning about ignoring WAYLAND_DISPLAY
On Gnome, we will not default to Wayland at the moment, even
if the desktop is run in Wayland mode. In this case, we warn
users that they can still select Wayland manually using
QT_QPA_PLATFORM.
Problem was: We never checked if they had actually explicitly
selected Wayland, so even in the cases where we would end up
using that QPA plugin, people would still see the warning.
This moves the check to the end of the platform selection
algorithm, after we have collected all the information.
Pick-to: 6.0 6.1
Change-Id: I0d734bd0782c5e58d6dc63f69b7d531a479ad942
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 2bb5d72bd1..dc62b079de 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1409,18 +1409,16 @@ void QGuiApplicationPrivate::createPlatformIntegration() } const bool defaultIsWayland = !defaultIsXcb && platformPluginBase.startsWith("wayland"); + bool isGnome = false; const QByteArray waylandPlatformName = defaultIsWayland ? platformName : "wayland"; if (hasWaylandDisplay || isWaylandSessionType) { const QByteArray currentDesktop = qgetenv("XDG_CURRENT_DESKTOP").toLower(); const QByteArray sessionDesktop = qgetenv("XDG_SESSION_DESKTOP").toLower(); - const bool isGnome = currentDesktop.contains("gnome") || sessionDesktop.contains("gnome"); - if (isGnome) { - qInfo() << "Warning: Ignoring WAYLAND_DISPLAY on Gnome." - << "Use QT_QPA_PLATFORM=wayland to run on Wayland anyway."; + isGnome = currentDesktop.contains("gnome") || sessionDesktop.contains("gnome"); + if (isGnome) preferredPlatformOrder.append(waylandPlatformName); - } else { + else preferredPlatformOrder.prepend(waylandPlatformName); - } if (defaultIsWayland) platformName.clear(); @@ -1432,9 +1430,11 @@ void QGuiApplicationPrivate::createPlatformIntegration() platformName = preferredPlatformOrder.join(';'); #endif + bool platformExplicitlySelected = false; QByteArray platformNameEnv = qgetenv("QT_QPA_PLATFORM"); if (!platformNameEnv.isEmpty()) { platformName = platformNameEnv; + platformExplicitlySelected = true; } QString platformThemeName = QString::fromLocal8Bit(qgetenv("QT_QPA_PLATFORMTHEME")); @@ -1459,8 +1459,10 @@ void QGuiApplicationPrivate::createPlatformIntegration() if (++i < argc) platformPluginPath = QString::fromLocal8Bit(argv[i]); } else if (strcmp(arg, "-platform") == 0) { - if (++i < argc) + if (++i < argc) { + platformExplicitlySelected = true; platformName = argv[i]; + } } else if (strcmp(arg, "-platformtheme") == 0) { if (++i < argc) platformThemeName = QString::fromLocal8Bit(argv[i]); @@ -1484,6 +1486,15 @@ void QGuiApplicationPrivate::createPlatformIntegration() argc = j; } +#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) + if ((hasWaylandDisplay || isWaylandSessionType) && isGnome && !platformExplicitlySelected) { + qInfo() << "Warning: Ignoring WAYLAND_DISPLAY on Gnome." + << "Use QT_QPA_PLATFORM=wayland to run on Wayland anyway."; + } +#else + Q_UNUSED(platformExplicitlySelected); +#endif + init_platform(QLatin1String(platformName), platformPluginPath, platformThemeName, argc, argv); if (!icon.isEmpty()) |