Reset ui::edit caret on various events

This commit is contained in:
Nikita Lisitsa 2022-05-10 11:51:47 +03:00
parent ec228d481b
commit 9a3620f186

View file

@ -210,10 +210,12 @@ namespace psemek::ui
else if (e.key == SDLK_HOME) else if (e.key == SDLK_HOME)
{ {
caret_ = 0; caret_ = 0;
reset_caret();
} }
else if (e.key == SDLK_END) else if (e.key == SDLK_END)
{ {
caret_ = text_.size(); caret_ = text_.size();
reset_caret();
} }
else if (e.key == SDLK_RETURN) else if (e.key == SDLK_RETURN)
{ {
@ -247,6 +249,7 @@ namespace psemek::ui
new_text.erase(new_text.begin() + caret_); new_text.erase(new_text.begin() + caret_);
if (!set_text(std::move(new_text), false)) if (!set_text(std::move(new_text), false))
++caret_; ++caret_;
reset_caret();
} }
} }
else if (e.key == SDLK_DELETE) else if (e.key == SDLK_DELETE)
@ -256,6 +259,7 @@ namespace psemek::ui
auto new_text = text_; auto new_text = text_;
new_text.erase(new_text.begin() + caret_); new_text.erase(new_text.begin() + caret_);
set_text(std::move(new_text), false); set_text(std::move(new_text), false);
reset_caret();
} }
} }
@ -274,6 +278,7 @@ namespace psemek::ui
new_text.insert(new_text.begin() + caret_, range.begin(), range.end()); new_text.insert(new_text.begin() + caret_, range.begin(), range.end());
if (set_text(std::move(new_text), false)) if (set_text(std::move(new_text), false))
caret_ += range.size(); caret_ += range.size();
reset_caret();
return true; return true;
} }