diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-12-10 18:49:29 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-12-10 18:49:29 +1100 |
commit | d95eac316405fb100963d47dcd95ccced3462383 (patch) | |
tree | 8229a98c4b96cbd4268c5ceb02f3a3b5754a6daa /source/frontend/StarClipboardLuaBindings.cpp | |
parent | dd52188e53e690f8eb872421f8a4c3bcc5699133 (diff) |
Input: binds can now make the clipboard available while held, config option to always allow
Diffstat (limited to 'source/frontend/StarClipboardLuaBindings.cpp')
-rw-r--r-- | source/frontend/StarClipboardLuaBindings.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/source/frontend/StarClipboardLuaBindings.cpp b/source/frontend/StarClipboardLuaBindings.cpp index c8a8dfe..037a7dd 100644 --- a/source/frontend/StarClipboardLuaBindings.cpp +++ b/source/frontend/StarClipboardLuaBindings.cpp @@ -1,21 +1,35 @@ #include "StarClipboardLuaBindings.hpp" #include "StarLuaConverters.hpp" +#include "StarInput.hpp" namespace Star { -LuaCallbacks LuaBindings::makeClipboardCallbacks(ApplicationControllerPtr appController) { +LuaCallbacks LuaBindings::makeClipboardCallbacks(ApplicationControllerPtr appController, bool alwaysAllow) { LuaCallbacks callbacks; - callbacks.registerCallback("hasText", [appController]() -> bool { - return appController->hasClipboard(); + auto available = [alwaysAllow]() { return alwaysAllow || Input::singleton().getTag("clipboard") > 0; }; + + callbacks.registerCallback("available", [=]() -> bool { + return available(); + }); + + callbacks.registerCallback("hasText", [=]() -> bool { + return available() && appController->hasClipboard(); }); - callbacks.registerCallback("getText", [appController]() -> Maybe<String> { - return appController->getClipboard(); + callbacks.registerCallback("getText", [=]() -> Maybe<String> { + if (!available()) + return {}; + else + return appController->getClipboard(); }); - callbacks.registerCallback("setText", [appController](String const& text) { - appController->setClipboard(text); + callbacks.registerCallback("setText", [=](String const& text) -> bool { + if (available()) { + appController->setClipboard(text); + return true; + } + return false; }); return callbacks; |