mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
@@ -17,6 +17,7 @@
|
|||||||
#include "../gui/EventDispatcher.h"
|
#include "../gui/EventDispatcher.h"
|
||||||
#include "../gui/ShortcutHandler.h"
|
#include "../gui/ShortcutHandler.h"
|
||||||
|
|
||||||
|
#include <SDL_clipboard.h>
|
||||||
#include <SDL_events.h>
|
#include <SDL_events.h>
|
||||||
#include <SDL_hints.h>
|
#include <SDL_hints.h>
|
||||||
|
|
||||||
@@ -30,13 +31,24 @@ InputSourceKeyboard::InputSourceKeyboard()
|
|||||||
|
|
||||||
void InputSourceKeyboard::handleEventKeyDown(const SDL_KeyboardEvent & key)
|
void InputSourceKeyboard::handleEventKeyDown(const SDL_KeyboardEvent & key)
|
||||||
{
|
{
|
||||||
if(key.repeat != 0)
|
|
||||||
return; // ignore periodic event resends
|
|
||||||
|
|
||||||
if (SDL_IsTextInputActive() == SDL_TRUE)
|
if (SDL_IsTextInputActive() == SDL_TRUE)
|
||||||
{
|
{
|
||||||
|
if(key.keysym.sym == SDLK_v && isKeyboardCtrlDown())
|
||||||
|
{
|
||||||
|
char * clipboardBuffer = SDL_GetClipboardText();
|
||||||
|
std::string clipboardContent = clipboardBuffer;
|
||||||
|
boost::erase_all(clipboardContent, "\r");
|
||||||
|
boost::erase_all(clipboardContent, "\n");
|
||||||
|
GH.events().dispatchTextInput(clipboardContent);
|
||||||
|
SDL_free(clipboardBuffer);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (key.keysym.sym >= ' ' && key.keysym.sym < 0x80)
|
if (key.keysym.sym >= ' ' && key.keysym.sym < 0x80)
|
||||||
return; // printable character - will be handled as text input
|
return; // printable character - will be handled as text input
|
||||||
|
} else {
|
||||||
|
if(key.repeat != 0)
|
||||||
|
return; // ignore periodic event resends
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(key.state == SDL_PRESSED);
|
assert(key.state == SDL_PRESSED);
|
||||||
|
Reference in New Issue
Block a user