summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3/misc/gpaste/fix-paths.patch
blob: ca6b9a5b22ed1493e4aadc0819c922136308bffe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
--- a/src/gnome-shell/extension.js
+++ b/src/gnome-shell/extension.js
@@ -7,6 +7,8 @@
 
 const Config = imports.misc.config;
 
+imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@');
+
 imports.gi.versions.Clutter = Config.LIBMUTTER_API_VERSION;
 imports.gi.versions.GLib = '2.0';
 imports.gi.versions.GPaste = '1.0';
--- a/src/gnome-shell/prefs.js
+++ b/src/gnome-shell/prefs.js
@@ -7,6 +7,8 @@
 
 const Gettext = imports.gettext;
 
+imports.gi.GIRepository.Repository.prepend_search_path('@typelibPath@');
+
 const GPaste = imports.gi.GPaste;
 
 const ExtensionUtils = imports.misc.extensionUtils;
--- a/src/libgpaste/settings/gpaste-settings.c
+++ b/src/libgpaste/settings/gpaste-settings.c
@@ -22,6 +22,8 @@
 
 typedef struct
 {
+    GSettingsSchemaSource *schema_source;
+    GSettingsSchema *schema;
     GSettings *settings;
     GSettings *shell_settings;
 
@@ -919,6 +921,8 @@
     {
         g_signal_handler_disconnect (settings, priv->c_signals[C_CHANGED]);
         g_clear_object (&priv->settings);
+        g_settings_schema_unref (priv->schema);
+        g_settings_schema_source_unref (priv->schema_source);
     }
 
     if (shell_settings)
@@ -1000,7 +1004,11 @@
 g_paste_settings_init (GPasteSettings *self)
 {
     GPasteSettingsPrivate *priv = g_paste_settings_get_instance_private (self);
-    GSettings *settings = priv->settings = g_settings_new (G_PASTE_SETTINGS_NAME);
+
+    // library used by introspection requires schemas but we cannot set XDG_DATA_DIRS for the library
+    GSettingsSchemaSource *schema_source = priv->schema_source = g_settings_schema_source_new_from_directory ("@gschemasCompiled@", NULL, FALSE, NULL);
+    priv->schema = g_settings_schema_source_lookup (schema_source, G_PASTE_SETTINGS_NAME, FALSE);
+    GSettings *settings = priv->settings = g_settings_new_full (priv->schema, NULL, NULL);
 
     priv->history_name = NULL;
     priv->launch_ui = NULL;