|
@@ -29,6 +29,7 @@
|
|
|
/*************************************************************************/
|
|
|
|
|
|
#include "spin_box.h"
|
|
|
+#include "core/math/expression.h"
|
|
|
#include "core/os/input.h"
|
|
|
|
|
|
Size2 SpinBox::get_minimum_size() const {
|
|
@@ -50,15 +51,18 @@ void SpinBox::_value_changed(double) {
|
|
|
|
|
|
void SpinBox::_text_entered(const String &p_string) {
|
|
|
|
|
|
- /*
|
|
|
- if (!p_string.is_numeric())
|
|
|
+ Ref<Expression> expr;
|
|
|
+ expr.instance();
|
|
|
+ Error err = expr->parse(p_string);
|
|
|
+ if (err != OK) {
|
|
|
return;
|
|
|
- */
|
|
|
- String value = p_string;
|
|
|
- if (prefix != "" && p_string.begins_with(prefix))
|
|
|
- value = p_string.substr(prefix.length(), p_string.length() - prefix.length());
|
|
|
- set_value(value.to_double());
|
|
|
- _value_changed(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ Variant value = expr->execute(Array(), NULL, false);
|
|
|
+ if (value.get_type() != Variant::NIL) {
|
|
|
+ set_value(value);
|
|
|
+ _value_changed(0);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
LineEdit *SpinBox::get_line_edit() {
|