From 7bb12511d9efc65253a7927fdeae1bd69266c632 Mon Sep 17 00:00:00 2001 From: MBlanc Date: Tue, 9 Dec 2014 14:50:06 +0100 Subject: [PATCH 1/3] 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() From 7356f67b78fde6063d5ba40d31c9c86f123d976d Mon Sep 17 00:00:00 2001 From: MBlanc Date: Wed, 10 Dec 2014 09:56:10 +0100 Subject: [PATCH 2/3] Shortcuts now use the meta key on OSX --- src/ui/edit.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ui/edit.cpp b/src/ui/edit.cpp index 1e55705b..736a11f0 100644 --- a/src/ui/edit.cpp +++ b/src/ui/edit.cpp @@ -28,6 +28,7 @@ #include "object/level/parserparam.h" +#include "common/config.h" #include "common/resources/inputstream.h" #include "common/resources/outputstream.h" @@ -303,7 +304,11 @@ bool CEdit::EventProcess(const Event &event) if ( event.type == EVENT_KEY_DOWN && m_bFocus ) { bShift = ( (event.kmodState & KEY_MOD(SHIFT) ) != 0 ); + #if PLATFORM_MACOSX + bControl = ( (event.kmodState & KEY_MOD(META) ) != 0); + #else bControl = ( (event.kmodState & KEY_MOD(CTRL) ) != 0); + #endif if ( (event.key.key == KEY(x) && !bShift && bControl) || (event.key.key == KEY(DELETE) && bShift && !bControl) ) From 56393f427832c1aeb5c0499b5a80a1e86cfec6b2 Mon Sep 17 00:00:00 2001 From: MBlanc Date: Fri, 12 Dec 2014 00:50:42 +0100 Subject: [PATCH 3/3] Modified CMake to search the path for libintl headers Conflicts: src/CMakeLists.txt --- src/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 013c4e0f..5a9e49f5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -34,7 +34,8 @@ elseif(PLATFORM_LINUX) # for clock_gettime set(PLATFORM_LIBS "-lrt -lX11") elseif(PLATFORM_MACOSX) - find_library(LIBINTL_LIBRARY NAMES intl libintl ) + find_library(LIBINTL_LIBRARY NAMES intl libintl) + find_path(LIBINTL_INCLUDE_PATH NAMES libintl.h) set(PLATFORM_LIBS ${LIBINTL_LIBRARY}) endif() @@ -241,6 +242,7 @@ set(SYSTEM_INCLUDES ${OPTIONAL_INCLUDE_DIRS} ${CLIPBOARD_INCLUDE_DIR} ${PHYSFS_INCLUDE_PATH} + ${LIBINTL_INCLUDE_PATH} ) set(COLOBOT_LOCAL_INCLUDES ${LOCAL_INCLUDES} PARENT_SCOPE)