mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 04:59:38 +08:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
//go:build linux
|
|
// +build linux
|
|
|
|
package linux
|
|
|
|
/*
|
|
#cgo linux pkg-config: gtk+-3.0
|
|
#cgo !webkit2_41 pkg-config: webkit2gtk-4.0
|
|
#cgo webkit2_41 pkg-config: webkit2gtk-4.1
|
|
|
|
#include "gtk/gtk.h"
|
|
#include "webkit2/webkit2.h"
|
|
|
|
static gchar* GetClipboardText() {
|
|
GtkClipboard *clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
|
|
return gtk_clipboard_wait_for_text(clip);
|
|
}
|
|
|
|
static void SetClipboardText(gchar* text) {
|
|
GtkClipboard *clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
|
|
gtk_clipboard_set_text(clip, text, -1);
|
|
|
|
clip = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
|
|
gtk_clipboard_set_text(clip, text, -1);
|
|
}
|
|
*/
|
|
import "C"
|
|
import "sync"
|
|
|
|
func (f *Frontend) ClipboardGetText() (string, error) {
|
|
var text string
|
|
var wg sync.WaitGroup
|
|
wg.Add(1)
|
|
invokeOnMainThread(func() {
|
|
ctxt := C.GetClipboardText()
|
|
defer C.g_free(C.gpointer(ctxt))
|
|
text = C.GoString(ctxt)
|
|
wg.Done()
|
|
})
|
|
wg.Wait()
|
|
return text, nil
|
|
}
|
|
|
|
func (f *Frontend) ClipboardSetText(text string) error {
|
|
invokeOnMainThread(func() {
|
|
ctxt := (*C.gchar)(C.CString(text))
|
|
defer C.g_free(C.gpointer(ctxt))
|
|
C.SetClipboardText(ctxt)
|
|
})
|
|
return nil
|
|
}
|