Support cancelling editing text in ui::edit

This commit is contained in:
Nikita Lisitsa 2022-04-08 14:57:33 +03:00
parent e445b42724
commit 26631cd564
2 changed files with 31 additions and 1 deletions

View file

@ -77,6 +77,7 @@ namespace psemek::ui
private:
std::u32string text_;
std::u32string old_text_;
font_type font_;
halignment halign_ = halignment::left;
valignment valign_ = valignment::top;

View file

@ -109,6 +109,7 @@ namespace psemek::ui
if (!editing_)
{
editing_ = true;
old_text_ = text_;
start_text_input();
reset_caret();
}
@ -126,6 +127,21 @@ namespace psemek::ui
}
}
if (e.button == mouse_button::right && e.down)
{
if (editing_)
{
editing_ = false;
text_ = old_text_;
cached_state_.reset();
stop_text_input();
reset_caret();
caret_ = std::min(caret_, text_.size());
post_text_entered();
return true;
}
}
return false;
}
@ -157,7 +173,7 @@ namespace psemek::ui
{
caret_ = text_.size();
}
else if (e.key == SDLK_RETURN || e.key == SDLK_ESCAPE)
else if (e.key == SDLK_RETURN)
{
if (editing_)
{
@ -167,6 +183,19 @@ namespace psemek::ui
post_text_entered();
}
}
else if (e.key == SDLK_ESCAPE)
{
if (editing_)
{
editing_ = false;
text_ = old_text_;
cached_state_.reset();
stop_text_input();
reset_caret();
caret_ = std::min(caret_, text_.size());
post_text_entered();
}
}
else if (e.key == SDLK_BACKSPACE)
{
if (caret_ > 0)