parent
2bfa6dfe2f
commit
d08f994e19
|
@ -4,6 +4,7 @@ module clipboard
|
||||||
#include <Cocoa/Cocoa.h>
|
#include <Cocoa/Cocoa.h>
|
||||||
#flag -framework Cocoa
|
#flag -framework Cocoa
|
||||||
#include "@VROOT/vlib/clipboard/clipboard_darwin.m"
|
#include "@VROOT/vlib/clipboard/clipboard_darwin.m"
|
||||||
|
|
||||||
pub struct Clipboard {
|
pub struct Clipboard {
|
||||||
pb voidptr
|
pb voidptr
|
||||||
last_cb_serial i64
|
last_cb_serial i64
|
||||||
|
@ -24,22 +25,22 @@ fn new_clipboard() &Clipboard {
|
||||||
return cb
|
return cb
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) check_availability() bool {
|
pub fn (cb &Clipboard) check_availability() bool {
|
||||||
return cb.pb != C.NULL
|
return cb.pb != C.NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) clear() {
|
pub fn (mut cb Clipboard) clear() {
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
cb.set_text('')
|
cb.set_text('')
|
||||||
//#[cb->pb clearContents];
|
//#[cb->pb clearContents];
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) free() {
|
pub fn (mut cb Clipboard) free() {
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
// nothing to free
|
// nothing to free
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) has_ownership() bool {
|
pub fn (cb &Clipboard) has_ownership() bool {
|
||||||
if cb.last_cb_serial == 0 {
|
if cb.last_cb_serial == 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -49,11 +50,11 @@ fn (cb &Clipboard) has_ownership() bool {
|
||||||
|
|
||||||
fn C.OSAtomicCompareAndSwapLong()
|
fn C.OSAtomicCompareAndSwapLong()
|
||||||
|
|
||||||
fn (mut cb Clipboard) set_text(text string) bool {
|
pub fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
return C.darwin_set_pasteboard_text(cb.pb, text)
|
return C.darwin_set_pasteboard_text(cb.pb, text)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) get_text() string {
|
pub fn (mut cb Clipboard) get_text() string {
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
if isnil(cb.pb) {
|
if isnil(cb.pb) {
|
||||||
return ''
|
return ''
|
||||||
|
|
|
@ -104,15 +104,15 @@ fn new_clipboard() &Clipboard {
|
||||||
return cb
|
return cb
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) check_availability() bool {
|
pub fn (cb &Clipboard) check_availability() bool {
|
||||||
return cb.hwnd != C.HWND(C.NULL)
|
return cb.hwnd != C.HWND(C.NULL)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) has_ownership() bool {
|
pub fn (cb &Clipboard) has_ownership() bool {
|
||||||
return C.GetClipboardOwner() == cb.hwnd
|
return C.GetClipboardOwner() == cb.hwnd
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) clear() {
|
pub fn (mut cb Clipboard) clear() {
|
||||||
if !cb.get_clipboard_lock() {
|
if !cb.get_clipboard_lock() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ fn (mut cb Clipboard) clear() {
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) free() {
|
pub fn (mut cb Clipboard) free() {
|
||||||
C.DestroyWindow(cb.hwnd)
|
C.DestroyWindow(cb.hwnd)
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,7 @@ fn to_wide(text string) C.HGLOBAL {
|
||||||
return buf
|
return buf
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) set_text(text string) bool {
|
pub fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
buf := to_wide(text)
|
buf := to_wide(text)
|
||||||
if !cb.get_clipboard_lock() {
|
if !cb.get_clipboard_lock() {
|
||||||
|
@ -164,7 +164,7 @@ fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) get_text() string {
|
pub fn (mut cb Clipboard) get_text() string {
|
||||||
cb.foo = 0
|
cb.foo = 0
|
||||||
if !cb.get_clipboard_lock() {
|
if !cb.get_clipboard_lock() {
|
||||||
return ''
|
return ''
|
||||||
|
|
|
@ -19,30 +19,30 @@ pub fn new_primary() &Clipboard {
|
||||||
return &Clipboard{}
|
return &Clipboard{}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) set_text(text string) bool {
|
pub fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
cb.text = text
|
cb.text = text
|
||||||
cb.is_owner = true
|
cb.is_owner = true
|
||||||
cb.got_text = true
|
cb.got_text = true
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) get_text() string {
|
pub fn (mut cb Clipboard) get_text() string {
|
||||||
return cb.text
|
return cb.text
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) clear() {
|
pub fn (mut cb Clipboard) clear() {
|
||||||
cb.text = ''
|
cb.text = ''
|
||||||
cb.is_owner = false
|
cb.is_owner = false
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) free() {
|
pub fn (mut cb Clipboard) free() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) has_ownership() bool {
|
pub fn (cb &Clipboard) has_ownership() bool {
|
||||||
return cb.is_owner
|
return cb.is_owner
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) check_availability() bool {
|
pub fn (cb &Clipboard) check_availability() bool {
|
||||||
// This is a dummy clipboard implementation,
|
// This is a dummy clipboard implementation,
|
||||||
// which can be always used, although it does not do much...
|
// which can be always used, although it does not do much...
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -198,18 +198,18 @@ fn new_x11_clipboard(selection AtomType) &Clipboard {
|
||||||
return cb
|
return cb
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) check_availability() bool {
|
pub fn (cb &Clipboard) check_availability() bool {
|
||||||
return cb.display != C.NULL
|
return cb.display != C.NULL
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) free() {
|
pub fn (mut cb Clipboard) free() {
|
||||||
C.XDestroyWindow(cb.display, cb.window)
|
C.XDestroyWindow(cb.display, cb.window)
|
||||||
cb.window = C.Window(C.None)
|
cb.window = C.Window(C.None)
|
||||||
// FIX ME: program hangs when closing display
|
// FIX ME: program hangs when closing display
|
||||||
// XCloseDisplay(cb.display)
|
// XCloseDisplay(cb.display)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) clear() {
|
pub fn (mut cb Clipboard) clear() {
|
||||||
cb.mutex.@lock()
|
cb.mutex.@lock()
|
||||||
C.XSetSelectionOwner(cb.display, cb.selection, C.Window(C.None), C.CurrentTime)
|
C.XSetSelectionOwner(cb.display, cb.selection, C.Window(C.None), C.CurrentTime)
|
||||||
C.XFlush(cb.display)
|
C.XFlush(cb.display)
|
||||||
|
@ -218,7 +218,7 @@ fn (mut cb Clipboard) clear() {
|
||||||
cb.mutex.unlock()
|
cb.mutex.unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (cb &Clipboard) has_ownership() bool {
|
pub fn (cb &Clipboard) has_ownership() bool {
|
||||||
return cb.is_owner
|
return cb.is_owner
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ pub fn (mut cb Clipboard) set_text(text string) bool {
|
||||||
return cb.is_owner
|
return cb.is_owner
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (mut cb Clipboard) get_text() string {
|
pub fn (mut cb Clipboard) get_text() string {
|
||||||
if cb.window == C.Window(C.None) {
|
if cb.window == C.Window(C.None) {
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue