Prova notebook + fix listener
parent
90fecb55c2
commit
e9da738f93
12
src/main.rs
12
src/main.rs
|
|
@ -30,6 +30,8 @@ fn build_ui(application: >k::Application) {
|
|||
|
||||
window.set_can_focus(true);
|
||||
window.set_keep_above(true);
|
||||
let nb = gtk::Notebook::new();
|
||||
let l = gtk::Label::new(Some("Prova1"));
|
||||
//gtk::Window::set_interactive_debugging(true);
|
||||
let vte = vte::Terminal::new();
|
||||
let accel_group = gtk::AccelGroup::new();
|
||||
|
|
@ -52,15 +54,14 @@ fn build_ui(application: >k::Application) {
|
|||
)
|
||||
.unwrap();
|
||||
vte.watch_child(pid);
|
||||
let button = gtk::Button::new_with_label("Click me!");
|
||||
button.connect_clicked(|_asd| {
|
||||
println!("ciao");
|
||||
});
|
||||
nb.set_show_border(false);
|
||||
nb.append_page(&vte, Some(&l));
|
||||
|
||||
window.add(&vte);
|
||||
window.add(&nb);
|
||||
|
||||
window.set_skip_taskbar_hint(true);
|
||||
window.set_skip_pager_hint(true);
|
||||
window.set_focus(Some(&vte));
|
||||
window.show_all();
|
||||
unsafe {
|
||||
gdk_sys::gdk_window_set_skip_pager_hint(window.get_window().unwrap().to_glib_none().0, true.to_glib());
|
||||
|
|
@ -86,6 +87,7 @@ fn build_ui(application: >k::Application) {
|
|||
gtk::Inhibit(false)
|
||||
});
|
||||
let (tx, rx) = glib::MainContext::channel(glib::PRIORITY_DEFAULT);
|
||||
stato_finestra::focussa(&window, &vte, gtk::get_current_event_time());
|
||||
rx.attach(None, move |_cmd| {
|
||||
stato_finestra::esegui_toggle(&window, &vte, &stato)
|
||||
});
|
||||
|
|
|
|||
|
|
@ -10,6 +10,18 @@ use gdk::WindowExt;
|
|||
use gtk::prelude::*;
|
||||
use std::sync::{Arc, RwLock};
|
||||
|
||||
pub fn focussa(window: >k::ApplicationWindow, vte: &impl glib::IsA<gtk::Widget>, ts: u32) {
|
||||
// Shameless copy from guake
|
||||
window.present();
|
||||
window.deiconify();
|
||||
window.show();
|
||||
window.get_window().unwrap().focus(ts);
|
||||
window.set_type_hint(gdk::WindowTypeHint::Dock);
|
||||
window.set_type_hint(gdk::WindowTypeHint::Normal);
|
||||
window.get_window().unwrap().focus(0);
|
||||
window.set_focus(Some(vte));
|
||||
}
|
||||
|
||||
pub fn esegui_toggle(
|
||||
window: >k::ApplicationWindow,
|
||||
vte: &impl glib::IsA<gtk::Widget>,
|
||||
|
|
@ -19,16 +31,8 @@ pub fn esegui_toggle(
|
|||
if let Ok(mut inner) = stato.write() {
|
||||
match *inner {
|
||||
StatoFinestra::Nascosta | StatoFinestra::Nascondendo => {
|
||||
// Shameless copy from guake
|
||||
*inner = StatoFinestra::TirandoSu;
|
||||
window.present();
|
||||
window.deiconify();
|
||||
window.show();
|
||||
window.get_window().unwrap().focus(ts);
|
||||
window.set_type_hint(gdk::WindowTypeHint::Dock);
|
||||
window.set_type_hint(gdk::WindowTypeHint::Normal);
|
||||
window.get_window().unwrap().focus(0);
|
||||
window.set_focus(Some(vte));
|
||||
focussa(window, vte, ts);
|
||||
}
|
||||
StatoFinestra::SuNonFocusata => {
|
||||
window.hide();
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
use glib::Sender;
|
||||
use gtk::get_current_event_time;
|
||||
|
||||
pub fn listener(tx: &Sender<u32>) {
|
||||
use std::io::Read;
|
||||
|
|
@ -12,7 +11,7 @@ pub fn listener(tx: &Sender<u32>) {
|
|||
let mut buf = [0u8];
|
||||
if let Ok(_n) = stream.read_exact(&mut buf) {
|
||||
let _s = String::from_utf8_lossy(&buf).into_owned();
|
||||
tx.send(get_current_event_time()).expect("can't send");
|
||||
tx.send(0).expect("can't send");
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue