(svn r279) -Feature: [WIN32] Console now allows to paste data from the clipboard [ctrl + v]
authorsignde
Fri, 17 Sep 2004 06:06:47 +0000
changeset 273 e542881b8a3b
parent 272 eb9cae2cc71b
child 274 a56c9fe2832c
(svn r279) -Feature: [WIN32] Console now allows to paste data from the clipboard [ctrl + v]
console.c
--- a/console.c	Fri Sep 17 06:02:27 2004 +0000
+++ b/console.c	Fri Sep 17 06:06:47 2004 +0000
@@ -7,7 +7,11 @@
 #include "variables.h"
 #include "hal.h"
 #include <stdarg.h>
-#include "console.h"
+#include "console.h"
+
+#ifdef WIN32
+#include <windows.h>
+#endif
 
 // ** main console ** //
 static bool _iconsole_inited;
@@ -46,9 +50,34 @@
 
 /* *************** */
 /*  end of header  */
-/* *************** */
+/* *************** */
+
+static void IConsoleAppendClipboard()
+{
+#ifdef WIN32
+	if (IsClipboardFormatAvailable(CF_TEXT)) {
+		byte * data;
+		HGLOBAL cbuf;
+		int i;
+
+		OpenClipboard(NULL);
+		cbuf = GetClipboardData(CF_TEXT);
+		data = (byte *) GlobalLock(cbuf);
+
+		i=0;
+		while (IS_INT_INSIDE(data[i], 32, 256)) {
+			_iconsole_cmdline[_iconsole_cmdpos]=data[i];
+			i++;
+			_iconsole_cmdpos++;
+			}
+
+		GlobalUnlock(cbuf);
+		CloseClipboard();
+	}
+#endif
+}
 
-void IConsoleClearCommand()
+static void IConsoleClearCommand()
 {
 int i;
 for (i=0; i<255; i++) _iconsole_cmdline[i]=0;
@@ -103,7 +132,12 @@
 		break;
 
 	case WE_KEYPRESS:
-		e->keypress.cont=false;
+		e->keypress.cont=false;
+		if (e->keypress.keycode == (WKC_CTRL | 'V'))
+			{
+			IConsoleAppendClipboard();
+			SetWindowDirty(w);
+			} else
 		if (e->keypress.keycode == (WKC_UP))
 			{
 			IConsoleCmdBufferNavigate(+1);