diff --git a/src/main.rs b/src/main.rs index 003b9ff..5555f84 100644 --- a/src/main.rs +++ b/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) }); diff --git a/src/stato_finestra.rs b/src/stato_finestra.rs index f986c01..ca0d8aa 100644 --- a/src/stato_finestra.rs +++ b/src/stato_finestra.rs @@ -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, 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, @@ -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(); diff --git a/src/wake_listener.rs b/src/wake_listener.rs index af2582f..47e4ce8 100644 --- a/src/wake_listener.rs +++ b/src/wake_listener.rs @@ -1,5 +1,4 @@ use glib::Sender; -use gtk::get_current_event_time; pub fn listener(tx: &Sender) { use std::io::Read; @@ -12,7 +11,7 @@ pub fn listener(tx: &Sender) { 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) => {