Calculate the SpinBox value using the Expression class

This closes #31780.
This commit is contained in:
Hugo Locurcio 2019-08-29 23:48:50 +02:00
parent a5e0aa32d9
commit 86a31e9e38
No known key found for this signature in database
GPG key ID: 39E8F8BE30B0A49C

View file

@ -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() {