File qtstyleplugins-gtksettings.patch of Package libqt5-qtstyleplugins

--- a/src/plugins/platformthemes/gtk2/qgtk2theme.cpp
+++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp
@@ -44,14 +44,28 @@ QT_BEGIN_NAMESPACE
 
 const char *QGtk2Theme::name = "gtk2";
 
-static QString gtkSetting(const gchar *propertyName)
+static QVariant gtkSetting(const gchar *propertyName)
 {
     GtkSettings *settings = gtk_settings_get_default();
-    gchararray value;
-    g_object_get(settings, propertyName, &value, NULL);
-    QString str = QString::fromUtf8(value);
-    g_free(value);
-    return str;
+    GValue value = G_VALUE_INIT;
+    QVariant ret;
+
+    g_object_get_property(G_OBJECT(settings), propertyName, &value);
+    if (G_VALUE_HOLDS_INT(&value)) {
+        ret = QVariant(g_value_get_int(&value));
+    } else if (G_VALUE_HOLDS_UINT(&value)) {
+        ret = QVariant(g_value_get_uint(&value));
+    } else if (G_VALUE_HOLDS_FLOAT(&value)) {
+        ret = QVariant(g_value_get_float(&value));
+    } else if (G_VALUE_HOLDS_STRING(&value)) {
+        ret = QVariant(QString::fromUtf8(g_value_get_string(&value)));
+    } else if (G_VALUE_HOLDS_BOOLEAN(&value)) {
+        ret = QVariant(g_value_get_boolean(&value));
+    } else {
+        ret = QVariant();
+    }
+    g_value_unset(&value);
+    return ret;
 }
 
 QGtk2Theme::QGtk2Theme()
@@ -68,12 +82,27 @@ QGtk2Theme::QGtk2Theme()
 QVariant QGtk2Theme::themeHint(QPlatformTheme::ThemeHint hint) const
 {
     switch (hint) {
+    case QPlatformTheme::CursorFlashTime:
+        // As close to GTK as possible.
+        if (gtkSetting("gtk-cursor-blink").toBool() && gtkSetting("gtk-cursor-blink-timeout").toInt() != 0) {
+            return gtkSetting("gtk-cursor-blink-time");
+        } else {
+            return QVariant((int) 0);
+        }
+    case QPlatformTheme::PasswordMaskDelay:
+        return gtkSetting("gtk-entry-password-hint-timeout");
+    case QPlatformTheme::DialogButtonBoxButtonsHaveIcons:
+        return gtkSetting("gtk-button-images");
+#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
+    case QPlatformTheme::ShowShortcutsInContextMenus:
+        return gtkSetting("gtk-enable-accels");
+#endif
     case QPlatformTheme::SystemIconThemeName:
-        return QVariant(gtkSetting("gtk-icon-theme-name"));
+        return gtkSetting("gtk-icon-theme-name");
     case QPlatformTheme::SystemIconFallbackThemeName:
-        return QVariant(gtkSetting("gtk-fallback-icon-theme"));
+        return gtkSetting("gtk-fallback-icon-theme");
     case QPlatformTheme::StyleNames:
-        return QVariant(QStringList(QStringLiteral("gtk2")));
+        return QStringList(QStringLiteral("gtk2"));
     default:
         return QGnomeTheme::themeHint(hint);
     }
@@ -81,7 +110,7 @@ QVariant QGtk2Theme::themeHint(QPlatform
 
 QString QGtk2Theme::gtkFontName() const
 {
-    QString cfgFontName = gtkSetting("gtk-font-name");
+    QString cfgFontName = gtkSetting("gtk-font-name").toString();
     if (!cfgFontName.isEmpty())
         return cfgFontName;
     return QGnomeTheme::gtkFontName();
openSUSE Build Service is sponsored by