clipboard: make compile on Linux

pull/2873/head
Alexander Medvednikov 2019-11-24 13:22:57 +03:00
parent 81c17e55a6
commit 7cc21be7de
3 changed files with 12 additions and 6 deletions

View File

@ -15,7 +15,6 @@ import (
struct C.Display struct C.Display
struct C.Atom struct C.Atom
struct C.Window struct C.Window
fn C.XFree()
fn C.XInitThreads() int fn C.XInitThreads() int
fn C.XCloseDisplay(d &Display) fn C.XCloseDisplay(d &Display)
fn C.XFlush(d &Display) fn C.XFlush(d &Display)
@ -32,7 +31,10 @@ fn C.XConvertSelection(d &Display, selection Atom, target Atom, property Atom, r
fn C.XSync(d &Display, discard int) int fn C.XSync(d &Display, discard int) int
fn C.XGetWindowProperty(d &Display, w Window, property Atom, offset i64, length i64, delete int, req_type Atom, actual_type_return &Atom, actual_format_return &int, nitems &i64, bytes_after_return &i64, prop_return &byteptr) int fn C.XGetWindowProperty(d &Display, w Window, property Atom, offset i64, length i64, delete int, req_type Atom, actual_type_return &Atom, actual_format_return &int, nitems &i64, bytes_after_return &i64, prop_return &byteptr) int
fn C.XDeleteProperty(d &Display, w Window, property Atom) int fn C.XDeleteProperty(d &Display, w Window, property Atom) int
fn C.DefaultScren() int fn C.DefaultScreen() int
fn C.RootWindow() voidptr
fn C.BlackPixel() voidptr
fn C.WhitePixel() voidptr
struct C.XSelectionRequestEvent{ struct C.XSelectionRequestEvent{
mut: mut:
@ -412,7 +414,8 @@ fn new_atom(value int) &Atom {
fn create_xwindow(display &Display) Window { fn create_xwindow(display &Display) Window {
N := C.DefaultScreen(display) N := C.DefaultScreen(display)
return XCreateSimpleWindow(display, C.RootWindow(display, N), 0, 0, 1, 1, 0, C.BlackPixel(display, N), C.WhitePixel(display, N)) return XCreateSimpleWindow(display, C.RootWindow(display, N), 0, 0, 1, 1,
0, C.BlackPixel(display, N), C.WhitePixel(display, N))
} }
fn new_display() &Display { fn new_display() &Display {

View File

@ -9,11 +9,14 @@ struct C.WPARAM
struct C.LPARAM struct C.LPARAM
struct C.LRESULT struct C.LRESULT
struct C.HGLOBAL struct C.HGLOBAL
struct C.HANDLE
struct C.WNDCLASSEX { struct C.WNDCLASSEX {
cbSize int cbSize int
lpfnWndProc voidptr lpfnWndProc voidptr
lpszClassName &u16 lpszClassName &u16
} }
fn C.RegisterClassEx(class WNDCLASSEX) int fn C.RegisterClassEx(class WNDCLASSEX) int
fn C.GetClipboardOwner() &HWND fn C.GetClipboardOwner() &HWND
fn C.CreateWindowEx(dwExStyle i64, lpClassName &u16, lpWindowName &u16, dwStyle i64, x int, y int, nWidth int, nHeight int, hWndParent i64, hMenu voidptr, hInstance voidptr, lpParam voidptr) &HWND fn C.CreateWindowEx(dwExStyle i64, lpClassName &u16, lpWindowName &u16, dwStyle i64, x int, y int, nWidth int, nHeight int, hWndParent i64, hMenu voidptr, hInstance voidptr, lpParam voidptr) &HWND
@ -118,7 +121,7 @@ fn (cb &Clipboard) set_text(text string) bool {
GlobalFree(buf) GlobalFree(buf)
return false return false
} else { } else {
/* EmptyClipboard must be called to properly update clipboard ownership */ // EmptyClipboard must be called to properly update clipboard ownership
EmptyClipboard() EmptyClipboard()
if SetClipboardData(C.CF_UNICODETEXT, buf) == HANDLE(C.NULL) { if SetClipboardData(C.CF_UNICODETEXT, buf) == HANDLE(C.NULL) {
println("SetClipboardData: Failed.") println("SetClipboardData: Failed.")
@ -127,7 +130,7 @@ fn (cb &Clipboard) set_text(text string) bool {
return false return false
} }
} }
/* CloseClipboard appears to change the sequence number... */ // CloseClipboard appears to change the sequence number...
CloseClipboard() CloseClipboard()
return true return true
} }

View File

@ -621,7 +621,7 @@ pub fn get_raw_line() string {
max_line_chars := 256 max_line_chars := 256
buf := &byte(malloc(max_line_chars*2)) buf := &byte(malloc(max_line_chars*2))
if is_atty(0) > 0 { if is_atty(0) > 0 {
h_input := C.GetStdHandle(STD_INPUT_HANDLE) h_input := C.GetStdHandle(C.STD_INPUT_HANDLE)
mut nr_chars := u32(0) mut nr_chars := u32(0)
C.ReadConsole(h_input, buf, max_line_chars * 2, voidptr(&nr_chars), 0) C.ReadConsole(h_input, buf, max_line_chars * 2, voidptr(&nr_chars), 0)
return string_from_wide2(&u16(buf), int(nr_chars)) return string_from_wide2(&u16(buf), int(nr_chars))