@@ -152,12 +152,10 @@ func (c *Context) NumberFieldF(value *float64, step float64, digits int) EventHa
152152func (c * Context ) numberField (value * int , step int , id WidgetID , opt option ) (EventHandler , error ) {
153153 last := * value
154154
155- e , err := c .numberTextField (value , id )
156- if err != nil {
155+ if err := c .numberTextField (value , id ); err != nil {
157156 return nil , err
158157 }
159- if e != nil {
160- e .On (func () {})
158+ if c .numberEdit == id {
161159 return nil , nil
162160 }
163161
@@ -182,12 +180,10 @@ func (c *Context) numberField(value *int, step int, id WidgetID, opt option) (Ev
182180func (c * Context ) numberFieldF (value * float64 , step float64 , digits int , id WidgetID , opt option ) (EventHandler , error ) {
183181 last := * value
184182
185- oner , err := c .numberTextFieldF (value , id )
186- if err != nil {
183+ if err := c .numberTextFieldF (value , id ); err != nil {
187184 return nil , err
188185 }
189- if oner != nil {
190- oner .On (func () {})
186+ if c .numberEdit == id {
191187 return nil , nil
192188 }
193189
@@ -209,60 +205,52 @@ func (c *Context) numberFieldF(value *float64, step float64, digits int, id Widg
209205 })
210206}
211207
212- func (c * Context ) numberTextField (value * int , id WidgetID ) (EventHandler , error ) {
213- if c .pointing .justPressed () && ebiten .IsKeyPressed (ebiten .KeyShift ) &&
214- c .hover == id {
208+ func (c * Context ) numberTextField (value * int , id WidgetID ) error {
209+ if c .pointing .justPressed () && ebiten .IsKeyPressed (ebiten .KeyShift ) && c .hover == id {
215210 c .numberEdit = id
216211 c .numberEditBuf = fmt .Sprintf ("%d" , * value )
217212 }
218213 if c .numberEdit == id {
219214 e , err := c .textFieldRaw (& c .numberEditBuf , id , 0 )
220215 if err != nil {
221- return nil , err
216+ return err
222217 }
223- return & preprendedEventHandler {
224- e : e ,
225- f : func () {
226- if e != nil || c .focus != id {
227- nval , err := strconv .ParseInt (c .numberEditBuf , 10 , 64 )
228- if err != nil {
229- nval = 0
230- }
231- * value = int (nval )
232- c .numberEdit = emptyWidgetID
218+ if e != nil {
219+ e .On (func () {
220+ nval , err := strconv .ParseInt (c .numberEditBuf , 10 , 64 )
221+ if err != nil {
222+ nval = 0
233223 }
234- },
235- }, nil
224+ * value = int (nval )
225+ c .numberEdit = emptyWidgetID
226+ })
227+ }
236228 }
237- return nil , nil
229+ return nil
238230}
239231
240- func (c * Context ) numberTextFieldF (value * float64 , id WidgetID ) (EventHandler , error ) {
241- if c .pointing .justPressed () && ebiten .IsKeyPressed (ebiten .KeyShift ) &&
242- c .hover == id {
232+ func (c * Context ) numberTextFieldF (value * float64 , id WidgetID ) error {
233+ if c .pointing .justPressed () && ebiten .IsKeyPressed (ebiten .KeyShift ) && c .hover == id {
243234 c .numberEdit = id
244235 c .numberEditBuf = fmt .Sprintf (realFmt , * value )
245236 }
246237 if c .numberEdit == id {
247238 e , err := c .textFieldRaw (& c .numberEditBuf , id , 0 )
248239 if err != nil {
249- return nil , err
240+ return err
250241 }
251- return & preprendedEventHandler {
252- e : e ,
253- f : func () {
254- if e != nil || c .focus != id {
255- nval , err := strconv .ParseFloat (c .numberEditBuf , 64 )
256- if err != nil {
257- nval = 0
258- }
259- * value = float64 (nval )
260- c .numberEdit = emptyWidgetID
242+ if e != nil {
243+ e .On (func () {
244+ nval , err := strconv .ParseFloat (c .numberEditBuf , 64 )
245+ if err != nil {
246+ nval = 0
261247 }
262- },
263- }, nil
248+ * value = float64 (nval )
249+ c .numberEdit = emptyWidgetID
250+ })
251+ }
264252 }
265- return nil , nil
253+ return nil
266254}
267255
268256func formatNumber (v float64 , digits int ) string {
0 commit comments