diff options
author | Yuri Sizov <yuris@humnom.net> | 2023-09-28 20:04:02 +0200 |
---|---|---|
committer | Yuri Sizov <yuris@humnom.net> | 2023-09-28 20:04:02 +0200 |
commit | 4f0e2ea86e84e369b249bdcdffec254f28e948e2 (patch) | |
tree | 871935f1f631ba4a95d3eb15550b942013a9db4a /editor/gui/editor_spin_slider.cpp | |
parent | 813cd1dfc8fb7e6b8cfbc6945ecdf550a7f673a2 (diff) | |
parent | 4d3dc0e9443d1e21f6e3e3d5755e5a0705b55024 (diff) | |
download | redot-engine-4f0e2ea86e84e369b249bdcdffec254f28e948e2.tar.gz |
Merge pull request #80699 from aXu-AP/spin-box-comma-decimals
Allow comma as a decimal separator for SpinBox
Diffstat (limited to 'editor/gui/editor_spin_slider.cpp')
-rw-r--r-- | editor/gui/editor_spin_slider.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/editor/gui/editor_spin_slider.cpp b/editor/gui/editor_spin_slider.cpp index a1b0ecad6b..750837cce9 100644 --- a/editor/gui/editor_spin_slider.cpp +++ b/editor/gui/editor_spin_slider.cpp @@ -525,17 +525,24 @@ String EditorSpinSlider::get_suffix() const { } void EditorSpinSlider::_evaluate_input_text() { - // Replace comma with dot to support it as decimal separator (GH-6028). - // This prevents using functions like `pow()`, but using functions - // in EditorSpinSlider is a barely known (and barely used) feature. - // Instead, we'd rather support German/French keyboard layouts out of the box. - const String text = TS->parse_number(value_input->get_text().replace(",", ".")); - Ref<Expression> expr; expr.instantiate(); + + // Convert commas ',' to dots '.' for French/German etc. keyboard layouts. + String text = value_input->get_text().replace(",", "."); + text = text.replace(";", ","); + text = TS->parse_number(text); + Error err = expr->parse(text); if (err != OK) { - return; + // If the expression failed try without converting commas to dots - they might have been for parameter separation. + text = value_input->get_text(); + text = TS->parse_number(text); + + err = expr->parse(text); + if (err != OK) { + return; + } } Variant v = expr->execute(Array(), nullptr, false, true); |