clipboard: add a `clipboard.x11` submodule, use it by default; add a `clipboard.dummy` for solaris
parent
17cccc7b36
commit
270ba07e83
|
@ -0,0 +1,13 @@
|
||||||
|
module clipboard
|
||||||
|
|
||||||
|
import clipboard.x11
|
||||||
|
|
||||||
|
pub type Clipboard = x11.Clipboard
|
||||||
|
|
||||||
|
fn new_clipboard() &Clipboard {
|
||||||
|
return x11.new_clipboard()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_primary() &Clipboard {
|
||||||
|
return x11.new_primary()
|
||||||
|
}
|
|
@ -1,47 +1,13 @@
|
||||||
module clipboard
|
module clipboard
|
||||||
|
|
||||||
pub struct Clipboard {
|
import clipboard.dummy
|
||||||
mut:
|
|
||||||
text string // text data sent or received
|
pub type Clipboard = dummy.Clipboard
|
||||||
got_text bool // used to confirm that we have got the text
|
|
||||||
is_owner bool // to save selection owner state
|
|
||||||
}
|
|
||||||
|
|
||||||
fn new_clipboard() &Clipboard {
|
fn new_clipboard() &Clipboard {
|
||||||
eprintln('TODO: support clipboard on solaris')
|
return dummy.new_clipboard()
|
||||||
return &Clipboard{}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_primary() &Clipboard {
|
pub fn new_primary() &Clipboard {
|
||||||
eprintln('TODO: support clipboard on solaris')
|
return dummy.new_primary()
|
||||||
return &Clipboard{}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (mut cb Clipboard) set_text(text string) bool {
|
|
||||||
cb.text = text
|
|
||||||
cb.is_owner = true
|
|
||||||
cb.got_text = true
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (mut cb Clipboard) get_text() string {
|
|
||||||
return cb.text
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (mut cb Clipboard) clear() {
|
|
||||||
cb.text = ''
|
|
||||||
cb.is_owner = false
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (mut cb Clipboard) free() {
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (cb &Clipboard) has_ownership() bool {
|
|
||||||
return cb.is_owner
|
|
||||||
}
|
|
||||||
|
|
||||||
fn (cb &Clipboard) check_availability() bool {
|
|
||||||
// This is a dummy clipboard implementation,
|
|
||||||
// which can be always used, although it does not do much...
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
module dummy
|
||||||
|
|
||||||
|
pub struct Clipboard {
|
||||||
|
mut:
|
||||||
|
text string // text data sent or received
|
||||||
|
got_text bool // used to confirm that we have got the text
|
||||||
|
is_owner bool // to save selection owner state
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_clipboard() &Clipboard {
|
||||||
|
return &Clipboard{}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new_primary() &Clipboard {
|
||||||
|
return &Clipboard{}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
|
cb.text = text
|
||||||
|
cb.is_owner = true
|
||||||
|
cb.got_text = true
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (mut cb Clipboard) get_text() string {
|
||||||
|
return cb.text
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (mut cb Clipboard) clear() {
|
||||||
|
cb.text = ''
|
||||||
|
cb.is_owner = false
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (mut cb Clipboard) free() {
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (cb &Clipboard) has_ownership() bool {
|
||||||
|
return cb.is_owner
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (cb &Clipboard) check_availability() bool {
|
||||||
|
// This is a dummy clipboard implementation,
|
||||||
|
// which can be always used, although it does not do much...
|
||||||
|
return true
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
// Currently there is only X11 Selections support and no way to handle Wayland
|
// Currently there is only X11 Selections support and no way to handle Wayland
|
||||||
// but since Wayland isn't extremely adopted, we are covering almost all Linux distros.
|
// but since Wayland isn't extremely adopted, we are covering almost all Linux distros.
|
||||||
module clipboard
|
module x11
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import sync
|
import sync
|
||||||
|
@ -132,7 +132,7 @@ struct Property{
|
||||||
data byteptr
|
data byteptr
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_clipboard() &Clipboard {
|
pub fn new_clipboard() &Clipboard {
|
||||||
return new_x11_clipboard(.clipboard)
|
return new_x11_clipboard(.clipboard)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ fn (cb &Clipboard) take_ownership(){
|
||||||
C.XFlush(cb.display)
|
C.XFlush(cb.display)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) set_text(text string) bool {
|
pub fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
if cb.window == C.Window(C.None) {return false}
|
if cb.window == C.Window(C.None) {return false}
|
||||||
cb.mutex.m_lock()
|
cb.mutex.m_lock()
|
||||||
cb.text = text
|
cb.text = text
|
||||||
|
@ -255,7 +255,7 @@ fn (mut cb Clipboard) start_listener(){
|
||||||
C.XNextEvent(cb.display, &event)
|
C.XNextEvent(cb.display, &event)
|
||||||
if event.@type == 0 {
|
if event.@type == 0 {
|
||||||
println("error")
|
println("error")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
match event.@type {
|
match event.@type {
|
||||||
C.DestroyNotify {
|
C.DestroyNotify {
|
|
@ -21,21 +21,11 @@ fn solaris_utc() Time {
|
||||||
return unix2(int(ts.tv_sec), int(ts.tv_nsec / 1000))
|
return unix2(int(ts.tv_sec), int(ts.tv_nsec / 1000))
|
||||||
}
|
}
|
||||||
|
|
||||||
// dummy to compile with all compilers
|
|
||||||
pub fn linux_now() Time {
|
|
||||||
return Time{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// dummy to compile with all compilers
|
// dummy to compile with all compilers
|
||||||
pub fn darwin_now() Time {
|
pub fn darwin_now() Time {
|
||||||
return Time{}
|
return Time{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// dummy to compile with all compilers
|
|
||||||
pub fn linux_utc() Time {
|
|
||||||
return Time{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// dummy to compile with all compilers
|
// dummy to compile with all compilers
|
||||||
pub fn darwin_utc() Time {
|
pub fn darwin_utc() Time {
|
||||||
return Time{}
|
return Time{}
|
||||||
|
|
Loading…
Reference in New Issue