Commit ed39721a authored by Emmanuele Bassi's avatar Emmanuele Bassi

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.
parent c9d09695
Pipeline #51434 passed with stage
in 9 minutes and 31 seconds
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment