Bjørn Lie
9c734a4c1a
Add upstream patch, I was waiting for upstream to do a brown paper bag release, but it seems it won't happen... - Add gtk3-Add-fallbacks-GtkSwitch-labels.patch: Add fallbacks for GtkSwitch state labels. OBS-URL: https://build.opensuse.org/request/show/666905 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gtk3?expand=0&rev=341
73 lines
2.1 KiB
Diff
73 lines
2.1 KiB
Diff
From ed39721aa7435860f46da69998cf6cac4ae7e735 Mon Sep 17 00:00:00 2001
|
||
From: Emmanuele Bassi <ebassi@gnome.org>
|
||
Date: Tue, 15 Jan 2019 15:22:09 +0000
|
||
Subject: [PATCH] Add fallbacks for GtkSwitch state labels
|
||
|
||
While the IEC power symbols have been part of Unicode since version 9.0,
|
||
released in 2016, not every font supports them.
|
||
|
||
We can use the old symbols as a fallback, as they seem to have the
|
||
better coverage, if not the best appearance.
|
||
---
|
||
gtk/gtkswitch.c | 41 +++++++++++++++++++++++++++++++++++++++--
|
||
1 file changed, 39 insertions(+), 2 deletions(-)
|
||
|
||
diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c
|
||
index bf63f34fd2..1d42f572a9 100644
|
||
--- a/gtk/gtkswitch.c
|
||
+++ b/gtk/gtkswitch.c
|
||
@@ -298,11 +298,48 @@ gtk_switch_create_pango_layouts (GtkSwitch *self)
|
||
{
|
||
GtkSwitchPrivate *priv = self->priv;
|
||
|
||
+ /* Glyphs for the ON state, in descending order of preference */
|
||
+ const char *on_glyphs[] = {
|
||
+ "⏽", /* U+23FD POWER ON SYMBOL */
|
||
+ "❙", /* U+2759 MEDIUM VERTICAL BAR */
|
||
+ };
|
||
+
|
||
+ /* Glyphs for the OFF state, in descending order of preference */
|
||
+ const char *off_glyphs[] = {
|
||
+ "⭘", /* U+2B58 HEAVY CIRCLE */
|
||
+ "○", /* U+25CB WHITE CIRCLE */
|
||
+ };
|
||
+ int i;
|
||
+
|
||
g_clear_object (&priv->on_layout);
|
||
- priv->on_layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), "⏽");
|
||
+
|
||
+ for (i = 0; i < G_N_ELEMENTS (on_glyphs); i++)
|
||
+ {
|
||
+ PangoLayout *layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), on_glyphs[i]);
|
||
+
|
||
+ if (pango_layout_get_unknown_glyphs_count (layout) == 0)
|
||
+ {
|
||
+ priv->on_layout = layout;
|
||
+ break;
|
||
+ }
|
||
+
|
||
+ g_object_unref (layout);
|
||
+ }
|
||
|
||
g_clear_object (&priv->off_layout);
|
||
- priv->off_layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), "⭘");
|
||
+
|
||
+ for (i = 0; i < G_N_ELEMENTS (off_glyphs); i++)
|
||
+ {
|
||
+ PangoLayout *layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), off_glyphs[i]);
|
||
+
|
||
+ if (pango_layout_get_unknown_glyphs_count (layout) == 0)
|
||
+ {
|
||
+ priv->off_layout = layout;
|
||
+ break;
|
||
+ }
|
||
+
|
||
+ g_object_unref (layout);
|
||
+ }
|
||
}
|
||
|
||
static void
|
||
--
|
||
2.18.1
|
||
|