Split apple clipboard dispatch

This commit is contained in:
2026-06-13 19:33:17 +02:00
parent 2daec76f02
commit 2ec4896578
5 changed files with 77 additions and 10 deletions

View File

@@ -130,6 +130,31 @@ std::string AppleDocumentPlatformServices::format_working_directory_path(std::st
return std::string(path);
}
std::string AppleDocumentPlatformServices::clipboard_text() const
{
const std::string empty;
#if defined(__IOS__)
return [App::I->ios_view clipboard_get_string];
#elif defined(__OSX__)
return [App::I->osx_view clipboard_get_string];
#else
return empty;
#endif
}
bool AppleDocumentPlatformServices::set_clipboard_text(std::string_view text) const
{
const std::string value(text);
#if defined(__IOS__)
return [App::I->ios_view clipboard_set_string:value];
#elif defined(__OSX__)
return [App::I->osx_view clipboard_set_string:value];
#else
(void)value;
return false;
#endif
}
void AppleDocumentPlatformServices::display_file(std::string_view path) const
{
const std::string value(path);

View File

@@ -35,6 +35,8 @@ public:
[[nodiscard]] bool supports_working_directory_picker() const;
[[nodiscard]] std::string format_working_directory_path(std::string_view path) const;
[[nodiscard]] std::string clipboard_text() const;
[[nodiscard]] bool set_clipboard_text(std::string_view text) const;
void display_file(std::string_view path) const;
void share_file(std::string_view path) const;
void set_cursor_visible(bool visible) const;

View File

@@ -249,11 +249,10 @@ public:
[[nodiscard]] std::string clipboard_text() override
{
#if __IOS__
return [App::I->ios_view clipboard_get_string];
#elif __OSX__
return [App::I->osx_view clipboard_get_string];
#elif __ANDROID__
const auto family = pp::platform::current_platform_family();
if (family == pp::platform::PlatformFamily::ios || family == pp::platform::PlatformFamily::macos)
return active_apple_document_platform_services().clipboard_text();
#ifdef __ANDROID__
return android_get_clipboard();
#else
return {};
@@ -262,14 +261,14 @@ public:
[[nodiscard]] bool set_clipboard_text(std::string_view text) override
{
const auto family = pp::platform::current_platform_family();
if (family == pp::platform::PlatformFamily::ios || family == pp::platform::PlatformFamily::macos)
return active_apple_document_platform_services().set_clipboard_text(text);
const std::string value(text);
#if __IOS__
return [App::I->ios_view clipboard_set_string:value];
#elif __OSX__
return [App::I->osx_view clipboard_set_string:value];
#elif __ANDROID__
#ifdef __ANDROID__
return android_set_clipboard(value);
#else
(void)value;
return false;
#endif
}