diff options
Diffstat (limited to 'gui/widgets')
-rw-r--r-- | gui/widgets/editable.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gui/widgets/editable.cpp b/gui/widgets/editable.cpp index 4f7e584c14..6c63074fd1 100644 --- a/gui/widgets/editable.cpp +++ b/gui/widgets/editable.cpp @@ -20,6 +20,13 @@ * */ +#ifdef USE_SDL2 +#define FORBIDDEN_SYMBOL_ALLOW_ALL + +#include <SDL2/SDL.h> +#include <SDL2/SDL_clipboard.h> +#endif + #include "common/rect.h" #include "common/system.h" #include "gui/widgets/editable.h" @@ -185,6 +192,25 @@ bool EditableWidget::handleKeyDown(Common::KeyState state) { forcecaret = true; break; +#ifdef USE_SDL2 + case Common::KEYCODE_v: + if (state.flags & Common::KBD_CTRL) { + if (SDL_HasClipboardText() == SDL_TRUE) { + char *text = SDL_GetClipboardText(); + if (text != nullptr) { + for (char *ptr = text; *ptr; ++ptr) { + if (tryInsertChar(*ptr, _caretPos)) + ++_caretPos; + } + dirty = true; + } + } + } else { + defaultKeyDownHandler(state, dirty, forcecaret, handled); + } + break; +#endif + #ifdef MACOSX // Let ctrl-a / ctrl-e move the caret to the start / end of the line. // |