From 7bb12511d9efc65253a7927fdeae1bd69266c632 Mon Sep 17 00:00:00 2001 From: MBlanc Date: Tue, 9 Dec 2014 14:50:06 +0100 Subject: [PATCH] Implemented the OSX clipboard using the AppKit API The X11 dependency is no longer needed on OSX, and has been removed --- CMakeLists.txt | 6 +----- lib/clipboard/CMakeLists.txt | 3 +++ lib/clipboard/src/clipboardOSX.m | 24 ++++++++++++++++++++++++ src/CMakeLists.txt | 2 +- 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 lib/clipboard/src/clipboardOSX.m diff --git a/CMakeLists.txt b/CMakeLists.txt index 89a63715..e11acf88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -256,12 +256,8 @@ include("${colobot_SOURCE_DIR}/cmake/msys.cmake") ## # Clipboard support needs X11 libraries ## -if(PLATFORM_GNU OR PLATFORM_MACOSX) +if(PLATFORM_GNU) find_package(X11 REQUIRED) - if(PLATFORM_MACOSX) - # Add the includes for X11 - include_directories("/opt/X11/include") - endif() endif() diff --git a/lib/clipboard/CMakeLists.txt b/lib/clipboard/CMakeLists.txt index 7999cc19..ff9157e8 100644 --- a/lib/clipboard/CMakeLists.txt +++ b/lib/clipboard/CMakeLists.txt @@ -7,6 +7,9 @@ add_definitions(-DLIB_COMPILE=1) if(PLATFORM_WINDOWS) set(CLIPBOARD_SRC src/clipboardWin32.c) +elseif(PLATFORM_MACOSX) + set(CMAKE_CXX_FLAGS "-fobjc-arc") + set(CLIPBOARD_SRC src/clipboardOSX.m) else() set(CLIPBOARD_SRC src/clipboardX11.c) endif() diff --git a/lib/clipboard/src/clipboardOSX.m b/lib/clipboard/src/clipboardOSX.m new file mode 100644 index 00000000..893dba89 --- /dev/null +++ b/lib/clipboard/src/clipboardOSX.m @@ -0,0 +1,24 @@ + +#include +#include + +#include + +char *widgetGetClipboardText() +{ + NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; + NSString *myString = [pasteboard stringForType:NSPasteboardTypeString]; + + if (myString == nil || [myString length] == 0) return NULL; + + return strdup([myString UTF8String]); +} + +bool widgetSetClipboardText(const char *text) +{ + NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; + [pasteboard clearContents]; + + NSString *stringFromUTFString = [[NSString alloc] initWithUTF8String:text]; + return [pasteboard setString:stringFromUTFString forType:NSStringPboardType]; +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 613d92a4..013c4e0f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,7 +35,7 @@ elseif(PLATFORM_LINUX) set(PLATFORM_LIBS "-lrt -lX11") elseif(PLATFORM_MACOSX) find_library(LIBINTL_LIBRARY NAMES intl libintl ) - set(PLATFORM_LIBS ${LIBINTL_LIBRARY} ${X11_X11_LIB}) + set(PLATFORM_LIBS ${LIBINTL_LIBRARY}) endif()