mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 07:35:40 +00:00
app,io/system: implement clipboard reading and writing
The app.ReadClipboard and app.WriteClipboard can be used to interact with the system clipboard. The clipboard may be asynchronous, so system.ClipboardEvent is introduced to deliver the result of a read. Updates gio#31 Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -54,6 +54,11 @@ type Driver interface {
|
||||
// ShowTextInput updates the virtual keyboard state.
|
||||
ShowTextInput(show bool)
|
||||
NewContext() (Context, error)
|
||||
|
||||
// ReadClipboard requests the clipboard content.
|
||||
ReadClipboard()
|
||||
// WriteClipboard requests a clipboard write.
|
||||
WriteClipboard(s string)
|
||||
}
|
||||
|
||||
type windowRendezvous struct {
|
||||
|
||||
@@ -191,6 +191,22 @@ func (w *Window) Invalidate() {
|
||||
}
|
||||
}
|
||||
|
||||
// ReadClipboard initiates a read of the clipboard in the form
|
||||
// of a system.ClipboardEvent. Multiple reads may be coalescedd
|
||||
// to a single event.
|
||||
func (w *Window) ReadClipboard() {
|
||||
w.driverDo(func() {
|
||||
w.driver.ReadClipboard()
|
||||
})
|
||||
}
|
||||
|
||||
// WriteClipboard writes a string to the clipboard.
|
||||
func (w *Window) WriteClipboard(s string) {
|
||||
w.driverDo(func() {
|
||||
w.driver.WriteClipboard(s)
|
||||
})
|
||||
}
|
||||
|
||||
// driverDo calls f as soon as the window has a valid driver attached,
|
||||
// or does nothing if the window is destroyed while waiting.
|
||||
func (w *Window) driverDo(f func()) {
|
||||
|
||||
Reference in New Issue
Block a user