diff --git a/FL/Fl_Sometimes_Input.H b/FL/Fl_Sometimes_Input.H index ef5be75..94a52b0 100644 --- a/FL/Fl_Sometimes_Input.H +++ b/FL/Fl_Sometimes_Input.H @@ -30,6 +30,7 @@ class Fl_Sometimes_Input : public Fl_Input { Fl_Boxtype _up_box; + char *_text; public: @@ -53,7 +54,7 @@ public: { fl_draw_box( up_box(), x(), y(), w(), h(), color() ); - Fl_Color c = fl_contrast( textcolor(), color() ); + Fl_Color c = textcolor();// fl_contrast( textcolor(), color() ); fl_color( active_r() ? c : fl_inactive( c ) ); @@ -80,19 +81,30 @@ public: case FL_KEYDOWN: { if ( ( Fl::event_key() == FL_Enter || - Fl::event_key() == FL_Tab ) ) + Fl::event_key() == FL_Tab ) ) { + do_callback(); + free( _text ); Fl::focus( NULL ); r = 1; } + else if ( Fl::event_key() == FL_Escape ) + { + value( _text ); + Fl::focus( NULL ); + + r = 1; + } break; } case FL_FOCUS: + _text = strdup( value() ); redraw(); r = 1; break; case FL_UNFOCUS: - do_callback(); + _text = NULL; + redraw(); r = 1; break; case FL_PUSH: