Merge pull request #42 from myfreeweb/gtk-clipboard
GTK clipboard part 2
This commit is contained in:
commit
1015640824
@ -5,11 +5,13 @@ endif
|
|||||||
let g:GuiLoaded = 1
|
let g:GuiLoaded = 1
|
||||||
|
|
||||||
if exists('g:GuiInternalClipboard')
|
if exists('g:GuiInternalClipboard')
|
||||||
|
let s:LastRegType = 'v'
|
||||||
function! provider#clipboard#Call(method, args) abort
|
function! provider#clipboard#Call(method, args) abort
|
||||||
if a:method == 'get'
|
if a:method == 'get'
|
||||||
return [rpcrequest(1, 'Gui', 'Clipboard', 'Get'), 'v']
|
return [rpcrequest(1, 'Gui', 'Clipboard', 'Get', a:args[0]), s:LastRegType]
|
||||||
elseif a:method == 'set'
|
elseif a:method == 'set'
|
||||||
call rpcnotify(1, 'Gui', 'Clipboard', 'Set', join(a:args[0], '
'))
|
let s:LastRegType = a:args[1]
|
||||||
|
call rpcnotify(1, 'Gui', 'Clipboard', 'Set', a:args[2], join(a:args[0], '
'))
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
endif
|
endif
|
||||||
|
@ -117,7 +117,10 @@ pub fn call_gui_event(
|
|||||||
"Clipboard" => {
|
"Clipboard" => {
|
||||||
match try_str!(args[0]) {
|
match try_str!(args[0]) {
|
||||||
"Set" => {
|
"Set" => {
|
||||||
ui.clipboard_set(try_str!(args[1]));
|
match try_str!(args[1]) {
|
||||||
|
"*" => ui.clipboard_primary_set(try_str!(args[2])),
|
||||||
|
_ => ui.clipboard_clipboard_set(try_str!(args[2])),
|
||||||
|
}
|
||||||
},
|
},
|
||||||
opt => error!("Unknown option {}", opt),
|
opt => error!("Unknown option {}", opt),
|
||||||
}
|
}
|
||||||
@ -162,7 +165,10 @@ pub fn call_gui_request(
|
|||||||
// mutably twice!
|
// mutably twice!
|
||||||
let clipboard = {
|
let clipboard = {
|
||||||
let ui = &mut ui.borrow_mut();
|
let ui = &mut ui.borrow_mut();
|
||||||
ui.clipboard.clone()
|
match try_str!(args[1]) {
|
||||||
|
"*" => ui.clipboard_primary.clone(),
|
||||||
|
_ => ui.clipboard_clipboard.clone(),
|
||||||
|
}
|
||||||
};
|
};
|
||||||
let t = clipboard.wait_for_text().unwrap_or_else(|| String::new());
|
let t = clipboard.wait_for_text().unwrap_or_else(|| String::new());
|
||||||
Ok(Value::Array(t.split("\n").map(|s| s.into()).collect::<Vec<Value>>()))
|
Ok(Value::Array(t.split("\n").map(|s| s.into()).collect::<Vec<Value>>()))
|
||||||
|
14
src/shell.rs
14
src/shell.rs
@ -59,7 +59,8 @@ pub struct State {
|
|||||||
cursor: Option<Cursor>,
|
cursor: Option<Cursor>,
|
||||||
popup_menu: RefCell<PopupMenu>,
|
popup_menu: RefCell<PopupMenu>,
|
||||||
settings: Rc<RefCell<Settings>>,
|
settings: Rc<RefCell<Settings>>,
|
||||||
pub clipboard: gtk::Clipboard,
|
pub clipboard_clipboard: gtk::Clipboard,
|
||||||
|
pub clipboard_primary: gtk::Clipboard,
|
||||||
|
|
||||||
pub mode: mode::Mode,
|
pub mode: mode::Mode,
|
||||||
|
|
||||||
@ -91,7 +92,8 @@ impl State {
|
|||||||
cursor: None,
|
cursor: None,
|
||||||
popup_menu,
|
popup_menu,
|
||||||
settings,
|
settings,
|
||||||
clipboard: gtk::Clipboard::get(&gdk::Atom::intern("CLIPBOARD")),
|
clipboard_clipboard: gtk::Clipboard::get(&gdk::Atom::intern("CLIPBOARD")),
|
||||||
|
clipboard_primary: gtk::Clipboard::get(&gdk::Atom::intern("PRIMARY")),
|
||||||
|
|
||||||
mode: mode::Mode::new(),
|
mode: mode::Mode::new(),
|
||||||
|
|
||||||
@ -179,8 +181,12 @@ impl State {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn clipboard_set(&self, text: &str) {
|
pub fn clipboard_clipboard_set(&self, text: &str) {
|
||||||
self.clipboard.set_text(text);
|
self.clipboard_clipboard.set_text(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn clipboard_primary_set(&self, text: &str) {
|
||||||
|
self.clipboard_primary.set_text(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn close_popup_menu(&self) {
|
fn close_popup_menu(&self) {
|
||||||
|
Loading…
Reference in New Issue
Block a user