Skip to content

Commit

Permalink
TextInput: A couple of fixes
Browse files Browse the repository at this point in the history
1. Fixes `erase`.
2. Marks some events that will handle TextInput as handled.
3. Adds Ctrl+A.
  • Loading branch information
glebm committed Oct 31, 2023
1 parent 2871895 commit 115c071
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
11 changes: 10 additions & 1 deletion Source/DiabloUI/text_input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ bool HandleInputEvent(const SDL_Event &event, TextInputState &state,
case SDL_KEYDOWN: {
switch (event.key.keysym.sym) {
#ifndef USE_SDL1
case SDLK_a:
if (isCtrl) {
state.setCursorToStart();
state.setSelectCursorToEnd();
}
return true;
case SDLK_c:
if (isCtrl) {
const std::string selectedText { state.selectedText() };
Expand Down Expand Up @@ -92,8 +98,11 @@ bool HandleInputEvent(const SDL_Event &event, TextInputState &state,
typeFn(utf8);
return true;
}
#else
// Mark events that will also trigger SDL_TEXTINPUT as handled.
return !isCtrl && !isAlt
&& event.key.keysym.sym >= SDLK_SPACE && event.key.keysym.sym <= SDLK_z;
#endif
return false;
}
#ifndef USE_SDL1
case SDL_TEXTINPUT:
Expand Down
2 changes: 1 addition & 1 deletion Source/DiabloUI/text_input.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ class TextInputState {

void erase(size_t pos, size_t len)
{
std::memmove(&buf_[pos], &buf_[pos + len], len);
std::memmove(&buf_[pos], &buf_[pos + len], len_ - (pos + len));
len_ -= len;
buf_[len_] = '\0';
}
Expand Down

0 comments on commit 115c071

Please sign in to comment.