summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdel Gadllah <adel.gadllah@gmail.com>2014-07-28 11:02:03 +0200
committerAdel Gadllah <adel.gadllah@gmail.com>2014-09-14 10:21:46 +0200
commit493c0f71d2084210e8420d26f12dfb4439376d8f (patch)
treef995f69b57bcfab123d0c37a76fe1277f27b59ca
parentab40dfdd516650f4d60ce1690fb414f6d5de2bb2 (diff)
downloadmutter-493c0f71d2084210e8420d26f12dfb4439376d8f.tar.gz
prefs: Update cursor size based on xsettings
We shouldn't scale the cursor size in mutter we g-s-d exports the correct size on hidpi so use gtk-cursor-theme-size. This way we also catch changes on resolution updates. https://bugzilla.gnome.org/show_bug.cgi?id=729337
-rw-r--r--src/core/prefs.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/core/prefs.c b/src/core/prefs.c
index ed73e5d4f..336bc3316 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -137,6 +137,10 @@ static void xsettings_overrides_changed (GSettings *settings,
gchar *key,
gpointer data);
+static void update_cursor_size (GtkSettings *settings,
+ GParamSpec *pspec,
+ gpointer data);
+
static void queue_changed (MetaPreference pref);
static void maybe_give_disable_workarounds_warning (void);
@@ -1012,6 +1016,9 @@ meta_prefs_init (void)
xsettings_overrides_changed (settings, KEY_XSETTINGS_OVERRIDES, NULL);
}
+ g_signal_connect (gtk_settings_get_default (), "notify::gtk-cursor-theme-size",
+ G_CALLBACK (update_cursor_size), NULL);
+
settings = g_settings_new (SCHEMA_INPUT_SOURCES);
g_signal_connect (settings, "changed::" KEY_XKB_OPTIONS,
G_CALLBACK (settings_changed), NULL);
@@ -1032,6 +1039,8 @@ meta_prefs_init (void)
handle_preference_init_string_array ();
handle_preference_init_int ();
+ update_cursor_size (gtk_settings_get_default (), NULL, NULL);
+
init_bindings ();
}
@@ -1270,6 +1279,29 @@ out:
queue_changed (META_PREF_BUTTON_LAYOUT);
}
+static void
+update_cursor_size (GtkSettings *settings,
+ GParamSpec *pspec,
+ gpointer data)
+{
+ GdkScreen *screen = gdk_screen_get_default ();
+ GValue value = G_VALUE_INIT;
+ int xsettings_cursor_size = 24;
+
+ g_value_init (&value, G_TYPE_INT);
+ if (gdk_screen_get_setting (screen, "gtk-cursor-theme-size", &value))
+ {
+ xsettings_cursor_size = g_value_get_int (&value);
+ }
+
+ if (xsettings_cursor_size != cursor_size)
+ {
+ cursor_size = xsettings_cursor_size;
+ queue_changed (META_PREF_CURSOR_SIZE);
+ }
+}
+
+
/**
* maybe_give_disable_workaround_warning:
*