QGtk3Theme: Ensure gtk uses the same windowing system as Qt
Fixes: QTBUG-69354 Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I254c5bf98bc3b2cc2577159e475a2105438bb96b Reviewed-by: Liang Qi <liang.qi@qt.io>
This commit is contained in:
parent
f1a3069afb
commit
3d45f23b02
@ -6,6 +6,7 @@
|
||||
#include "qgtk3menu.h"
|
||||
#include <QVariant>
|
||||
#include <QtCore/qregularexpression.h>
|
||||
#include <QGuiApplication>
|
||||
|
||||
#undef signals
|
||||
#include <gtk/gtk.h>
|
||||
@ -14,6 +15,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
const char *QGtk3Theme::name = "gtk3";
|
||||
|
||||
template <typename T>
|
||||
@ -49,6 +52,14 @@ void gtkMessageHandler(const gchar *log_domain,
|
||||
|
||||
QGtk3Theme::QGtk3Theme()
|
||||
{
|
||||
// Ensure gtk uses the same windowing system, but let it
|
||||
// fallback in case GDK_BACKEND environment variable
|
||||
// filters the preferred one out
|
||||
if (QGuiApplication::platformName().startsWith("wayland"_L1))
|
||||
gdk_set_allowed_backends("wayland,x11");
|
||||
else if (QGuiApplication::platformName() == "xcb"_L1)
|
||||
gdk_set_allowed_backends("x11,wayland");
|
||||
|
||||
// gtk_init will reset the Xlib error handler, and that causes
|
||||
// Qt applications to quit on X errors. Therefore, we need to manually restore it.
|
||||
int (*oldErrorHandler)(Display *, XErrorEvent *) = XSetErrorHandler(nullptr);
|
||||
|
Loading…
Reference in New Issue
Block a user