Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/frontend/StarClipboardLuaBindings.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-12-10 18:49:29 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-12-10 18:49:29 +1100
commitd95eac316405fb100963d47dcd95ccced3462383 (patch)
tree8229a98c4b96cbd4268c5ceb02f3a3b5754a6daa /source/frontend/StarClipboardLuaBindings.cpp
parentdd52188e53e690f8eb872421f8a4c3bcc5699133 (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.cpp28
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;