Fix Input onchange not called (#776)

This commit is contained in:
chrysante
2023-11-11 17:29:19 +01:00
committed by GitHub
parent 0631c3ab3f
commit e8589dd533
2 changed files with 13 additions and 2 deletions

View File

@@ -207,10 +207,11 @@ class InputBase : public ComponentBase, public InputOption {
const size_t end = cursor_position();
content->erase(start, end - start);
cursor_position() = start;
on_change();
return true;
}
bool HandleDelete() {
bool DeleteImpl() {
if (cursor_position() == (int)content->size()) {
return false;
}
@@ -220,6 +221,14 @@ class InputBase : public ComponentBase, public InputOption {
return true;
}
bool HandleDelete() {
if (DeleteImpl()) {
on_change();
return true;
}
return false;
}
bool HandleArrowLeft() {
if (cursor_position() == 0) {
return false;
@@ -345,7 +354,7 @@ class InputBase : public ComponentBase, public InputOption {
bool HandleCharacter(const std::string& character) {
if (!insert() && cursor_position() < (int)content->size() &&
content()[cursor_position()] != '\n') {
HandleDelete();
DeleteImpl();
}
content->insert(cursor_position(), character);
cursor_position() += character.size();