From 75fbecf616a9b3e2592cffa8000f92237db05640 Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Sun, 17 Jul 2016 14:01:52 +0600 Subject: GUI: Add Ctrl+V handling in EditableWidget In SDL2 there is SDL_GetClipboardText(), so EditableWidget could support pasting into it. No copying yet, as there is no selecting. --- gui/widgets/editable.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'gui/widgets') 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 +#include +#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. // -- cgit v1.2.3