From 7ebc209c3e5290bf508ed0303867d75a43443aa0 Mon Sep 17 00:00:00 2001 From: Christoph Lendenfeld Date: Fri, 18 Aug 2023 15:39:39 +0200 Subject: [PATCH] fix num input --- source/blender/editors/include/ED_util.hh | 1 + .../editors/space_graph/graph_slider_ops.cc | 16 +++++++--------- source/blender/editors/util/ed_draw.cc | 7 ++++++- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/source/blender/editors/include/ED_util.hh b/source/blender/editors/include/ED_util.hh index 7a62cfbbb29..8ac929e37ca 100644 --- a/source/blender/editors/include/ED_util.hh +++ b/source/blender/editors/include/ED_util.hh @@ -97,6 +97,7 @@ bool ED_slider_allow_increments_get(tSlider *slider); void ED_slider_allow_increments_set(tSlider *slider, bool value); void ED_slider_mode_set(tSlider *slider, SliderMode unit); +SliderMode ED_slider_mode_get(tSlider *slider); void ED_slider_unit_set(tSlider *slider, const char *unit); /* ************** XXX OLD CRUFT WARNING ************* */ diff --git a/source/blender/editors/space_graph/graph_slider_ops.cc b/source/blender/editors/space_graph/graph_slider_ops.cc index df7b68e2123..455e3735ed9 100644 --- a/source/blender/editors/space_graph/graph_slider_ops.cc +++ b/source/blender/editors/space_graph/graph_slider_ops.cc @@ -330,17 +330,15 @@ static int graph_slider_modal(bContext *C, wmOperator *op, const wmEvent *event) default: { if ((event->val == KM_PRESS) && handleNumInput(C, &gso->num, event)) { float value; - float percentage = RNA_property_float_get(op->ptr, gso->factor_prop); - - /* Grab percentage from numeric input, and store this new value for redo - * NOTE: users see ints, while internally we use a 0-1 float. - */ - value = percentage * 100.0f; applyNumInput(&gso->num, &value); - percentage = value / 100.0f; - ED_slider_factor_set(gso->slider, percentage); - RNA_property_float_set(op->ptr, gso->factor_prop, percentage); + /* Grab percentage from numeric input, and store this new value for redo + * NOTE: users see ints, while internally we use a 0-1 float. */ + if (ED_slider_mode_get(gso->slider) == SLIDER_MODE_PERCENT) { + value = value / 100.0f; + } + ED_slider_factor_set(gso->slider, value); + RNA_property_float_set(op->ptr, gso->factor_prop, value); gso->modal_update(C, op); break; diff --git a/source/blender/editors/util/ed_draw.cc b/source/blender/editors/util/ed_draw.cc index 95d64567533..3e22f812285 100644 --- a/source/blender/editors/util/ed_draw.cc +++ b/source/blender/editors/util/ed_draw.cc @@ -543,7 +543,7 @@ void ED_slider_factor_set(tSlider *slider, const float factor) slider->raw_factor = factor; slider->factor = factor; if (!slider->overshoot) { - slider->factor = clamp_f(slider->factor, 0, 1); + slider->factor = clamp_f(slider->factor, slider->factor_bounds[0], slider->factor_bounds[1]); } } @@ -576,6 +576,11 @@ void ED_slider_mode_set(tSlider *slider, SliderMode mode) slider->slider_mode = mode; } +SliderMode ED_slider_mode_get(tSlider *slider) +{ + return slider->slider_mode; +} + void ED_slider_unit_set(tSlider *slider, const char *unit) { STRNCPY(slider->unit_string, unit); -- 2.30.2