From 7693c58e280148334754b00fb4142930cc7f65ea Mon Sep 17 00:00:00 2001 From: signde Date: Fri, 17 Sep 2004 06:06:47 +0000 Subject: [PATCH] (svn r279) -Feature: [WIN32] Console now allows to paste data from the clipboard [ctrl + v] --- console.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/console.c b/console.c index 06d59059a5..d867bdf3b5 100644 --- a/console.c +++ b/console.c @@ -7,7 +7,11 @@ #include "variables.h" #include "hal.h" #include -#include "console.h" +#include "console.h" + +#ifdef WIN32 +#include +#endif // ** main console ** // static bool _iconsole_inited; @@ -46,9 +50,34 @@ static const WindowDesc _iconsole_window_desc = { /* *************** */ /* 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 @@ static void IConsoleWndProc(Window *w, WindowEvent *e) 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);