Merge "wayland: Remove bogus warning about ignoring WAYLAND_DISPLAY"

This commit is contained in:
Eskil Abrahamsen Blomfeldt 2021-02-26 08:20:22 +01:00 committed by Qt CI Bot
commit 09d36158d3

View File

@ -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())