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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View File

@ -7,6 +7,8 @@ current (development)
### Component
- Feature: Add support for `Input`'s insert mode. Add `InputOption::insert`
option. Added by @mingsheng13.
- Bugfix: `Input` `onchange` was not called on backspace or delete key.
Fixed by @chrysante in chrysante in PR #776.
### Dom
- Feature: Add `hscroll_indicator`. It display an horizontal indicator

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();