Support cancelling editing text in ui::edit
This commit is contained in:
parent
e445b42724
commit
26631cd564
2 changed files with 31 additions and 1 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue