浏览代码

allow clipboard paste

Michael 2 年之前
父节点
当前提交
59f3740aea
共有 1 个文件被更改,包括 12 次插入3 次删除
  1. 12 3
      client/eventsSDL/InputSourceKeyboard.cpp

+ 12 - 3
client/eventsSDL/InputSourceKeyboard.cpp

@@ -17,6 +17,7 @@
 #include "../gui/EventDispatcher.h"
 #include "../gui/ShortcutHandler.h"
 
+#include <SDL_clipboard.h>
 #include <SDL_events.h>
 #include <SDL_hints.h>
 
@@ -30,13 +31,21 @@ InputSourceKeyboard::InputSourceKeyboard()
 
 void InputSourceKeyboard::handleEventKeyDown(const SDL_KeyboardEvent & key)
 {
-	if(key.repeat != 0)
-		return; // ignore periodic event resends
-
 	if (SDL_IsTextInputActive() == SDL_TRUE)
 	{
+		if(key.keysym.sym == SDLK_v) {
+		        std::string clipboardContent = SDL_GetClipboardText();
+		        boost::erase_all(clipboardContent, "\r");
+		        boost::erase_all(clipboardContent, "\n");
+		        GH.events().dispatchTextInput(clipboardContent);
+		        return;
+	 	}
+
 		if (key.keysym.sym >= ' ' && key.keysym.sym < 0x80)
 			return; // printable character - will be handled as text input
+	} else {
+		if(key.repeat != 0)
+			return; // ignore periodic event resends
 	}
 
 	assert(key.state == SDL_PRESSED);