mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-20 13:24:40 -04:00
add clipboard setter/getter functions
This commit is contained in:
@@ -29,6 +29,8 @@
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "SDL3/SDL_clipboard.h"
|
||||
|
||||
namespace dusk::mods::svc::ui_impl {
|
||||
namespace {
|
||||
|
||||
@@ -1037,6 +1039,31 @@ void ui_remove_mod(LoadedMod& mod) {
|
||||
}
|
||||
}
|
||||
|
||||
ModResult ui_get_clipboard_text(LoadedMod& mod, char* out_text, size_t max_length) {
|
||||
if (SDL_HasClipboardText()) {
|
||||
std::string text = SDL_GetClipboardText();
|
||||
if (text.empty()) {
|
||||
return MOD_ERROR;
|
||||
}
|
||||
|
||||
if (text.size() > max_length - 1) {
|
||||
text.resize(max_length - 1);
|
||||
}
|
||||
|
||||
memcpy(out_text, text.c_str(), text.size());
|
||||
out_text[text.size()] = '\0';
|
||||
}
|
||||
|
||||
return MOD_OK;
|
||||
}
|
||||
|
||||
ModResult ui_set_clipboard_text(LoadedMod& mod, const char* text) {
|
||||
if (!SDL_SetClipboardText(text)) {
|
||||
return MOD_ERROR;
|
||||
}
|
||||
return MOD_OK;
|
||||
}
|
||||
|
||||
} // namespace dusk::mods::svc::ui_impl
|
||||
|
||||
namespace dusk::mods::svc {
|
||||
@@ -1368,6 +1395,23 @@ ModResult ui_dialog_add_action(
|
||||
return ui_impl::ui_dialog_add_action(*mod, dialog, *action);
|
||||
}
|
||||
|
||||
ModResult ui_get_clipboard_text(ModContext* ctx, char* out_text, size_t max_length) {
|
||||
auto* mod = mod_from_context(ctx);
|
||||
if (mod == nullptr || out_text == nullptr || max_length == 0) {
|
||||
return MOD_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return ui_impl::ui_get_clipboard_text(*mod, out_text, max_length);
|
||||
}
|
||||
|
||||
ModResult ui_set_clipboard_text(ModContext* ctx, const char* text) {
|
||||
auto* mod = mod_from_context(ctx);
|
||||
if (mod == nullptr || text == nullptr) {
|
||||
return MOD_INVALID_ARGUMENT;
|
||||
}
|
||||
return ui_impl::ui_set_clipboard_text(*mod, text);
|
||||
}
|
||||
|
||||
constexpr UiService s_uiService{
|
||||
.header = SERVICE_HEADER(UiService, UI_SERVICE_MAJOR, UI_SERVICE_MINOR),
|
||||
.register_mods_panel = ui_register_mods_panel,
|
||||
@@ -1394,6 +1438,8 @@ constexpr UiService s_uiService{
|
||||
.register_menu_tab = ui_register_menu_tab,
|
||||
.unregister_menu_tab = ui_unregister_menu_tab,
|
||||
.push_toast = ui_push_toast,
|
||||
.get_clipboard_text = ui_get_clipboard_text,
|
||||
.set_clipboard_text = ui_set_clipboard_text,
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user