From 137ddb9dc6045964108b61dc0c09d48da79e361d Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Wed, 27 Aug 2014 04:17:39 -0500 Subject: [PATCH] Get clipboard data from SDL This makes pasting in client console and UI edit fields work on X11 and OS X. Sys_GetClipboardData is only used by client, so returning NULL in dedicated is fine. --- code/sys/sys_main.c | 29 +++++++++++++++++++++++++++++ code/sys/sys_unix.c | 10 ---------- code/sys/sys_win32.c | 27 --------------------------- 3 files changed, 29 insertions(+), 37 deletions(-) diff --git a/code/sys/sys_main.c b/code/sys/sys_main.c index 078011aa..3102cf56 100644 --- a/code/sys/sys_main.c +++ b/code/sys/sys_main.c @@ -127,6 +127,35 @@ char *Sys_ConsoleInput(void) return CON_Input( ); } +/* +================== +Sys_GetClipboardData +================== +*/ +char *Sys_GetClipboardData(void) +{ +#ifdef DEDICATED + return NULL; +#else + char *data = NULL; + char *cliptext; + + if ( ( cliptext = SDL_GetClipboardText() ) != NULL ) { + if ( cliptext[0] != '\0' ) { + size_t bufsize = strlen( cliptext ) + 1; + + data = Z_Malloc( bufsize ); + Q_strncpyz( data, cliptext, bufsize ); + + // find first listed char and set to '\0' + strtok( data, "\n\r\b" ); + } + SDL_free( cliptext ); + } + return data; +#endif +} + #ifdef DEDICATED # define PID_FILENAME PRODUCT_NAME "_server.pid" #else diff --git a/code/sys/sys_unix.c b/code/sys/sys_unix.c index c2de336d..2fcb58bd 100644 --- a/code/sys/sys_unix.c +++ b/code/sys/sys_unix.c @@ -148,16 +148,6 @@ char *Sys_GetCurrentUser( void ) return p->pw_name; } -/* -================== -Sys_GetClipboardData -================== -*/ -char *Sys_GetClipboardData(void) -{ - return NULL; -} - #define MEM_THRESHOLD 96*1024*1024 /* diff --git a/code/sys/sys_win32.c b/code/sys/sys_win32.c index 57c7ed56..14be1364 100644 --- a/code/sys/sys_win32.c +++ b/code/sys/sys_win32.c @@ -190,33 +190,6 @@ char *Sys_GetCurrentUser( void ) return s_userName; } -/* -================ -Sys_GetClipboardData -================ -*/ -char *Sys_GetClipboardData( void ) -{ - char *data = NULL; - char *cliptext; - - if ( OpenClipboard( NULL ) != 0 ) { - HANDLE hClipboardData; - - if ( ( hClipboardData = GetClipboardData( CF_TEXT ) ) != 0 ) { - if ( ( cliptext = GlobalLock( hClipboardData ) ) != 0 ) { - data = Z_Malloc( GlobalSize( hClipboardData ) + 1 ); - Q_strncpyz( data, cliptext, GlobalSize( hClipboardData ) ); - GlobalUnlock( hClipboardData ); - - strtok( data, "\n\r\b" ); - } - } - CloseClipboard(); - } - return data; -} - #define MEM_THRESHOLD 96*1024*1024 /*