diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c index e458f98a78..f56f66e993 100644 --- a/gtk/inspector/visual.c +++ b/gtk/inspector/visual.c @@ -53,12 +53,12 @@ struct _GtkInspectorVisualPrivate GtkWidget *font_button; GtkWidget *hidpi_spin; GtkWidget *animation_switch; - GtkWidget *font_scale_scale; + GtkWidget *font_scale_entry; + GtkAdjustment *font_scale_adjustment; GtkAdjustment *scale_adjustment; GtkAdjustment *slowdown_adjustment; GtkWidget *slowdown_entry; GtkAdjustment *cursor_size_adjustment; - GtkAdjustment *font_scale_adjustment; GtkWidget *debug_box; GtkWidget *rendering_mode_combo; @@ -140,13 +140,46 @@ redraw_everything (void) } static void -font_scale_changed (GtkAdjustment *adjustment) +update_font_scale (GtkInspectorVisual *vis, + gdouble factor, + gboolean update_adjustment, + gboolean update_entry) +{ + g_object_set (gtk_settings_get_default (), "gtk-xft-dpi", + (gint)(factor * 96 * 1024), NULL); + + if (update_adjustment) + gtk_adjustment_set_value (vis->priv->font_scale_adjustment, factor); + + if (update_entry) + { + gchar *str = g_strdup_printf ("%0.2f", factor); + + gtk_entry_set_text (GTK_ENTRY (vis->priv->font_scale_entry), str); + g_free (str); + } +} + +static void +font_scale_adjustment_changed (GtkAdjustment *adjustment, + GtkInspectorVisual *vis) { gdouble factor; factor = gtk_adjustment_get_value (adjustment); - g_object_set (gtk_settings_get_default (), "gtk-xft-dpi", - (gint)(factor * 96 * 1024), NULL); + update_font_scale (vis, factor, FALSE, TRUE); +} + +static void +font_scale_entry_activated (GtkEntry *entry, + GtkInspectorVisual *vis) +{ + gdouble factor; + gchar *err = NULL; + + factor = g_strtod (gtk_entry_get_text (entry), &err); + if (err != NULL) + update_font_scale (vis, factor, TRUE, FALSE); } static void @@ -513,11 +546,12 @@ init_font (GtkInspectorVisual *vis) static void init_font_scale (GtkInspectorVisual *vis) { - gtk_scale_add_mark (GTK_SCALE (vis->priv->font_scale_scale), 1.0, GTK_POS_TOP, NULL); /* There is no backend agnostic way to get the default value, so use 1.0 */ - gtk_adjustment_set_value (vis->priv->font_scale_adjustment, 1.0); + update_font_scale (vis, 1.0, TRUE, TRUE); g_signal_connect (vis->priv->font_scale_adjustment, "value-changed", - G_CALLBACK (font_scale_changed), NULL); + G_CALLBACK (font_scale_adjustment_changed), vis); + g_signal_connect (vis->priv->font_scale_entry, "activate", + G_CALLBACK (font_scale_entry_activated), vis); } #if defined (GDK_WINDOWING_X11) @@ -860,7 +894,7 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass) gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, software_gl_switch); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, software_surface_switch); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, texture_rectangle_switch); - gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, font_scale_scale); + gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, font_scale_entry); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, font_scale_adjustment); gtk_widget_class_bind_template_callback (widget_class, updates_activate); diff --git a/gtk/inspector/visual.ui b/gtk/inspector/visual.ui index 1f0ef58c43..09035c4a13 100644 --- a/gtk/inspector/visual.ui +++ b/gtk/inspector/visual.ui @@ -256,7 +256,7 @@ True horizontal 10 - 40 + 20 True @@ -269,15 +269,26 @@ True - end baseline - 2 font_scale_adjustment + 0 + + + True + + + True + end + baseline + 4 + number + + @@ -876,7 +887,6 @@ -