diff options
Diffstat (limited to '3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.c')
-rw-r--r-- | 3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.c | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.c b/3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.c deleted file mode 100644 index b57a66a7be2..00000000000 --- a/3rdparty/SDL2/src/video/windows/SDL_windowsclipboard.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ -#include "../../SDL_internal.h" - -#if SDL_VIDEO_DRIVER_WINDOWS - -#include "SDL_windowsvideo.h" -#include "SDL_windowswindow.h" -#include "../../events/SDL_clipboardevents_c.h" - - -#ifdef UNICODE -#define TEXT_FORMAT CF_UNICODETEXT -#else -#define TEXT_FORMAT CF_TEXT -#endif - - -/* Get any application owned window handle for clipboard association */ -static HWND -GetWindowHandle(_THIS) -{ - SDL_Window *window; - - window = _this->windows; - if (window) { - return ((SDL_WindowData *) window->driverdata)->hwnd; - } - return NULL; -} - -int -WIN_SetClipboardText(_THIS, const char *text) -{ - SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; - int result = 0; - - if (OpenClipboard(GetWindowHandle(_this))) { - HANDLE hMem; - LPTSTR tstr; - SIZE_T i, size; - - /* Convert the text from UTF-8 to Windows Unicode */ - tstr = WIN_UTF8ToString(text); - if (!tstr) { - return -1; - } - - /* Find out the size of the data */ - for (size = 0, i = 0; tstr[i]; ++i, ++size) { - if (tstr[i] == '\n' && (i == 0 || tstr[i-1] != '\r')) { - /* We're going to insert a carriage return */ - ++size; - } - } - size = (size+1)*sizeof(*tstr); - - /* Save the data to the clipboard */ - hMem = GlobalAlloc(GMEM_MOVEABLE, size); - if (hMem) { - LPTSTR dst = (LPTSTR)GlobalLock(hMem); - if (dst) { - /* Copy the text over, adding carriage returns as necessary */ - for (i = 0; tstr[i]; ++i) { - if (tstr[i] == '\n' && (i == 0 || tstr[i-1] != '\r')) { - *dst++ = '\r'; - } - *dst++ = tstr[i]; - } - *dst = 0; - GlobalUnlock(hMem); - } - - EmptyClipboard(); - if (!SetClipboardData(TEXT_FORMAT, hMem)) { - result = WIN_SetError("Couldn't set clipboard data"); - } - data->clipboard_count = GetClipboardSequenceNumber(); - } - SDL_free(tstr); - - CloseClipboard(); - } else { - result = WIN_SetError("Couldn't open clipboard"); - } - return result; -} - -char * -WIN_GetClipboardText(_THIS) -{ - char *text; - - text = NULL; - if (IsClipboardFormatAvailable(TEXT_FORMAT) && - OpenClipboard(GetWindowHandle(_this))) { - HANDLE hMem; - LPTSTR tstr; - - hMem = GetClipboardData(TEXT_FORMAT); - if (hMem) { - tstr = (LPTSTR)GlobalLock(hMem); - text = WIN_StringToUTF8(tstr); - GlobalUnlock(hMem); - } else { - WIN_SetError("Couldn't get clipboard data"); - } - CloseClipboard(); - } - if (!text) { - text = SDL_strdup(""); - } - return text; -} - -SDL_bool -WIN_HasClipboardText(_THIS) -{ - SDL_bool result = SDL_FALSE; - char *text = WIN_GetClipboardText(_this); - if (text) { - result = text[0] != '\0' ? SDL_TRUE : SDL_FALSE; - SDL_free(text); - } - return result; -} - -void -WIN_CheckClipboardUpdate(struct SDL_VideoData * data) -{ - const DWORD count = GetClipboardSequenceNumber(); - if (count != data->clipboard_count) { - if (data->clipboard_count) { - SDL_SendClipboardUpdate(); - } - data->clipboard_count = count; - } -} - -#endif /* SDL_VIDEO_DRIVER_WINDOWS */ - -/* vi: set ts=4 sw=4 expandtab: */ |