1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

clipboard: ensure public method access after #9062. Fixes #9089 (#9107)

This commit is contained in:
Larpon 2021-03-04 09:49:40 +01:00 committed by GitHub
parent 2bfa6dfe2f
commit d08f994e19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 24 additions and 23 deletions

View File

@ -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 ''

View File

@ -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 ''

View File

@ -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

View File

@ -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 ''
} }