FL/Fl_Sometimes_Input: Allow user to abort edit with Escape key.

This commit is contained in:
Jonathan Moore Liles 2020-10-17 10:55:06 -07:00
parent 628fef30e9
commit e42b50814a
1 changed files with 15 additions and 3 deletions

View File

@ -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: