diff --git a/uppsrc/RichEdit/RichEdit.h b/uppsrc/RichEdit/RichEdit.h index 0590c6892..bed4f16e6 100644 --- a/uppsrc/RichEdit/RichEdit.h +++ b/uppsrc/RichEdit/RichEdit.h @@ -92,6 +92,7 @@ public: virtual Value Format(const Value& v) const; virtual void SetData(const Value& v); virtual bool Key(dword key, int repcnt); + virtual void MouseWheel(Point p, int zdelta, dword keyflags); private: SpinButtons spin; diff --git a/uppsrc/RichEdit/UnitEdit.cpp b/uppsrc/RichEdit/UnitEdit.cpp index 04c98621e..1b9cd4a2a 100644 --- a/uppsrc/RichEdit/UnitEdit.cpp +++ b/uppsrc/RichEdit/UnitEdit.cpp @@ -34,7 +34,7 @@ void UnitEdit::Read(double& d, int& u) const u = unit; d = Null; if(s && *s) { - char *e; + const char *e; int sign = 1; for(;;) { if(*s == '-' && sgn) @@ -44,7 +44,10 @@ void UnitEdit::Read(double& d, int& u) const break; s++; } - d = sign * strtod(s, &e); + d = ScanDouble(s, &e); + if(IsNull(d)) + return; + d *= sign; if(e == s) { d = Null; return; @@ -104,6 +107,11 @@ bool UnitEdit::Key(dword key, int repcnt) return EditField::Key(key, repcnt); } +void UnitEdit::MouseWheel(Point p, int zdelta, dword keyflags) +{ + Spin(zdelta < 0 ? -1 : 1); +} + void UnitEdit::Spin(int delta) { double q;