Merge pull request #83245 from worldofpeace/qgnomeplatform-patch

qgnomeplatform: hardcode gsettings schemas
This commit is contained in:
worldofpeace 2020-04-01 02:16:25 -04:00 committed by GitHub
commit e6afda424d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 1 deletions

View file

@ -1,4 +1,16 @@
{ mkDerivation, lib, fetchFromGitHub, pkgconfig, gtk3, qtbase, qmake, qtx11extras, pantheon }:
{ mkDerivation
, lib
, fetchFromGitHub
, pkgconfig
, gtk3
, glib
, qtbase
, qmake
, qtx11extras
, pantheon
, substituteAll
, gsettings-desktop-schemas
}:
mkDerivation rec {
pname = "qgnomeplatform";
@ -11,12 +23,21 @@ mkDerivation rec {
sha256 = "0fb1mzs6sx76bl7f0z2xhc0jq6y1c55jrw1v3na8577is6g5ji0a";
};
patches = [
# Hardcode GSettings schema path to avoid crashes from missing schemas
(substituteAll {
src = ./hardcode-gsettings.patch;
gds_gsettings_path = glib.getSchemaPath gsettings-desktop-schemas;
})
];
nativeBuildInputs = [
pkgconfig
qmake
];
buildInputs = [
glib
gtk3
qtbase
qtx11extras

View file

@ -0,0 +1,24 @@
diff --git a/common/gnomehintssettings.cpp b/common/gnomehintssettings.cpp
index 9860e57..40fa6ec 100644
--- a/common/gnomehintssettings.cpp
+++ b/common/gnomehintssettings.cpp
@@ -80,9 +80,17 @@ void gtkMessageHandler(const gchar *log_domain,
GnomeHintsSettings::GnomeHintsSettings()
: QObject(0)
, m_usePortal(checkUsePortalSupport())
- , m_gnomeDesktopSettings(g_settings_new("org.gnome.desktop.wm.preferences"))
- , m_settings(g_settings_new("org.gnome.desktop.interface"))
{
+ g_autoptr(GSettingsSchemaSource) schemaSource = nullptr;
+ g_autoptr(GSettingsSchema) gnomeDesktopSchema = nullptr;
+ g_autoptr(GSettingsSchema) settingsSchema = nullptr;
+
+ schemaSource = g_settings_schema_source_new_from_directory("@gds_gsettings_path@", g_settings_schema_source_get_default(), true, nullptr);
+ gnomeDesktopSchema = g_settings_schema_source_lookup(schemaSource, "org.gnome.desktop.wm.preferences", false);
+ m_gnomeDesktopSettings = g_settings_new_full(gnomeDesktopSchema, nullptr, nullptr);
+ settingsSchema = g_settings_schema_source_lookup(schemaSource, "org.gnome.desktop.interface", false);
+ m_settings = g_settings_new_full(settingsSchema, nullptr, nullptr);
+
gtk_init(nullptr, nullptr);
// Set log handler to suppress false GtkDialog warnings