Fix #107011: Boolean Modifier Overlap Threshold property issue in UI when value is 0 #107466
|
@ -5085,14 +5085,13 @@ static bool ui_numedit_but_NUM(uiButNumber *but,
|
|||
break;
|
||||
}
|
||||
case PROP_SCALE_LOG: {
|
||||
const float startvalue = max_ff(float(data->startvalue), log_min);
|
||||
if (tempf < log_min) {
|
||||
data->dragstartx -= logf(log_min / float(data->startvalue)) / fac -
|
||||
float(mx - data->dragstartx);
|
||||
data->dragstartx -= logf(log_min / startvalue) / fac - float(mx - data->dragstartx);
|
||||
tempf = softmin;
|
||||
}
|
||||
else if (tempf > softmax) {
|
||||
data->dragstartx -= logf(softmax / float(data->startvalue)) / fac -
|
||||
float(mx - data->dragstartx);
|
||||
data->dragstartx -= logf(softmax / startvalue) / fac - float(mx - data->dragstartx);
|
||||
tempf = softmax;
|
||||
}
|
||||
break;
|
||||
|
@ -5492,9 +5491,12 @@ static int ui_do_but_NUM(
|
|||
|
||||
double value_step;
|
||||
if (scale_type == PROP_SCALE_LOG) {
|
||||
value_step = powf(10.0f,
|
||||
(roundf(log10f(data->value) + UI_PROP_SCALE_LOG_SNAP_OFFSET) - 1.0f) +
|
||||
log10f(number_but->step_size));
|
||||
double precision = (roundf(log10f(data->value) + UI_PROP_SCALE_LOG_SNAP_OFFSET) - 1.0f) +
|
||||
log10f(number_but->step_size);
|
||||
if (!isfinite(precision)) {
|
||||
precision = -FLT_MAX; /* Happens when `data->value` is zero. */
|
||||
}
|
||||
value_step = powf(10.0f, max_ff(precision, -number_but->precision));
|
||||
}
|
||||
else {
|
||||
value_step = double(number_but->step_size * UI_PRECISION_FLOAT_SCALE);
|
||||
|
|
Loading…
Reference in New Issue