43 lines
1012 B
Go
43 lines
1012 B
Go
//go:build wasm
|
|
|
|
package glfw
|
|
|
|
import "syscall/js"
|
|
|
|
var clipboard = js.Global().Get("navigator").Get("clipboard")
|
|
|
|
// GetClipboardString returns the contents of the system clipboard, if it contains or is convertible to a UTF-8 encoded string.
|
|
//
|
|
// This function may only be called from the main thread.
|
|
func GetClipboardString() string {
|
|
text := make(chan string)
|
|
|
|
read := js.FuncOf(func(this js.Value, p []js.Value) any {
|
|
content := p[0]
|
|
if !content.Truthy() {
|
|
text <- ""
|
|
return nil
|
|
}
|
|
|
|
text <- content.String()
|
|
return nil
|
|
})
|
|
defer read.Release()
|
|
|
|
handleError := js.FuncOf(func(this js.Value, args []js.Value) any {
|
|
text <- ""
|
|
return nil
|
|
})
|
|
defer handleError.Release()
|
|
|
|
clipboard.Call("readText").Call("then", read).Call("catch", handleError)
|
|
return <-text
|
|
}
|
|
|
|
// SetClipboardString sets the system clipboard to the specified UTF-8 encoded string.
|
|
//
|
|
// This function may only be called from the main thread.
|
|
func SetClipboardString(str string) {
|
|
clipboard.Call("writeText", str)
|
|
}
|