Blame SOURCES/cursor-size-selection.patch

57bc60
From d0e477e42b8d9567d3e675a49e9eafccaa6cda79 Mon Sep 17 00:00:00 2001
57bc60
From: Bastien Nocera <hadess@hadess.net>
57bc60
Date: Mon, 6 Mar 2017 16:39:29 +0100
57bc60
Subject: [PATCH 1/4] universal-access: Don't use C++ style comments
57bc60
57bc60
---
57bc60
 panels/universal-access/cc-ua-panel.c | 4 ++--
57bc60
 1 file changed, 2 insertions(+), 2 deletions(-)
57bc60
57bc60
diff --git a/panels/universal-access/cc-ua-panel.c b/panels/universal-access/cc-ua-panel.c
57bc60
index 477a6895a..88e55e66e 100644
57bc60
--- a/panels/universal-access/cc-ua-panel.c
57bc60
+++ b/panels/universal-access/cc-ua-panel.c
57bc60
@@ -358,7 +358,7 @@ activate_row (CcUaPanel *self, GtkListBoxRow *row)
57bc60
   const gchar *dialog_id;
57bc60
   const gchar *widget_name;
57bc60
 
57bc60
-  // Check switches to toggle
57bc60
+  /* Check switches to toggle */
57bc60
   widget_name = gtk_buildable_get_name (GTK_BUILDABLE (row));
57bc60
   if (widget_name)
57bc60
     {
57bc60
@@ -384,7 +384,7 @@ activate_row (CcUaPanel *self, GtkListBoxRow *row)
57bc60
         }
57bc60
     }
57bc60
 
57bc60
-  // Check dialog to open
57bc60
+  /* Check dialog to open */
57bc60
   dialog_id = (const gchar *)g_object_get_data (G_OBJECT (row), "dialog-id");
57bc60
   if (g_strcmp0 (dialog_id, "zoom") == 0)
57bc60
     {
57bc60
-- 
57bc60
2.12.0
57bc60
57bc60
57bc60
From 1d3aadcf331572b770b89d22101edc8fdfc1ca8d Mon Sep 17 00:00:00 2001
57bc60
From: Bastien Nocera <hadess@hadess.net>
57bc60
Date: Mon, 6 Mar 2017 17:30:07 +0100
57bc60
Subject: [PATCH 2/4] universal-access: Add bits for glade to shut up
57bc60
57bc60
---
57bc60
 panels/universal-access/uap.ui | 2 ++
57bc60
 1 file changed, 2 insertions(+)
57bc60
57bc60
diff --git a/panels/universal-access/uap.ui b/panels/universal-access/uap.ui
57bc60
index e6c7955dc..636b7740d 100644
57bc60
--- a/panels/universal-access/uap.ui
57bc60
+++ b/panels/universal-access/uap.ui
57bc60
@@ -1,5 +1,7 @@
57bc60
 
57bc60
+
57bc60
 <interface>
57bc60
+  <requires lib="gtk+" version="3.0"/>
57bc60
   <object class="GtkAdjustment" id="double-click-delay-adjustment">
57bc60
     <property name="lower">100</property>
57bc60
     <property name="upper">1000</property>
57bc60
-- 
57bc60
2.12.0
57bc60
57bc60
57bc60
From d0c8026172f441d00519577064aad04d7cd68429 Mon Sep 17 00:00:00 2001
57bc60
From: Bastien Nocera <hadess@hadess.net>
57bc60
Date: Mon, 6 Mar 2017 17:28:33 +0100
57bc60
Subject: [PATCH 3/4] universal-access: Add Cursor Size selection dialogue
57bc60
57bc60
The dialogue offers the 5 separate cursor sizes that adwaita's cursor
57bc60
theme supports, aligned in a row.
57bc60
57bc60
The cursor sizes are described in a way that doesn't judge their
57bc60
respective sizes, but simply describes them.
57bc60
57bc60
https://bugzilla.gnome.org/show_bug.cgi?id=608231
57bc60
---
57bc60
 panels/universal-access/cc-ua-panel.c              | 118 +++++++++++++++++++++
57bc60
 panels/universal-access/left_ptr_24px.png          | Bin 0 -> 762 bytes
57bc60
 panels/universal-access/left_ptr_32px.png          | Bin 0 -> 1081 bytes
57bc60
 panels/universal-access/left_ptr_48px.png          | Bin 0 -> 1766 bytes
57bc60
 panels/universal-access/left_ptr_64px.png          | Bin 0 -> 2447 bytes
57bc60
 panels/universal-access/left_ptr_96px.png          | Bin 0 -> 3995 bytes
57bc60
 panels/universal-access/uap.ui                     | 111 +++++++++++++++++++
57bc60
 .../universal-access.gresource.xml                 |   5 +
57bc60
 8 files changed, 234 insertions(+)
57bc60
 create mode 100644 panels/universal-access/left_ptr_24px.png
57bc60
 create mode 100644 panels/universal-access/left_ptr_32px.png
57bc60
 create mode 100644 panels/universal-access/left_ptr_48px.png
57bc60
 create mode 100644 panels/universal-access/left_ptr_64px.png
57bc60
 create mode 100644 panels/universal-access/left_ptr_96px.png
57bc60
57bc60
diff --git a/panels/universal-access/cc-ua-panel.c b/panels/universal-access/cc-ua-panel.c
57bc60
index 88e55e66e..1985f7718 100644
57bc60
--- a/panels/universal-access/cc-ua-panel.c
57bc60
+++ b/panels/universal-access/cc-ua-panel.c
57bc60
@@ -50,6 +50,7 @@
57bc60
 #define KEY_ICON_THEME               "icon-theme"
57bc60
 #define KEY_CURSOR_BLINKING          "cursor-blink"
57bc60
 #define KEY_CURSOR_BLINKING_TIME     "cursor-blink-time"
57bc60
+#define KEY_MOUSE_CURSOR_SIZE        "cursor-size"
57bc60
 
57bc60
 /* application settings */
57bc60
 #define APPLICATION_SETTINGS         "org.gnome.desktop.a11y.applications"
57bc60
@@ -178,6 +179,67 @@ zoom_options_launch (CcUaPanel *self)
57bc60
 			     GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (self))));
57bc60
 }
57bc60
 
57bc60
+/* cursor size dialog */
57bc60
+static void
57bc60
+cursor_size_toggled (GtkWidget *button,
57bc60
+                     CcUaPanel *self)
57bc60
+{
57bc60
+  CcUaPanelPrivate *priv = self->priv;
57bc60
+  guint cursor_size;
57bc60
+
57bc60
+  if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
57bc60
+    return;
57bc60
+
57bc60
+  cursor_size = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (button), "cursor-size"));
57bc60
+  g_settings_set_int (priv->interface_settings, KEY_MOUSE_CURSOR_SIZE, cursor_size);
57bc60
+  g_debug ("Setting cursor size to %d", cursor_size);
57bc60
+}
57bc60
+
57bc60
+static void
57bc60
+cursor_size_setup (CcUaPanel *self)
57bc60
+{
57bc60
+  guint cursor_sizes[] = { 24, 32, 48, 64, 96 };
57bc60
+  guint current_cursor_size, i;
57bc60
+  CcUaPanelPrivate *priv = self->priv;
57bc60
+  GtkWidget *grid;
57bc60
+  GtkSizeGroup *size_group;
57bc60
+  GtkWidget *last_radio_button = NULL;
57bc60
+
57bc60
+  grid = WID ("cursor_size_grid");
57bc60
+  gtk_style_context_add_class (gtk_widget_get_style_context (grid), "linked");
57bc60
+
57bc60
+  current_cursor_size = g_settings_get_int (priv->interface_settings,
57bc60
+                                            KEY_MOUSE_CURSOR_SIZE);
57bc60
+  size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
57bc60
+
57bc60
+  for (i = 0; i < G_N_ELEMENTS(cursor_sizes); i++)
57bc60
+    {
57bc60
+      GtkWidget *image, *button;
57bc60
+      char *cursor_image_name;
57bc60
+
57bc60
+      cursor_image_name = g_strdup_printf ("/org/gnome/control-center/universal-access/left_ptr_%dpx.png", cursor_sizes[i]);
57bc60
+      image = gtk_image_new_from_resource (cursor_image_name);
57bc60
+      g_free (cursor_image_name);
57bc60
+
57bc60
+      button = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON (last_radio_button));
57bc60
+      last_radio_button = button;
57bc60
+      gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE);
57bc60
+      g_object_set_data (G_OBJECT (button), "cursor-size", GUINT_TO_POINTER (cursor_sizes[i]));
57bc60
+
57bc60
+      gtk_container_add (GTK_CONTAINER (button), image);
57bc60
+      gtk_grid_attach (GTK_GRID (grid), button, i, 0, 1, 1);
57bc60
+      gtk_size_group_add_widget (size_group, button);
57bc60
+
57bc60
+      g_signal_connect (button, "toggled",
57bc60
+                        G_CALLBACK (cursor_size_toggled), self);
57bc60
+
57bc60
+      if (current_cursor_size == cursor_sizes[i])
57bc60
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
57bc60
+    }
57bc60
+
57bc60
+  gtk_widget_show_all (grid);
57bc60
+}
57bc60
+
57bc60
 /* seeing section */
57bc60
 
57bc60
 static gboolean
57bc60
@@ -271,6 +333,45 @@ on_off_label_mapping_get (GValue   *value,
57bc60
   return TRUE;
57bc60
 }
57bc60
 
57bc60
+static gboolean
57bc60
+cursor_size_label_mapping_get (GValue   *value,
57bc60
+                               GVariant *variant,
57bc60
+                               gpointer  user_data)
57bc60
+{
57bc60
+  char *label;
57bc60
+  int cursor_size;
57bc60
+
57bc60
+  cursor_size = g_variant_get_int32 (variant);
57bc60
+
57bc60
+  switch (cursor_size)
57bc60
+    {
57bc60
+      case 24:
57bc60
+        /* translators: the labels will read:
57bc60
+         * Cursor Size: Default */
57bc60
+        label = g_strdup (C_("cursor size", "Default"));
57bc60
+        break;
57bc60
+      case 32:
57bc60
+        label = g_strdup (C_("cursor size", "Medium"));
57bc60
+        break;
57bc60
+      case 48:
57bc60
+        label = g_strdup (C_("cursor size", "Large"));
57bc60
+        break;
57bc60
+      case 64:
57bc60
+        label = g_strdup (C_("cursor size", "Larger"));
57bc60
+        break;
57bc60
+      case 96:
57bc60
+        label = g_strdup (C_("cursor size", "Largest"));
57bc60
+        break;
57bc60
+      default:
57bc60
+        label = g_strdup_printf (_("%d pixels"), g_variant_get_int32 (variant));
57bc60
+        break;
57bc60
+    }
57bc60
+
57bc60
+  g_value_take_string (value, label);
57bc60
+
57bc60
+  return TRUE;
57bc60
+}
57bc60
+
57bc60
 static void
57bc60
 add_separators (GtkListBox *list)
57bc60
 {
57bc60
@@ -434,6 +535,23 @@ cc_ua_panel_init_seeing (CcUaPanel *self)
57bc60
                                 priv->interface_settings,
57bc60
                                 NULL);
57bc60
 
57bc60
+  /* cursor size */
57bc60
+
57bc60
+  cursor_size_setup (self);
57bc60
+
57bc60
+  g_settings_bind_with_mapping (priv->interface_settings, KEY_MOUSE_CURSOR_SIZE,
57bc60
+                                WID ("value_cursor_size"),
57bc60
+                                "label", G_SETTINGS_BIND_GET,
57bc60
+                                cursor_size_label_mapping_get,
57bc60
+                                NULL, NULL, NULL);
57bc60
+
57bc60
+  dialog = WID ("cursor_size_dialog");
57bc60
+  priv->toplevels = g_slist_prepend (priv->toplevels, dialog);
57bc60
+
57bc60
+  g_object_set_data (G_OBJECT (WID ("row_cursor_size")), "dialog", dialog);
57bc60
+  g_signal_connect (dialog, "delete-event",
57bc60
+                    G_CALLBACK (gtk_widget_hide_on_delete), NULL);
57bc60
+
57bc60
   /* zoom */
57bc60
 
57bc60
   g_settings_bind_with_mapping (priv->application_settings, "screen-magnifier-enabled",
57bc60
diff --git a/panels/universal-access/left_ptr_24px.png b/panels/universal-access/left_ptr_24px.png
57bc60
new file mode 100644
57bc60
index 0000000000000000000000000000000000000000..46f77601dea43e8a9a0739a145633b2218230f0e
57bc60
GIT binary patch
57bc60
literal 762
57bc60
zcmV
57bc60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;R6Q=EeV~R`6>Va0*6UN
57bc60
zK~y-)m6I_@TTv8-KTT5`W71$_B`Q%w;-D_#P>~K!wNh{>3Y|(7B`BR*`#RbwL(EW@
57bc60
z2En1yDIgTZfI~rW5W%IOQ>%g^LX>ABrs|9F?-C^{wR)C&hx>o$Kj+*7U^h)O3b=tn
57bc60
z?ifx<T3lS51j_FUa7og}#>UCq+}u~-@m&BeNos6t)YjIPH8V341-!QfxFpH#cB`eO
57bc60
zMcdok*6i%;XW-Fo04_;#I2
57bc60
z_V%n;EcOZT+yrn*5+JA3sq*r2)z#Ihr>94zX
57bc60
zsJFLQ$z;-sMx$?Y|DfQXVn8J&CGz=v3IqabZf@4l(2!E8)JZfN4FayKfJ@?{q9S>{
57bc60
zUe(mpsHv$*t*xyx3`40@>LeTvzsUz&YeXiK!LqDN=hD&=;c)o=z`($lP$<*|6rTew
57bc60
zWd`JMIOOyBw7$N6rYn(7rw<~LNC#lQCa$io*5KfvJRXk>!_e~b@)i&TUIJafbD#-$
57bc60
za7kQSTdU2@&CLG({%K`prTl)s5{X2nudnYNP?hVrJ7>G_qUJy#z{0}9>GbsUkCl~`
57bc60
zpTS@-dw6)r#KeTHzrX)Aa1TfW2f!cT>>~5d&Q4}@bo4vWIXpc4!Zb~*qM}0e_4P_7
57bc60
zlbP=B?pJ{G+MKi5Y&H^!d;^~4Hp;cSx;j5HGLrRry^6=<*4WtC1W
57bc60
zZ<7kg$H$+Vrg=0!KYzTtyL;5u*7iOJz7Q7xww#?TaCBY^;4loMLsIM1)YR{_wY5dy
57bc60
s7jT>}&bOhwdjU`cl;nVEz{-E~7sl3M3zH_@{r~^~07*qoM6N<$g72Pdm;e9(
57bc60
57bc60
literal 0
57bc60
HcmV?d00001
57bc60
57bc60
diff --git a/panels/universal-access/left_ptr_32px.png b/panels/universal-access/left_ptr_32px.png
57bc60
new file mode 100644
57bc60
index 0000000000000000000000000000000000000000..5d9ba96be4a15321c24a371038e7bbc3b0002a1b
57bc60
GIT binary patch
57bc60
literal 1081
57bc60
zcmV-91jhS`P)
57bc60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;R6Q=EggqOEmr^l1I9^2
57bc60
zK~zY`t<_&ht92L$@b9}bw@zm=-Jg~*3#6sip|(Rrt27yUkzR=4z*8pdCYFmG@It~R
57bc60
zF=6-*>>|vIE)3aBCCE7t#9avL!gUkkF&v^B3q#m(LhCT!{oeQK=G~ZXo;;_1@Lav`
57bc60
z`+1(<pXc`i0EkG3|6>@9#@js4?>U{$y8tQy$etO~>-8!kqSMpUgQljYcm5MtU0tmv
57bc60
zA`(TB5{blt#bSB;nZZ0ZF)=}BXJ<kpk$Bk9&~Oic>Z!pz*4NiZHk*yk&(DS9
57bc60
z$@CV0J5L4XvEJTZ(rUHT+1W{%Oh!03IQZ3IFuWmw+)b=PRzVQJ7(+A~g~Q>H)z;SD
57bc60
z3x~rqDwV1h!0nrWB^YB2J3BjYxm+@n$@D=a68TP{P#6I`_itbUBccMv7{lh~CI$xw
57bc60
zxyHuEmPjP>4S<&bD4zsgTHIocF^2W^bqoy+ab~mmqphv2Q2;eh0xx03Q_aWP+8TU5
57bc60
zA7`~%?Hd~#UH}FFigIAdwqL~
57bc60
z&E^P&LW2NaxC)kFS2v<KmX?;__xsV&(b2!MvN8Zb51=9smOb6qVT>`%&COwPaS`q9
57bc60
z?GF|f7Cr}{%Y*WAm?(;ck2#J*TU#3x3I&u(B@_w;j*gCyNF=!K?(Q#VXJ@kxhvRzy
57bc60
zj|%N%x7!IoA>?v7RaRD#!C;_BBtqAXTrQUj1Oi_GsFGiI0G&=J=I7_Z7{m1RG^|!D
57bc60
zy1Kf4SYBTK4ZvRj1S#=j0Dk~bmaWX|^%4=$z`y{h)oQA#siFP-eIXi+J_OJXpaH-u
57bc60
z0A2=Qly>&{5^QvIlmtPb!^6WrPfkt*tyW7qosL{C7cs`fo}M13)LIn)Zb=~nz+J+o
57bc60
zrlyE7CXS7b1uYiKSJ`Zqx!rE6s;VNR(Ma)lT-e^;-U4v9Y~$y#-Q8Wv<#OW4$jDCs
57bc60
zJ^}FV-rnBN$z+mgG#b+D_2lt*=;GpnwYIi?EFB41S&Zj-VR(4>M*#N$ybhq+
57bc60
z^E~VC?<b8$Lv?j^luoCGKp-#=;8kg=modf|@ALV-1z?vJ_l~p{>R2omjK||lr_+(y
57bc60
zY^GEyCHVdR6##FR+#q_rUbVWq`Wb-t0ho&JeGWi{*Xy-rGMUGzREp(tIWd_`KB}*;
57bc60
ze*oaMtG&rdrRFR78^DEhMDov7ZnyixmX?<Lu~>{BA0PiEolfrq_#HqRfLM%iQYFP5
57bc60
zP&{r)$+XhHAS)pm0Ic|Z?uI`xSy6~mlqCKKwtYsZ`atu@00000NkvXXu0mjfq1E$r
57bc60
57bc60
literal 0
57bc60
HcmV?d00001
57bc60
57bc60
diff --git a/panels/universal-access/left_ptr_48px.png b/panels/universal-access/left_ptr_48px.png
57bc60
new file mode 100644
57bc60
index 0000000000000000000000000000000000000000..51b1dc2f726b2adc3fff54246b5b799a91db35b9
57bc60
GIT binary patch
57bc60
literal 1766
57bc60
zcmV
57bc60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;R6Q=Eh|X;xXu6o26IV7
57bc60
zK~z}7y_aohl-U)>|1%~tnU`c<
57bc60
zT*nts1aVP>6t~+<jcE-QHEf6!^C3|-2?UG=wAe-n$hOrFYHW>7CX>v}Gtd0@%Y7c6
57bc60
zn90Po*}ZTXE<AI8=bU@b|C|c|AgRX>G!)PUlDZ!XY9`6Yj~`zK@FM_)0E`-AR(x0~
57bc60
z#=U#@x&XWb!2Nwf3#b{x!^3|TP}lbbwJESvDn*hU7#R4Y25MMos0!S_e?MheCdu@T
57bc60
z8#jIrpbCIfKy@n)bT}M5a^#4zOkcl#{dWTDSV^b~wApMdEG*=S6DLTLvMkG2u3Y&X
57bc60
zz&ZiVT?wcPv|6onI-T_Sd~9oLQ_eNj(a~{Sq>OzfpeoR0GSP0gbM@-g^!xp6Z*M0_
57bc60
zN|Ka{L?TB4RIUV61saV;=I7_r<#Ms8sE8#cCG70%BuOTd$;7#H=UM?&0I>Z(P!*Vy
57bc60
zlS8xFOozikkH^D6Ai#=>3U+sQlO*Hu`25L}Cz}D311JEH^EOZwsMqV6mzT$af&#kT
57bc60
zZWb38v$V97RaI5&>+4gXbH|S#{|$h$w}q-e0L;zJrNv^Q)9Iww>t!$)WJN^
57bc60
zfq?;%<lNlcOlxavBY;u>`QH_~0I1jNX)>AA6!H80EGsMHx^?SVQ&Yo{kr9$)EEbz?
57bc60
zX=(WcK*@K7E&u|c!C;`(YNgBNqR;2!nl)=!Sy{>T>({fcu8yOlqa?{_H2QMSo;@D{
57bc60
zSo5aPj2bD+GScZZWLZ|HvW~~&2#3RX@ZbTgR;#nEt?i43hK7wo7>oc`WrJn}YGLVg
57bc60
zdeJ%-i{aqGgP53@fX!xG-PzgMzH{f!YN5MXp&5ZBvwA7ZGG=CG(AwIHM~@!CZnt|c
57bc60
zUcC6_)~#FL(RixQ1YNT1Eazo9oyPR^G!7j)geOm)!0mPiu3fv<zG>5@s%+3@f!Vy2
57bc60
zWf@abQwWE{c=qfW+-`SCcX#)f)z#G%LIM{-vliAj@luv$OioTB91df0auQyzx3aIV
57bc60
z?~AgsvQiCHr$Dm;m+~sp`uX$cIC}IbUcP(@zu&)pXlUpU!C
57bc60
zPoLuO;lp_K>J@^);Jbr^gKaLC%P%BQE#Qk1UpsX=9gRk#s;}kc<(!(D;+u|%iHTve
57bc60
z*}PF{KbQ58<N_~dXJ>Kg(xo>R>a}av{`~&^`=^XXqYZ#TCp`Qg0O)j?1!DK^-RSM@
57bc60
zh0$n)!C-*L
57bc60
zjvZ
57bc60
zmXahfl}gE>Q0OxN?~BS&DEe8am=1Ai%tG8V1J9m4tMoH+EEY?UWPN?T+Jg9eKKAtV
57bc60
zkR(S&Muq`w2H+PP=Zejhxk@Vl3xGPEPVLx|$)p?(hp%^ab$u<uN3+>XyWLKY$HUE=
57bc60
zH&d2nCK8EcU0q$H2wj0jytQ+2J=E!RJb(VY7WNf@PXmEK)7;!#lq5r;keVVzMMb=I
57bc60
z>lR6}zrVi^z|R19mTQ_-;DrkpNRo*}BGuB;as|L|0qg+q{^;oFC6XK*9Hhl!p~K;z
57bc60
z*Xw0NLxa+G#LCOdKNhW|HJggrw22yz$ED`x=F8&deIOn+fo
57bc60
z6c-nBY;24qdG+emzW}He&%GtvNSg+h*t>V{p8zxg_=PwVm$=TJ@$vDCBzg1Z%>`Zh
57bc60
zzJ2>hlH=p!;{dh+2m;7ksvZ&mlF8)!fddC39UUFF0sIrdzeS=(MMBS>K7G1flBD@i
57bc60
zD1@4t8dZTLNdf@m=H}*!Te@Tc27r7?l4gz_JJt%|*8sMNcZ5UpHq?m_6+V3Uu!|(e
57bc60
z#>Uv#*vK<y&M+E{k|ZOM$X@~cN}Qv4sdF^<_V)e~z>fj^M0C}!zaMns&z9}mw^vV3
57bc60
zPd|QLq=$xv?(6mXW?^t(sgNp`TZBbv0CNE50i=|0Yrf3^P_S#)uIi?yroB$5bM1>4
57bc60
zFXnrCdj1}XME)l9@?YXN3P65s57lx-4Jbg1KGY
57bc60
z6KH;!0hS4>M8zP!pBK@I3s}Z|-sZWbKv!urlENEVOe|&ew@NkcY$HW^Hvj+t07*qo
57bc60
IM6N<$g64`
57bc60
57bc60
literal 0
57bc60
HcmV?d00001
57bc60
57bc60
diff --git a/panels/universal-access/left_ptr_64px.png b/panels/universal-access/left_ptr_64px.png
57bc60
new file mode 100644
57bc60
index 0000000000000000000000000000000000000000..4cf77a45b5d03b3e066ffc5b36f1a17fe98ac0f6
57bc60
GIT binary patch
57bc60
literal 2447
57bc60
zcmV;A32^p_P)
57bc60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;R6Q=EjhbI$%X&`2^>j8
57bc60
zK~z}7&6$62RMi#7KfBpLl4Y}OLVo`u8ces8Snv-NP^f5sSddc3U=1`Rng*;*15$s~
57bc60
zI56O#)Qnq0bO0v;!%!yE5Sz>dC&G+tW+G^HqB6rMqs0zl8WJ~~ADe78yYKW5?`~g0
57bc60
zvSj&X@64Iqef!>hpZ7iIo_p_k0EozH{*T&p5gGaX^UogwW&tySIKTuL0mF?3iW3nD
57bc60
z1Omg&&CTn8*+4R22BN
57bc60
z;YuaSxaReGJ<mMzOb{wXL75bg;f4YEe7+FW(9n>(yu5rp@WUGo6#{B%YLbSAh7i=?
57bc60
z;Gk>$`t=V3b`|JxHv%dI)Y#Z4$;rvm+}s?38W
57bc60
zBSTJ{I1z$!yWRg;v0}vo3M%P(Lxq4E8XClEwaTnnvm`e+SK8a#Lr}fFz2Dq--+ilq
57bc60
z{Ob)h2FPNuNJ2t_q@<)sUS6Jj@WBTmsGgplua+!XvI4k8W%XDc)HP{F{SOgA)3lIz
57bc60
zJRV9)N;rM`^mpWmi8&1o4UU3>f?U9+%TZC+3d%VCfF4NGH2V7bShsE+XU?1fASERw
57bc60
zueG)H6}#P@eLd#AunGmu?RHaAQo@&CehENoYHI%5Z@=xx$;ru5P}eM*PYFoVG`hRH
57bc60
zDJd!8>#x5CATu*_URzt+%bA&(nL4Ge8tSqx(_3d}C&k6Zbar+Eke!|VW2e)(%Vx8s
57bc60
zDX7@1g^CDB(=;wzxIkH189hBc0Ni}@%?sPx+jqpo#H6Y~kG-07a0yU2w*~FoxpS14
57bc60
zm*aN30kGTc%Rc<@!|f)MDH*Wp+!ryFaiW8l1JX2&vuDq;VZ#Rc`}+ZyJ9qB#_uqfN
57bc60
zN=+|To%
57bc60
zm6dqCUH}#?T2$zCI{%=c;(?e*V(O}aG)<$Uql2fPej1<82f)&$OV=Gge*E`pdWi^X
57bc60
zQlO~>x86>jI>pwlTk-q-0NiuWJ;lw<&5!EbHzg=zINC^|+S=OKzI{7^Kmfq7a^=bm
57bc60
zZ@&3vaU@EG1&RbFXile->gsAl1i*0r{r5k9`0(L1I;iQo$=DDP(3L{H_10TB91cVT
57bc60
zqtR$wvu4efef##U1`+{_Qffk|>jI={8Z9j??A^N;fT*absM6BXKkwPIXQfhVQYhn8
57bc60
za>JEEH8wVK=+L1cl
57bc60
zJMY!GZ<-!zN<fj0w()l0zyXdPJqkc{boBJin>RoI?6c3_2_%e%GEQ}lxf&pVy1F`A
57bc60
zT3Ws<w@jZNTUAxHtD>UfcAfjC0Y=l+0>#J2^WuvyVl)~
57bc60
zdEtc@s)vV%D_(#7^?w2ah$)h#!9;Q6a=9>@%`98CEb=-~T-;2D!|}4;@87t8|Nf7G
57bc60
zfbmL!^!D0ouU+vP+H5w@s;Q}|DJ?C%35YXA+QE_~OE`J*
57bc60
zvV8gSLr$mj0^k9>z$l<8x1c^Xz^BgX1-=DL5h?WKlTUK|_;K>`@+MWuXfztOZQHg0
57bc60
z7yx>J3&6jDf9dR;vhzR};0A^O|CE8YZr#eRUAu^iisGrKp1K66wY8NmzW4%w#ful)
57bc60
z@3`ZR7@$wx@VtULr-S-R9UBkzzpZqAeZ2&uU2i*g?i^Fl8XX-KyWK8kvsq@&oGD33
57bc60
zNs^Y9CR?^_37vD|#0e+x0I(3aNiA&?)b2!YRyFCG)e18_&`U496uOC~X`%0Lyzz#_
57bc60
z#>Pr~e7qzkCQ3?5isa_zN@r(hunIRaZ{ED$0gHef-I^$R0y8O#niR-jFo?t9(AOSE
57bc60
zAA9Vv#;&feZ-dpg{QP{GF=K|<Y&J<sN|N;SblI_EN9dZCmX;>qUR9j1skzIjo4Y2m
57bc60
zOMwgqgY4eDTVHb=EiW%W0z6k!Q}g%W@x6QZN?cr=Sglq`OiYy2)KtmO&li`=6)X!5
57bc60
zW@l#?0k;8ZYI}6q!o(OLgTWxLzWS;j##dHWb_n
57bc60
zvq^GtvSegrNKH*m==vi^j{FU{8^}{J6Fp_1hK2??aNvNx@aZioD%uZh2G#<<0PZ?=
57bc60
z?ATv}=hW8LirH)q6}r;W(&W}#ZxxTnBO)SweSN)FtMx%(zAB!^UT&+Ms2@GS=J9xj
57bc60
z3kwVDfK9-|z)yez;Fj#{?AwNhhAt{-nLT^
57bc60
zm(-~T2M32%uU@?ms04lkEK`-(G_~T(I(hQsUxMd59F8$5AU!=@7B5~be!pKtM9!Z-
57bc60
z{}r$jn5V9v9!{k(Km!8
57bc60
zrlv|}W~Q{ZwuUlBPEJlKa66C@F1W{JYLCa$UsP07+tk!_2IvI7QCZXl3<4u+{_%eL
57bc60
z>8GyKr%xYL6C@QC6_;f1;1(M&n9XLhE)RtrX$c}C!^6Yfg@uJr0L8$sfjd?HNE%nR
57bc60
zGpfauZQ;U&1zxYWS45=0zhAPlvczh&N^)|tR8>_;AP^7{k*=<;9^g?Ghru|Sv{*XR
57bc60
z=ks0IxN+lyz|Vo7DQV{@e~&N!8q^cU0qGxo^wBFpzg)a{QQmpy9qI1w4uyc<@7FeM
57bc60
z+O!||t$N5D<@!m1EVZ?@3)MS~1!^Sas-@**wP-_7CA-}|*X?$nl?j^H>-AMvSN{We
57bc60
z9Qc(Q`l;cDeiUFlcI;R`5CDc%tPH5{qv|-iwG8@>dU|@aQ>RX~<>uxZ&1Q3=&*$^I
57bc60
zTrT&!@4owSSy@?qU0q!Va8bo#kLuf}>vv2uC
57bc60
zqxu?A04@d7s~&j#f^7_tah!ajJ6XbH_@Eo36@W!qa0h|9@sNTVRH_Hnk#L<(xE-6q
57bc60
zy3L?dd74Ui)6{R&jeSa~QKfnyT>sbNb$~&qbkw*UBMKle!J2x)_Fu0H
57bc60
N002ovPDHLkV1k<^tf>G1
57bc60
57bc60
literal 0
57bc60
HcmV?d00001
57bc60
57bc60
diff --git a/panels/universal-access/left_ptr_96px.png b/panels/universal-access/left_ptr_96px.png
57bc60
new file mode 100644
57bc60
index 0000000000000000000000000000000000000000..5897a7c3d03a87d018184fbcc2a23ade15ad6a02
57bc60
GIT binary patch
57bc60
literal 3995
57bc60
zcmX9>2{=^W`@f83tV6O>gNp1$c4N<OC{(hHHA}W{BuhqP-$oSKjS!Mu_GO4ByX>-W
57bc60
zk$r9K{<r_{-simMKIgp8b3XU;p7(R!6KQCmNk`2=4FCY0wwC$>ut)uCPzum4B>TvK
57bc60
z9fggqraEx>@5MFczXM08JhYy?000`Me~ko4O=klKDZRAyH7MsHlvL7?Uc0qz0DuW-
57bc60
ztE(8l`n8$iYiK-{Noc8&PR&c>R#)NO&DM%h`#9HTyA&F7C97OqEhguoSn$1XG;AMw
57bc60
zg6Q{${Z3+N67+f*(ixaFwIj6k;3l^;pr`^irkGtLIl)%-cag#s+jRQG6eStf{-)Py
57bc60
zaH;7a;v?^<t>)MLP3NcSv;QUe19tHmEKmMt%Ci|%B`a9C@&m98dptbqH(kDY0#KeM
57bc60
zMb(H0qY)V$V`F2nq;L@tk?r-vlL-JrLI&)R%~9j2f~bQ?0nKRPY6c_{>C^TDsdRoo
57bc60
zALId4lJo#`uH+bS!pFx4$(vC0s5Fywhb*WLz}P_-1>`dN(zLWpOiU0#0>J(axPU!W
57bc60
z>WZ|q^mQAJuI}zx(z5sUH&`(D!%*@-vmM!O5s~wI(Ekhr89cqc5Bd0_>k0~1TLj2v
57bc60
zxP3bro>StjzU<D-Sho7V>$DRT5RhqChQ8;CVFD^A^hUotQKO{@CJ%YXkKCdxBU5Gz
57bc60
zouk5QgrRH!OG`_;&0k-0TUx9DYY&fs
57bc60
zKoClj
57bc60
zRZrU*1|0Y)?j9W6Kp+t9v$I)^dtE~9&!uSK2Sg&#!NI}p6T@#q=rthS9twjh=MOQ$
57bc60
zV6cVFP5ra8Gc9FhVB)LG2aP~yaW=ofp`nK)>ZH()0U(ohUWKH#zMlT+o6=IT6e(AZ
57bc60
zlsmQ*on2iOK?7i%;!{&kkN^wF3mLwnqoa-b6Ee#HgTZJS7+}dmGBY!i4%f#nN${#b
57bc60
zOE$xlJ=B(LZev4lYHEtCHMs_pBJnJtu~C5rIz2tDFV?uzMnTagNv$HJR*M7-3=F=R
57bc60
z;wfxrs2zG!HK?hnh2dUaUc>x1ZYUsmdOk56Ty4wE8Za7PR}FbPZzGjvEtMvMm~8Tw
57bc60
zo
57bc60
z_+(i=ew_T(t}`KJn7mG(8Tt|eA6d&o(bCiN^6^2KnVB*BO-)U~(NR(Kq2b~EC}9=(
57bc60
z37+w3()MCY>UKOHkaC}i>FUx^;SLN8Y`HBYB!88ILoT*FM4Qf9wH97z3xPn!>%E0U
57bc60
zEgJ<22(z
57bc60
z$Z8V?h3=5!n8<%?ldD+wN5_tmmlOQ_{o|98!q&%1Y1Tk`qK@{u#fY^H4X1{>9@bMo
57bc60
zbKjtRfE;fX;ewJ9(Z+*8-J|*N>tu(aAtA!e9`kKk>FMc>$@mS)6u7{~>(*0Gm5tre
57bc60
zQPbSq+_}G-lbDmXwzedzdapmTCW49iP>iwOTap+l?nJrKsi~OZVdLSE5vny>7!3XS
57bc60
z^XE0IKSA7SAES6YV2VMfvE&PjbaZrD+S)2=YQea^h=_>UEG0A|R&_w7cFnC#)q^eQ
57bc60
zXSHA9;^E=pc$E{AnVA{cp{Pau!SUYS9-2kvEr-N{9bg+n9&miTl2vZs%>srUx`vI7
57bc60
zoi;QxtB-#
57bc60
zR#gTUEYJPtQ8@rn{Cmhc$%Y|u+XT4rTa|Io^+{K)m
57bc60
zpZ^Ud4uyZQY?9j?E__&&l03)Dn9NPxnhktU#p=BITvGDAFGJp1l4JW^CRDZDZMq)a
57bc60
z3Fc=Fsmi<~lv?u?Uk(Dpf$Ws|Y+EMleVRW>)XBRmD=RC(&%eU%KsFNUsY$;nBF}{n
57bc60
z{)bIaNT}R>7LnZRz=9FHdGqG}Tx&2|$eN127klgK|KRs$$cJxiJZDf1E6sUOC^=c}
57bc60
zdb&T;<ey_LTl8BTN>91t@{P&%Yg9tQm8IXmsY`N9i!$!sy?fDUOTcRI`s7-ZR$B1r
57bc60
zL4j&5%{(kCE9+vf^z2o0-JGAb8#7I(BUM#ZEsRev@A%-L&#28CkuM85afr4__ZE@b
57bc60
zB-5f1d+^E2%~jZPgfd+TDwcCPE5~3+8;LXim~~ls`Sr@mN?7sJ8c{voTLPQp)~Y0B
57bc60
zCUSx%d;9yIzkAqQ?^#$_G|l*}7jJ+YtnNw@>H}2<6$DjPj{1TF=EloykCxsc+Zh6|
57bc60
z*A)E(K=mSP(+(_5WPwovPxEp%?lfPdr*lQ$)AVaX;L6IxT_!5*CD@^Te}lxcffz{z
57bc60
zYnq}t9xg<{xJ_?-e*Q|&!otEBn6|;F*QUL{?}{3Oi=Q_%G;oe56&uD}TqNq;e6MrU
57bc60
zSa4*=rMf3Yf)e~QqREQm^44_2z3vZUvoFt24&?xDzz<*pXo1zNJr+1KO}j`#bu|m<
57bc60
zy7-@~l2VH-_(cf{)3VTf)Q%wuTW818(o)RiA%v9lniBfrtQCiY!;F*zUjb*SN-bW0
57bc60
zu7Eq?J5w8z75e-TVP$3YVV6wYn&`zBg75E#>Feto3S3PP|L?^MMs{}D0BolnuWpjC
57bc60
ztoQChhr?PWCBWu%2Li8BKKKBLld$CmHp7%zgADv)I7`2OPA&kdT_?l(5vR0VgeS4&
57bc60
zAg<b%n;e{tb&CFfg>gC?c{
57bc60
zN<*V&W3v!Z4i^(cdTc#JDjtrX9q(r(n@-W=LX83-B8PfTD4gUSczp`(j|0Qp?8zE;
57bc60
z!W#%>*sN8<OF9}>Q8I#O!tKKQIjyW#0dMB!=H_2SMMViRF){TUF4q`o{Jk4hHTsdt
57bc60
z+r;759%ahGkk%Um3!3p7_blaOK-_&s;fs0QptGinhX(^8?mBBa)Aj4u+1c0%9Nv%V
57bc60
zpZiiSCX5fN>I#L98npBWFOuld$NT9dIC&>54`i#E`uLn|HEc(i7BMTh^dRinIXHC8
57bc60
zo<1dCNk_b{hvMY`Pk
57bc60
zjBk#PUKK4WgE}wcxezj!9ug8Vdwg^x6CK8=r}uJLOpxN!fy69l?n+92I=KgzCK#@~
57bc60
zYXe(Fpj_K3o&HX9|A*nZFW#&bq)r=&jKgIv65=jlK_hIx7zD2dDY?!sd{yB~q^ijr
57bc60
zz6Ho&`P>_K!`|=FMMg&Eo0gdSnm4BDsH(Q@FcBAGl}I6w&YwA&
57bc60
zJwAZem7;^_mdCPzH5RuA1QK-;va;N>&-(iMGMR-;xgcef_^i)GMWy8gG4ooKHTgyo
57bc60
zrIC@59SWsvxZ+aU^p_%N*4B}js7Z2Uc!}VtmMin8H55$z(ce#q7HbwbY6P=b`u6QV
57bc60
zoBs+csjPA^r)negSy{y_W0I5Eipp^%CG_AakMSETv1mx37>dv2Ni(zQB^`FYcRUvi
57bc60
z6E+J3mH3&SUJoOX0!Tr|p>x|L3h2|no822eLV|)IKVR#2HJ?BK(&1*Fl9ED6as%bq
57bc60
z63LKC73s5(`ilkk)6wJPz)68P^#apB`RkY5qhd4f&lMGW&r
57bc60
z<z9at6rE$zq}|PEP5AlwOKk>q@^8D7KVb3ryYVDC2~FIZuKw}k$0ga0J1_`*p)9+C
57bc60
zcXx7$1sEm<26l=aS1dX=-H%Y|$;pnM#j%{yTcl;AYMc>Dm~2IzjQP3PZ<{tGTm&8-
57bc60
z9+jOZwzjrU0|L%E!336zyyna)!VSpvr^~(wQIr-Hr3cw1-ZO6UULQ62_!#H#KJNB5
57bc60
z=CPBbqhn-rw7lo>-m)Br$0S=vjReG65%3!v9Bg)Wayk}zs_Ex<67hmU6U)U2b5baO
57bc60
zK2ZS(wT@fs4sX)Wf#-^Td3pKqqf$%Ps*h))au<Vyq=bZoONaF*<u>Fj!jDn+Sd5L0
57bc60
z=f1~s5(5iVvtJ!Af5<7E{Aq(ZqlATKBwAhP<n-SFXMHr>!npxk{?^!oQfpAvR(?%R
57bc60
zmX^7>60qESTZ%Vk&Th-d$V3RvM0%=p6(*BEp*<WO89BEC1DN*p>sOoQN|Ba0c3&<#
57bc60
z9VOt~N)}r5vD4{BWxvf#qpzv0iobuu+%;oC<}8vzc3@#<YuF!wYi_;>UtL|jJlZ8(
57bc60
zPh(rIiNyslNr?6%nK?lGi0#$Y+CH;Zu)ery@z$*Pdl(%j8F9B;tfgvUrXJb6jBJAU
57bc60
zcutj(OWwO@5sSsn_^*!^-@4Vm@)RB3o-AMbYS(-d0KV0|SRpelbLiy=2@j_+AJ~|v
57bc60
zG<y6PtTLdjuQL>U_qx<|CkP!=UUC^e&z?Pd;qQOiQBY7|F^j%zN=R*p7i@S}ed0Ei
57bc60
z=D++D5nrpxd^lOc5&ONeuC7iie<*a%%F*3jQ(K#gmI9I)u&1r?cifhRc(7SBd$Ijd
57bc60
zBN}Vt*cG1@_&kqjjeFZWYQCC#1-x(cgSELBi>Nu
57bc60
z+W=+mwQK~)T28kb3YQQ|V02^S5GSkG05sW-&w*vzs^Y4ndGdoMn`w!D1txX>bZg^3
57bc60
zaYJKq1D?k}w=msm1BUj;5NL5>p{ydu@}ozO#=^qFE<&+)&LNw0Vjpc)5!h=?9HlgS
57bc60
z(JABfaVedSM-#W+{n%s>BK}Y_9Fm&`UL_?ZUD$eg9YmWIj|MBYI!dOx%`_fAR8eV_
57bc60
zE^R(pvtq9y#7XS7wuH~Xl-BKih!U2-kpX?$8l#c3><_X@tJ8TdCYs@^W%NPemZijr
57bc60
zDyN~3Z{NPvg!1&&xJ|DiUT%yRfB$|TQ9yjC;d4hDP@3-(mF2
57bc60
zY2Tk%J33uj_xiY{8}9#Z-HrFdeKw%Ucz#+Bnf9nzEqMEth`yu*TJ|>~vfB|Y*`n~a
57bc60
z)F+6<<
57bc60
z*TL58+x#myzfQ<#ccfpHbNu9DN4wXO9&bk)_w>o;ovqdht=&<$02|wa{SC6Vyf6o<
57bc60
p4&;Tw2jPkzywU$mckcU3O4qYJ*qKyxICzZ)v^5OWOH@&q{{x(hmxBNR
57bc60
57bc60
literal 0
57bc60
HcmV?d00001
57bc60
57bc60
diff --git a/panels/universal-access/uap.ui b/panels/universal-access/uap.ui
57bc60
index 636b7740d..ab0c0c4a7 100644
57bc60
--- a/panels/universal-access/uap.ui
57bc60
+++ b/panels/universal-access/uap.ui
57bc60
@@ -224,6 +224,53 @@
57bc60
                               </object>
57bc60
                             </child>
57bc60
                             <child>
57bc60
+                              <object class="GtkListBoxRow" id="row_cursor_size">
57bc60
+                                <property name="visible">True</property>
57bc60
+                                <property name="can_focus">True</property>
57bc60
+                                <child>
57bc60
+                                  <object class="GtkBox" id="box_cursor_size">
57bc60
+                                    <property name="visible">True</property>
57bc60
+                                    <property name="can_focus">False</property>
57bc60
+                                    <child>
57bc60
+                                      <object class="GtkLabel" id="heading_cursor_size">
57bc60
+                                        <property name="visible">True</property>
57bc60
+                                        <property name="can_focus">False</property>
57bc60
+                                        <property name="margin_start">20</property>
57bc60
+                                        <property name="margin_end">20</property>
57bc60
+                                        <property name="margin_top">6</property>
57bc60
+                                        <property name="margin_bottom">6</property>
57bc60
+                                        <property name="label" translatable="yes">C_ursor Size</property>
57bc60
+                                        <property name="use_underline">True</property>
57bc60
+                                        <property name="xalign">0</property>
57bc60
+                                      </object>
57bc60
+                                      <packing>
57bc60
+                                        <property name="expand">True</property>
57bc60
+                                        <property name="fill">True</property>
57bc60
+                                        <property name="position">0</property>
57bc60
+                                      </packing>
57bc60
+                                    </child>
57bc60
+                                    <child>
57bc60
+                                      <object class="GtkLabel" id="value_cursor_size">
57bc60
+                                        <property name="visible">True</property>
57bc60
+                                        <property name="can_focus">False</property>
57bc60
+                                        <property name="margin_start">20</property>
57bc60
+                                        <property name="margin_end">20</property>
57bc60
+                                        <property name="margin_top">6</property>
57bc60
+                                        <property name="margin_bottom">6</property>
57bc60
+                                        <property name="label">24 pixels</property>
57bc60
+                                        <property name="xalign">1</property>
57bc60
+                                      </object>
57bc60
+                                      <packing>
57bc60
+                                        <property name="expand">False</property>
57bc60
+                                        <property name="fill">True</property>
57bc60
+                                        <property name="position">1</property>
57bc60
+                                      </packing>
57bc60
+                                    </child>
57bc60
+                                  </object>
57bc60
+                                </child>
57bc60
+                              </object>
57bc60
+                            </child>
57bc60
+                            <child>
57bc60
                               <object class="GtkListBoxRow" id="row_zoom">
57bc60
                                 <property name="visible">True</property>
57bc60
                                 <property name="can_focus">True</property>
57bc60
@@ -952,6 +999,7 @@
57bc60
     <widgets>
57bc60
       <widget name="row_highcontrast"/>
57bc60
       <widget name="row_large_text"/>
57bc60
+      <widget name="row_cursor_size"/>
57bc60
       <widget name="row_zoom"/>
57bc60
       <widget name="row_screen_reader"/>
57bc60
       <widget name="row_sound_keys"/>
57bc60
@@ -962,6 +1010,69 @@
57bc60
       <widget name="row_click_assist"/>
57bc60
     </widgets>
57bc60
   </object>
57bc60
+  <object class="GtkDialog" id="cursor_size_dialog">
57bc60
+    <property name="can_focus">False</property>
57bc60
+    <property name="border_width">5</property>
57bc60
+    <property name="title" translatable="yes">Cursor Size</property>
57bc60
+    <property name="resizable">False</property>
57bc60
+    <property name="modal">True</property>
57bc60
+    <property name="type_hint">dialog</property>
57bc60
+    <child internal-child="vbox">
57bc60
+      <object class="GtkBox" id="dialog-vbox7">
57bc60
+        <property name="can_focus">False</property>
57bc60
+        <property name="orientation">vertical</property>
57bc60
+        <property name="spacing">2</property>
57bc60
+        <child internal-child="action_area">
57bc60
+          <object class="GtkButtonBox">
57bc60
+            <property name="can_focus">False</property>
57bc60
+          </object>
57bc60
+          <packing>
57bc60
+            <property name="expand">False</property>
57bc60
+            <property name="fill">False</property>
57bc60
+            <property name="position">0</property>
57bc60
+          </packing>
57bc60
+        </child>
57bc60
+        <child>
57bc60
+          <object class="GtkLabel" id="cursor_size_blurb">
57bc60
+            <property name="visible">True</property>
57bc60
+            <property name="can_focus">False</property>
57bc60
+            <property name="margin_start">12</property>
57bc60
+            <property name="margin_end">6</property>
57bc60
+            <property name="margin_top">6</property>
57bc60
+            <property name="margin_bottom">6</property>
57bc60
+            <property name="label" translatable="yes">Cursor size can be combined with zoom to make it easier to see the cursor.</property>
57bc60
+            <property name="wrap">True</property>
57bc60
+            <property name="max_width_chars">45</property>
57bc60
+            <property name="xalign">0</property>
57bc60
+          </object>
57bc60
+          <packing>
57bc60
+            <property name="expand">False</property>
57bc60
+            <property name="fill">True</property>
57bc60
+            <property name="position">0</property>
57bc60
+          </packing>
57bc60
+        </child>
57bc60
+        <child>
57bc60
+          <object class="GtkGrid" id="cursor_size_grid">
57bc60
+            <property name="visible">True</property>
57bc60
+            <property name="can_focus">False</property>
57bc60
+          </object>
57bc60
+          <packing>
57bc60
+            <property name="expand">False</property>
57bc60
+            <property name="fill">True</property>
57bc60
+            <property name="position">2</property>
57bc60
+          </packing>
57bc60
+        </child>
57bc60
+      </object>
57bc60
+    </child>
57bc60
+    <child>
57bc60
+      <placeholder/>
57bc60
+    </child>
57bc60
+    <child internal-child="headerbar">
57bc60
+      <object class="GtkHeaderBar">
57bc60
+        <property name="can_focus">False</property>
57bc60
+      </object>
57bc60
+    </child>
57bc60
+  </object>
57bc60
   <object class="GtkDialog" id="screen_reader_dialog">
57bc60
     <property name="can_focus">False</property>
57bc60
     <property name="border_width">5</property>
57bc60
diff --git a/panels/universal-access/universal-access.gresource.xml b/panels/universal-access/universal-access.gresource.xml
57bc60
index bc07b356f..d7f2e337a 100644
57bc60
--- a/panels/universal-access/universal-access.gresource.xml
57bc60
+++ b/panels/universal-access/universal-access.gresource.xml
57bc60
@@ -3,5 +3,10 @@
57bc60
   <gresource prefix="/org/gnome/control-center/universal-access">
57bc60
     <file preprocess="xml-stripblanks">uap.ui</file>
57bc60
     <file preprocess="xml-stripblanks">zoom-options.ui</file>
57bc60
+    <file>left_ptr_24px.png</file>
57bc60
+    <file>left_ptr_32px.png</file>
57bc60
+    <file>left_ptr_48px.png</file>
57bc60
+    <file>left_ptr_64px.png</file>
57bc60
+    <file>left_ptr_96px.png</file>
57bc60
   </gresource>
57bc60
 </gresources>
57bc60
-- 
57bc60
2.12.0
57bc60
57bc60
57bc60
From 4196874fcd6ed1ceac1923065d9bda2dce67fbe2 Mon Sep 17 00:00:00 2001
57bc60
From: Bastien Nocera <hadess@hadess.net>
57bc60
Date: Thu, 9 Mar 2017 12:44:25 +0100
57bc60
Subject: [PATCH 4/4] universal-access: Handle "pixels" plural correctly
57bc60
57bc60
Using g_dngettext() as required.
57bc60
57bc60
https://bugzilla.gnome.org/show_bug.cgi?id=779798
57bc60
---
57bc60
 panels/universal-access/cc-ua-panel.c | 6 +++++-
57bc60
 1 file changed, 5 insertions(+), 1 deletion(-)
57bc60
57bc60
diff --git a/panels/universal-access/cc-ua-panel.c b/panels/universal-access/cc-ua-panel.c
57bc60
index 1985f7718..f0928555e 100644
57bc60
--- a/panels/universal-access/cc-ua-panel.c
57bc60
+++ b/panels/universal-access/cc-ua-panel.c
57bc60
@@ -363,7 +363,11 @@ cursor_size_label_mapping_get (GValue   *value,
57bc60
         label = g_strdup (C_("cursor size", "Largest"));
57bc60
         break;
57bc60
       default:
57bc60
-        label = g_strdup_printf (_("%d pixels"), g_variant_get_int32 (variant));
57bc60
+        label = g_strdup_printf (g_dngettext (GETTEXT_PACKAGE,
57bc60
+                                              "%d pixel",
57bc60
+                                              "%d pixels",
57bc60
+                                              cursor_size),
57bc60
+                                 cursor_size);
57bc60
         break;
57bc60
     }
57bc60
 
57bc60
-- 
57bc60
2.12.0
57bc60