Fix: Number input on slider #111269
|
@ -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 ************* */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue