Selectable digit for scrollwheel increment
This commit is contained in:
parent
e1dfc48906
commit
40793d2e7d
@ -101,16 +101,34 @@ bool SIUnitEdit::eventFilter(QObject *, QEvent *event)
|
|||||||
int sign = increment > 0 ? 1 : -1;
|
int sign = increment > 0 ? 1 : -1;
|
||||||
// figure out step increment
|
// figure out step increment
|
||||||
auto newVal = _value;
|
auto newVal = _value;
|
||||||
while(steps > 0) {
|
auto cursor = cursorPosition();
|
||||||
// do update in multiple steps because the step size could change inbetween
|
if(cursor == 0) {
|
||||||
|
// no active cursor, use default digit
|
||||||
constexpr int nthDigit = 3;
|
constexpr int nthDigit = 3;
|
||||||
|
while(steps > 0) {
|
||||||
|
// do update in multiple steps because the step size could change inbetween
|
||||||
|
auto step_size = pow(10, floor(log10(std::abs(newVal))) - nthDigit + 1);
|
||||||
|
newVal += step_size * sign;
|
||||||
|
steps--;
|
||||||
|
}
|
||||||
|
setValue(newVal);
|
||||||
|
} else {
|
||||||
|
// change the digit at the current cursor
|
||||||
|
int nthDigit = cursor;
|
||||||
|
if(_value < 0) {
|
||||||
|
// account for sign
|
||||||
|
nthDigit--;
|
||||||
|
}
|
||||||
|
auto dotPos = text().indexOf('.');
|
||||||
|
if(dotPos >= 0 && dotPos < nthDigit) {
|
||||||
|
nthDigit--;
|
||||||
|
}
|
||||||
auto step_size = pow(10, floor(log10(std::abs(newVal))) - nthDigit + 1);
|
auto step_size = pow(10, floor(log10(std::abs(newVal))) - nthDigit + 1);
|
||||||
newVal += step_size * sign;
|
newVal += step_size * steps * sign;
|
||||||
steps--;
|
setValue(newVal);
|
||||||
|
setText(placeholderText());
|
||||||
|
setCursorPosition(cursor);
|
||||||
}
|
}
|
||||||
setValue(newVal);
|
|
||||||
continueEditing();
|
|
||||||
setFocus();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user