From eeca751fdc7d820aab9cd20d3ba93337522573b8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 4 Apr 2024 14:00:06 +0200 Subject: [PATCH 1/3] Revert "spinbutton: Tangential refactoring, small fix" This reverts commit 3d898af736bc837da73f4115e24cbf96ae1ad819. The commit caused a regression where, depending on the update policy, we would not apply value changes at all. Fixes: #6599 --- gtk/gtkspinbutton.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 6a77fbb519..51e958ad1b 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -295,7 +295,7 @@ static void gtk_spin_button_activate (GtkText *entry, static void gtk_spin_button_unset_adjustment (GtkSpinButton *spin_button); static void gtk_spin_button_set_orientation (GtkSpinButton *spin_button, GtkOrientation orientation); -static double gtk_spin_button_snap (GtkSpinButton *spin_button, +static void gtk_spin_button_snap (GtkSpinButton *spin_button, double val); static void gtk_spin_button_insert_text (GtkEditable *editable, const char *new_text, @@ -1519,7 +1519,7 @@ gtk_spin_button_real_change_value (GtkSpinButton *spin, gtk_widget_error_bell (GTK_WIDGET (spin)); } -static double +static void gtk_spin_button_snap (GtkSpinButton *spin_button, double val) { @@ -1528,7 +1528,7 @@ gtk_spin_button_snap (GtkSpinButton *spin_button, inc = gtk_adjustment_get_step_increment (spin_button->adjustment); if (inc == 0) - return val; + return; tmp = (val - gtk_adjustment_get_lower (spin_button->adjustment)) / inc; if (tmp - floor (tmp) < ceil (tmp) - tmp) @@ -1536,7 +1536,7 @@ gtk_spin_button_snap (GtkSpinButton *spin_button, else val = gtk_adjustment_get_lower (spin_button->adjustment) + ceil (tmp) * inc; - return val; + gtk_spin_button_set_value (spin_button, val); } static void @@ -2538,22 +2538,26 @@ gtk_spin_button_update (GtkSpinButton *spin_button) else if (return_val == GTK_INPUT_ERROR) error = 1; - const double lower = gtk_adjustment_get_lower (spin_button->adjustment); - const double upper = gtk_adjustment_get_upper (spin_button->adjustment); - if (spin_button->update_policy == GTK_UPDATE_ALWAYS) { - val = CLAMP (val, lower, upper); - - if (spin_button->snap_to_ticks) - val = gtk_spin_button_snap (spin_button, val); - - gtk_spin_button_set_value (spin_button, val); + if (val < gtk_adjustment_get_lower (spin_button->adjustment)) + val = gtk_adjustment_get_lower (spin_button->adjustment); + else if (val > gtk_adjustment_get_upper (spin_button->adjustment)) + val = gtk_adjustment_get_upper (spin_button->adjustment); } - else if (error || val < lower || val > upper) + else if ((spin_button->update_policy == GTK_UPDATE_IF_VALID) && + (error || + val < gtk_adjustment_get_lower (spin_button->adjustment) || + val > gtk_adjustment_get_upper (spin_button->adjustment))) { gtk_spin_button_value_changed (spin_button->adjustment, spin_button); + return; } + + if (spin_button->snap_to_ticks) + gtk_spin_button_snap (spin_button, val); + else + gtk_spin_button_set_value (spin_button, val); } GtkText * @@ -2561,3 +2565,4 @@ gtk_spin_button_get_text_widget (GtkSpinButton *spin_button) { return GTK_TEXT (spin_button->entry); } + From cd556c3811075ea26f171f808bdc5aaeee10bbe4 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 4 Apr 2024 14:11:10 +0200 Subject: [PATCH 2/3] spinbutton: Fix a corner case Fix a bug where a zero increment would make the value unsettable, when the more natural operation is to allow any value to be set. --- gtk/gtkspinbutton.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 51e958ad1b..47bad0cb12 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -1524,17 +1524,18 @@ gtk_spin_button_snap (GtkSpinButton *spin_button, double val) { double inc; - double tmp; inc = gtk_adjustment_get_step_increment (spin_button->adjustment); - if (inc == 0) - return; + if (inc != 0) + { + double tmp; - tmp = (val - gtk_adjustment_get_lower (spin_button->adjustment)) / inc; - if (tmp - floor (tmp) < ceil (tmp) - tmp) - val = gtk_adjustment_get_lower (spin_button->adjustment) + floor (tmp) * inc; - else - val = gtk_adjustment_get_lower (spin_button->adjustment) + ceil (tmp) * inc; + tmp = (val - gtk_adjustment_get_lower (spin_button->adjustment)) / inc; + if (tmp - floor (tmp) < ceil (tmp) - tmp) + val = gtk_adjustment_get_lower (spin_button->adjustment) + floor (tmp) * inc; + else + val = gtk_adjustment_get_lower (spin_button->adjustment) + ceil (tmp) * inc; + } gtk_spin_button_set_value (spin_button, val); } From 0d510ef057ad2f5fa26750d008bbaa0966e96b0b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 4 Apr 2024 15:25:07 +0200 Subject: [PATCH 3/3] Add context to some translatable strings This was requested by Alexandre Franke. Fixes: #6609 --- gtk/inspector/visual.ui | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk/inspector/visual.ui b/gtk/inspector/visual.ui index 0149f6b93d..3282349bc4 100644 --- a/gtk/inspector/visual.ui +++ b/gtk/inspector/visual.ui @@ -399,10 +399,10 @@ - None - Slight - Medium - Full + None + Slight + Medium + Full