From 6c5a106d7ef02943d35719d421549719172daa3f Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 6 Apr 2024 16:20:08 +0200 Subject: [PATCH] inspector: Show the font rendering setting Replace the font options with the new font rendering setting. The font options are still available for tweaking in the inspector as properties of the GtkSettings object. --- gtk/inspector/visual.c | 144 ++++++---------------------------------- gtk/inspector/visual.ui | 70 +++---------------- 2 files changed, 28 insertions(+), 186 deletions(-) diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c index 1c06f7ce46..a31a59d21b 100644 --- a/gtk/inspector/visual.c +++ b/gtk/inspector/visual.c @@ -81,9 +81,7 @@ struct _GtkInspectorVisual GtkWidget *cursor_size_spin; GtkWidget *direction_combo; GtkWidget *font_button; - GtkWidget *font_aa_switch; - GtkWidget *font_hinting_combo; - GtkWidget *metrics_hinting_switch; + GtkWidget *font_rendering_combo; GtkWidget *animation_switch; GtkWidget *font_scale_entry; GtkAdjustment *font_scale_adjustment; @@ -237,108 +235,24 @@ font_scale_adjustment_changed (GtkAdjustment *adjustment, update_font_scale (vis, factor, FALSE, TRUE, TRUE); } -static gboolean -get_font_aa (GtkInspectorVisual *vis) +static GtkFontRendering +get_font_rendering (GtkInspectorVisual *vis) { - int aa; + GtkFontRendering font_rendering; - g_object_get (vis->settings, "gtk-xft-antialias", &aa, NULL); + g_object_get (vis->settings, "gtk-font-rendering", &font_rendering, NULL); - return aa != 0; -} - -static gboolean -get_metrics_hinting (GtkInspectorVisual *vis) -{ - gboolean hinting; - - g_object_get (vis->settings, "gtk-hint-font-metrics", &hinting, NULL); - - return hinting; -} - -static unsigned int -get_font_hinting (GtkInspectorVisual *vis) -{ - int hinting; - char *hint_style_str; - unsigned int hint_style; - - g_object_get (vis->settings, - "gtk-xft-hinting", &hinting, - "gtk-xft-hintstyle", &hint_style_str, - NULL); - - hint_style = 1; - if (hinting == 0) - { - hint_style = 0; - } - else - { - if (strcmp (hint_style_str, "hintnone") == 0) - hint_style = 0; - else if (strcmp (hint_style_str, "hintslight") == 0) - hint_style = 1; - else if (strcmp (hint_style_str, "hintmedium") == 0) - hint_style = 2; - else if (strcmp (hint_style_str, "hintfull") == 0) - hint_style = 3; - } - - g_free (hint_style_str); - - return hint_style; + return font_rendering; } static void -update_font_hinting (GtkInspectorVisual *vis, - unsigned int hint_style) +update_font_rendering (GtkInspectorVisual *vis, + GtkFontRendering font_rendering) { - const char *styles[] = { "hintnone", "hintslight", "hintmedium", "hintfull" }; - int hinting; - const char *style; + if (get_font_rendering (vis) == font_rendering) + return; - g_object_get (vis->settings, - "gtk-xft-hinting", &hinting, - "gtk-xft-hintstyle", &style, - NULL); - - if (hinting != (hint_style != 0) || strcmp (style, styles[hint_style]) != 0) - g_object_set (vis->settings, - "gtk-xft-hinting", hint_style != 0, - "gtk-xft-hintstyle", styles[hint_style], - NULL); -} - -static void -font_aa_activate (GtkSwitch *sw, - GParamSpec *pspec, - GtkInspectorVisual *vis) -{ - int val, new_val; - - g_object_get (vis->settings, "gtk-xft-antialias", &val, NULL); - - new_val = gtk_switch_get_active (sw) ? 1 : 0; - - if (val != new_val) - g_object_set (vis->settings, "gtk-xft-antialias", new_val, NULL); -} - -static void -metrics_hinting_activate (GtkSwitch *sw, - GParamSpec *pspec, - GtkInspectorVisual *vis) -{ - gboolean val, new_val; - - g_object_get (vis->settings, "gtk-hint-font-metrics", &val, NULL); - - new_val = gtk_switch_get_active (sw); - - if (val != new_val) - g_object_set (vis->settings, "gtk-hint-font-metrics", new_val, NULL); + g_object_set (vis->settings, "gtk-font-rendering", font_rendering, NULL); } static void @@ -1026,29 +940,17 @@ init_font_scale (GtkInspectorVisual *vis) } static void -init_font_aa (GtkInspectorVisual *vis) +font_rendering_changed (GtkDropDown *combo, + GParamSpec *pspec, + GtkInspectorVisual *vis) { - gtk_switch_set_active (GTK_SWITCH (vis->font_aa_switch), get_font_aa (vis)); + update_font_rendering (vis, gtk_drop_down_get_selected (combo)); } static void -font_hinting_changed (GtkDropDown *combo, - GParamSpec *pspec, - GtkInspectorVisual *vis) +init_font_rendering (GtkInspectorVisual *vis) { - update_font_hinting (vis, gtk_drop_down_get_selected (combo)); -} - -static void -init_font_hinting (GtkInspectorVisual *vis) -{ - gtk_drop_down_set_selected (GTK_DROP_DOWN (vis->font_hinting_combo), get_font_hinting (vis)); -} - -static void -init_metrics_hinting (GtkInspectorVisual *vis) -{ - gtk_switch_set_active (GTK_SWITCH (vis->metrics_hinting_switch), get_metrics_hinting (vis)); + gtk_drop_down_set_selected (GTK_DROP_DOWN (vis->font_rendering_combo), get_font_rendering (vis)); } static void @@ -1299,9 +1201,7 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass) gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, slowdown_adjustment); gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, slowdown_entry); gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, visual_box); - gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, font_aa_switch); - gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, font_hinting_combo); - gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, metrics_hinting_switch); + gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, font_rendering_combo); gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, debug_box); gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, font_button); gtk_widget_class_bind_template_child (widget_class, GtkInspectorVisual, font_scale_entry); @@ -1319,9 +1219,7 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass) gtk_widget_class_bind_template_callback (widget_class, updates_activate); gtk_widget_class_bind_template_callback (widget_class, cairo_activate); gtk_widget_class_bind_template_callback (widget_class, direction_changed); - gtk_widget_class_bind_template_callback (widget_class, font_aa_activate); - gtk_widget_class_bind_template_callback (widget_class, font_hinting_changed); - gtk_widget_class_bind_template_callback (widget_class, metrics_hinting_activate); + gtk_widget_class_bind_template_callback (widget_class, font_rendering_changed); gtk_widget_class_bind_template_callback (widget_class, baselines_activate); gtk_widget_class_bind_template_callback (widget_class, layout_activate); gtk_widget_class_bind_template_callback (widget_class, focus_activate); @@ -1347,9 +1245,7 @@ gtk_inspector_visual_set_display (GtkInspectorVisual *vis, init_cursor_size (vis); init_font (vis); init_font_scale (vis); - init_font_aa (vis); - init_font_hinting (vis); - init_metrics_hinting (vis); + init_font_rendering (vis); init_animation (vis); init_slowdown (vis); init_gl (vis); diff --git a/gtk/inspector/visual.ui b/gtk/inspector/visual.ui index 3282349bc4..49d14886f1 100644 --- a/gtk/inspector/visual.ui +++ b/gtk/inspector/visual.ui @@ -358,51 +358,24 @@ 40 - - Antialiasing + + Rendering start baseline 0.0 - - end - center - 1 - - - - - - - - - - - - 40 - - - Hinting - start - baseline - 0.0 - - - - + end baseline-center 1 - + - None - Slight - Medium - Full + Automatic + Manual @@ -412,31 +385,6 @@ - - - - - 40 - - - Metrics Hinting - start - baseline - 0.0 - - - - - end - center - 1 - - - - - - - @@ -787,9 +735,7 @@ - - - + @@ -813,7 +759,7 @@ - +