Add clipboard support for Mac
This commit is contained in:
@@ -6,6 +6,8 @@
|
||||
#include "Windows/WindowsClipboard.h"
|
||||
#elif PLATFORM_LINUX
|
||||
#include "Linux/LinuxClipboard.h"
|
||||
#elif PLATFORM_MAC
|
||||
#include "Mac/MacClipboard.h"
|
||||
#else
|
||||
#include "Base/ClipboardBase.h"
|
||||
#endif
|
||||
|
||||
26
Source/Engine/Platform/Mac/MacClipboard.h
Normal file
26
Source/Engine/Platform/Mac/MacClipboard.h
Normal file
@@ -0,0 +1,26 @@
|
||||
// Copyright (c) 2012-2022 Wojciech Figat. All rights reserved.
|
||||
|
||||
#pragma once
|
||||
|
||||
#if PLATFORM_MAC
|
||||
|
||||
#include "Engine/Platform/Base/ClipboardBase.h"
|
||||
|
||||
/// <summary>
|
||||
/// Mac platform implementation of the clipboard service.
|
||||
/// </summary>
|
||||
class FLAXENGINE_API MacClipboard : public ClipboardBase
|
||||
{
|
||||
public:
|
||||
|
||||
// [ClipboardBase]
|
||||
static void Clear();
|
||||
static void SetText(const StringView& text);
|
||||
static void SetRawData(const Span<byte>& data);
|
||||
static void SetFiles(const Array<String>& files);
|
||||
static String GetText();
|
||||
static Array<byte> GetRawData();
|
||||
static Array<String> GetFiles();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -106,6 +106,48 @@ Vector2 MacUtils::GetScreensOrigin()
|
||||
return result;
|
||||
}
|
||||
|
||||
void MacClipboard::Clear()
|
||||
{
|
||||
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
|
||||
[pasteboard clearContents];
|
||||
}
|
||||
|
||||
void MacClipboard::SetText(const StringView& text)
|
||||
{
|
||||
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
|
||||
[pasteboard clearContents];
|
||||
[pasteboard writeObjects:[NSArray arrayWithObject:(NSString*)MacUtils::ToString(text)]];
|
||||
}
|
||||
|
||||
void MacClipboard::SetRawData(const Span<byte>& data)
|
||||
{
|
||||
}
|
||||
|
||||
void MacClipboard::SetFiles(const Array<String>& files)
|
||||
{
|
||||
}
|
||||
|
||||
String MacClipboard::GetText()
|
||||
{
|
||||
NSPasteboard* pasteboard = [NSPasteboard generalPasteboard];
|
||||
NSArray* classes = [NSArray arrayWithObject:[NSString class]];
|
||||
NSDictionary* options = [NSDictionary dictionary];
|
||||
if (![pasteboard canReadObjectForClasses:classes options:options])
|
||||
return String::Empty;
|
||||
NSArray* objects = [pasteboard readObjectsForClasses:classes options:options];
|
||||
return MacUtils::ToString((CFStringRef)[objects objectAtIndex:0]);
|
||||
}
|
||||
|
||||
Array<byte> MacClipboard::GetRawData()
|
||||
{
|
||||
return Array<byte>();
|
||||
}
|
||||
|
||||
Array<String> MacClipboard::GetFiles()
|
||||
{
|
||||
return Array<String>();
|
||||
}
|
||||
|
||||
DialogResult MessageBox::Show(Window* parent, const StringView& text, const StringView& caption, MessageBoxButtons buttons, MessageBoxIcon icon)
|
||||
{
|
||||
if (CommandLine::Options.Headless)
|
||||
|
||||
@@ -229,8 +229,8 @@ typedef UserBase User;
|
||||
|
||||
#elif PLATFORM_MAC
|
||||
|
||||
class ClipboardBase;
|
||||
typedef ClipboardBase Clipboard;
|
||||
class MacClipboard;
|
||||
typedef MacClipboard Clipboard;
|
||||
class UnixCriticalSection;
|
||||
typedef UnixCriticalSection CriticalSection;
|
||||
class UnixConditionVariable;
|
||||
|
||||
Reference in New Issue
Block a user