diff options
author | Alberto Ruiz <aruiz@gnome.org> | 2013-08-02 15:51:33 +0200 |
---|---|---|
committer | Alberto Ruiz <aruiz@gnome.org> | 2013-08-02 15:51:33 +0200 |
commit | 20adc37a014d414bd065c10fe241d7aaec93db20 (patch) | |
tree | 4f4b022ad29d22540f5635865d0711d82f812c5c /gtk/gtkfontchooserwidget.c | |
parent | 55edb3e2b13c51e7ca36d6bf9beb66fbd92bfc39 (diff) | |
download | gtk+-20adc37a014d414bd065c10fe241d7aaec93db20.tar.gz |
fontchoser: Fix slider position update when switching from fonts with different recommended sizes
Diffstat (limited to 'gtk/gtkfontchooserwidget.c')
-rw-r--r-- | gtk/gtkfontchooserwidget.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c index 6cce746fe4..a0dcc94e31 100644 --- a/gtk/gtkfontchooserwidget.c +++ b/gtk/gtkfontchooserwidget.c @@ -264,10 +264,11 @@ static void gtk_font_chooser_widget_update_marks (GtkFontChooserWidget *fontchooser) { GtkFontChooserWidgetPrivate *priv = fontchooser->priv; - GtkAdjustment *adj; + GtkAdjustment *adj, *spin_adj; const int *sizes; gint *font_sizes; gint i, n_sizes; + gdouble value, spin_value; if (gtk_list_store_iter_is_valid (GTK_LIST_STORE (priv->model), &priv->font_iter)) { @@ -307,12 +308,21 @@ gtk_font_chooser_widget_update_marks (GtkFontChooserWidget *fontchooser) gtk_scale_clear_marks (GTK_SCALE (priv->size_slider)); - adj = gtk_range_get_adjustment(GTK_RANGE (priv->size_slider)); + adj = gtk_range_get_adjustment (GTK_RANGE (priv->size_slider)); + spin_adj = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (priv->size_spin)); + spin_value = gtk_adjustment_get_value (spin_adj); + + if (spin_value < sizes[0]) + value = (gdouble) sizes[0]; + else if (spin_value > sizes[n_sizes - 1]) + value = (gdouble)sizes[n_sizes - 1]; + else + value = (gdouble)spin_value; /* ensure clamping doesn't callback into font resizing code */ g_signal_handlers_block_by_func (adj, size_change_cb, fontchooser); gtk_adjustment_configure (adj, - gtk_adjustment_get_value (adj), + value, sizes[0], sizes[n_sizes - 1], gtk_adjustment_get_step_increment (adj), |