[metacity/gnome-3-20] prefs: fix cursor size on HiDPI displays



commit c30c19a0bf77ea146cb972e5343d4ec4db986c9c
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Aug 15 23:41:29 2016 +0300

    prefs: fix cursor size on HiDPI displays
    
    https://bugzilla.gnome.org/show_bug.cgi?id=769798

 src/core/prefs.c |   43 +++++++++++++++++++++++++++++++++----------
 1 files changed, 33 insertions(+), 10 deletions(-)
---
diff --git a/src/core/prefs.c b/src/core/prefs.c
index 8a06291..3f349af 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -49,7 +49,6 @@
 #define KEY_GNOME_ACCESSIBILITY "toolkit-accessibility"
 #define KEY_GNOME_ANIMATIONS "enable-animations"
 #define KEY_GNOME_CURSOR_THEME "cursor-theme"
-#define KEY_GNOME_CURSOR_SIZE "cursor-size"
 
 /* These are the different schemas we are keeping
  * a GSettings instance for */
@@ -435,13 +434,6 @@ static MetaIntPreference preferences_int[] =
       },
       &auto_raise_delay
     },
-    {
-      { KEY_GNOME_CURSOR_SIZE,
-        SCHEMA_INTERFACE,
-        META_PREF_CURSOR_SIZE,
-      },
-      &cursor_size
-    },
     { { NULL, 0, 0 }, NULL },
   };
 
@@ -767,6 +759,38 @@ queue_changed (MetaPreference pref)
                                     changed_idle_handler, NULL, NULL);
 }
 
+static void
+gtk_cursor_theme_size_changed (GtkSettings *settings,
+                               GParamSpec  *pspec,
+                               gpointer     user_data)
+{
+  gint size;
+
+  g_object_get (settings, "gtk-cursor-theme-size", &size, NULL);
+
+  if (size == 0)
+    size = 24;
+
+  if (size != cursor_size)
+    {
+      cursor_size = size;
+      queue_changed (META_PREF_CURSOR_SIZE);
+    }
+}
+
+static void
+init_gtk_cursor_theme_size (void)
+{
+  GtkSettings *settings;
+
+  settings = gtk_settings_get_default ();
+
+  g_signal_connect (settings, "notify::gtk-cursor-theme-size",
+                    G_CALLBACK (gtk_cursor_theme_size_changed), NULL);
+
+  gtk_cursor_theme_size_changed (settings, NULL, NULL);
+}
+
 static gboolean
 in_desktop (const gchar *name)
 {
@@ -917,8 +941,6 @@ meta_prefs_init (void)
                     G_CALLBACK (settings_changed), NULL);
   g_signal_connect (settings, "changed::" KEY_GNOME_CURSOR_THEME,
                     G_CALLBACK (settings_changed), NULL);
-  g_signal_connect (settings, "changed::" KEY_GNOME_CURSOR_SIZE,
-                    G_CALLBACK (settings_changed), NULL);
   g_hash_table_insert (settings_schemas, g_strdup (SCHEMA_INTERFACE), settings);
 
   /* Pick up initial values. */
@@ -930,6 +952,7 @@ meta_prefs_init (void)
   init_bindings ();
   init_workspace_names ();
 
+  init_gtk_cursor_theme_size ();
   init_gtk_decoration_layout ();
   init_gtk_theme_name ();
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]