From 049d62b35cd48dffa2a661bf82452f3694ffaaa2 Mon Sep 17 00:00:00 2001 From: michi_cc Date: Sun, 4 Oct 2009 21:08:38 +0000 Subject: (svn r17708) -Feature [FS#2053]: [OSX] Implement clipboard support for OS X. --- src/os/windows/win32.cpp | 45 ++++----------------------------------------- 1 file changed, 4 insertions(+), 41 deletions(-) (limited to 'src/os/windows/win32.cpp') diff --git a/src/os/windows/win32.cpp b/src/os/windows/win32.cpp index 6ca970149..4ff4e3a2a 100644 --- a/src/os/windows/win32.cpp +++ b/src/os/windows/win32.cpp @@ -465,28 +465,18 @@ void DetermineBasePaths(const char *exe) _searchpaths[SP_APPLICATION_BUNDLE_DIR] = NULL; } -/** - * Insert a chunk of text from the clipboard onto the textbuffer. Get TEXT clipboard - * and append this up to the maximum length (either absolute or screenlength). If maxlength - * is zero, we don't care about the screenlength but only about the physical length of the string - * @param tb Textbuf type to be changed - * @return true on successful change of Textbuf, or false otherwise - */ -bool InsertTextBufferClipboard(Textbuf *tb) + +bool GetClipboardContents(char *buffer, size_t buff_len) { HGLOBAL cbuf; - char utf8_buf[512]; const char *ptr; - WChar c; - uint16 width, length; - if (IsClipboardFormatAvailable(CF_UNICODETEXT)) { OpenClipboard(NULL); cbuf = GetClipboardData(CF_UNICODETEXT); ptr = (const char*)GlobalLock(cbuf); - const char *ret = convert_from_fs((wchar_t*)ptr, utf8_buf, lengthof(utf8_buf)); + const char *ret = convert_from_fs((wchar_t*)ptr, buffer, buff_len); GlobalUnlock(cbuf); CloseClipboard(); @@ -497,7 +487,7 @@ bool InsertTextBufferClipboard(Textbuf *tb) cbuf = GetClipboardData(CF_TEXT); ptr = (const char*)GlobalLock(cbuf); - strecpy(utf8_buf, FS2OTTD(ptr), lastof(utf8_buf)); + ttd_strlcpy(buffer, FS2OTTD(ptr), buff_len); GlobalUnlock(cbuf); CloseClipboard(); @@ -506,33 +496,6 @@ bool InsertTextBufferClipboard(Textbuf *tb) return false; } - width = length = 0; - - for (ptr = utf8_buf; (c = Utf8Consume(&ptr)) != '\0';) { - if (!IsPrintable(c)) break; - - byte len = Utf8CharLen(c); - if (tb->size + length + len > tb->maxsize) break; - - byte charwidth = GetCharacterWidth(FS_NORMAL, c); - if (tb->maxwidth != 0 && width + tb->width + charwidth > tb->maxwidth) break; - - width += charwidth; - length += len; - } - - if (length == 0) return false; - - memmove(tb->buf + tb->caretpos + length, tb->buf + tb->caretpos, tb->size - tb->caretpos); - memcpy(tb->buf + tb->caretpos, utf8_buf, length); - tb->width += width; - tb->caretxoffs += width; - - tb->size += length; - tb->caretpos += length; - assert(tb->size <= tb->maxsize); - tb->buf[tb->size - 1] = '\0'; // terminating zero - return true; } -- cgit v1.2.3-54-g00ecf