Merge pull request #248053 from bobby285271/upd/qgnomeplatform-bpo

qgnomeplatform: Backport cursor fix for Qt6 apps
This commit is contained in:
Bobby Rong 2023-08-11 22:03:01 +08:00 committed by GitHub
commit 63de02b400
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 0 deletions

View file

@ -33,6 +33,10 @@ stdenv.mkDerivation rec {
src = ./hardcode-gsettings.patch;
gds_gsettings_path = glib.getSchemaPath gsettings-desktop-schemas;
})
# Backport cursor fix for Qt6 apps
# Ajusted from https://github.com/FedoraQt/QGnomePlatform/pull/138
./qt6-cursor-fix.patch
];
nativeBuildInputs = [

View file

@ -0,0 +1,53 @@
diff --git a/src/common/gnomesettings.cpp b/src/common/gnomesettings.cpp
index 961f75d..d947eb2 100644
--- a/src/common/gnomesettings.cpp
+++ b/src/common/gnomesettings.cpp
@@ -210,7 +210,7 @@ GnomeSettingsPrivate::GnomeSettingsPrivate(QObject *parent)
QStringLiteral("SettingChanged"), this, SLOT(portalSettingChanged(QString,QString,QDBusVariant)));
}
- if (QGuiApplication::platformName() != QStringLiteral("xcb")) {
+ if (true) {
cursorSizeChanged();
cursorThemeChanged();
}
@@ -347,11 +347,11 @@ void GnomeSettingsPrivate::gsettingPropertyChanged(GSettings *settings, gchar *k
} else if (changedProperty == QStringLiteral("monospace-font-name")) {
gnomeSettings->fontChanged();
} else if (changedProperty == QStringLiteral("cursor-size")) {
- if (QGuiApplication::platformName() != QStringLiteral("xcb")) {
+ if (true) {
gnomeSettings->cursorSizeChanged();
}
} else if (changedProperty == QStringLiteral("cursor-theme")) {
- if (QGuiApplication::platformName() != QStringLiteral("xcb")) {
+ if (true) {
gnomeSettings->cursorThemeChanged();
}
// Org.gnome.wm.preferences
@@ -393,13 +393,23 @@ void GnomeSettingsPrivate::cursorBlinkTimeChanged()
void GnomeSettingsPrivate::cursorSizeChanged()
{
int cursorSize = getSettingsProperty<int>(QStringLiteral("cursor-size"));
- qputenv("XCURSOR_SIZE", QString::number(cursorSize).toUtf8());
+ if (QGuiApplication::platformName() != QStringLiteral("xcb")) {
+ qputenv("XCURSOR_SIZE", QString::number(cursorSize).toUtf8());
+ }
+#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
+ m_hints[QPlatformTheme::MouseCursorSize] = QSize(cursorSize, cursorSize);
+#endif
}
void GnomeSettingsPrivate::cursorThemeChanged()
{
const QString cursorTheme = getSettingsProperty<QString>(QStringLiteral("cursor-theme"));
- qputenv("XCURSOR_THEME", cursorTheme.toUtf8());
+ if (QGuiApplication::platformName() != QStringLiteral("xcb")) {
+ qputenv("XCURSOR_THEME", cursorTheme.toUtf8());
+ }
+#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
+ m_hints[QPlatformTheme::MouseCursorTheme] = cursorTheme;
+#endif
}
void GnomeSettingsPrivate::fontChanged()