Larghezza tab

master
Pietro Brenna 2020-03-31 15:29:58 +02:00
parent c2f83e889f
commit f37db6d38d
2 changed files with 9 additions and 7 deletions

View File

@ -37,6 +37,7 @@ fn build_ui(application: &gtk::Application) {
window.set_keep_above(true); window.set_keep_above(true);
let nb = gtk::Notebook::new(); let nb = gtk::Notebook::new();
nb.set_show_tabs(false); nb.set_show_tabs(false);
nb.set_scrollable(true);
nb.set_show_border(false); nb.set_show_border(false);
let accel_group = gtk::AccelGroup::new(); let accel_group = gtk::AccelGroup::new();
let (key, modifier) = gtk::accelerator_parse("<Control><Shift>t"); let (key, modifier) = gtk::accelerator_parse("<Control><Shift>t");

View File

@ -9,7 +9,6 @@ pub fn build_tab(
shell: Option<Vec<String>>, shell: Option<Vec<String>>,
) -> Result<vte::Terminal, glib::Error> { ) -> Result<vte::Terminal, glib::Error> {
let l = gtk::Label::new(Some("~")); let l = gtk::Label::new(Some("~"));
l.set_width_chars(14);
l.set_ellipsize(pango::EllipsizeMode::Middle); l.set_ellipsize(pango::EllipsizeMode::Middle);
//gtk::Window::set_interactive_debugging(true); //gtk::Window::set_interactive_debugging(true);
let vte = vte::Terminal::new(); let vte = vte::Terminal::new();
@ -38,8 +37,8 @@ pub fn build_tab(
)?; )?;
nb.append_page(&vte, Some(&l)); nb.append_page(&vte, Some(&l));
nb.set_tab_reorderable(&vte, true); nb.set_tab_reorderable(&vte, true);
vte.connect_child_exited(clone!(@weak nb, @weak vte => move |a, status| { vte.connect_child_exited(clone!(@weak nb, @weak vte => move |_a, status| {
println!("Child exited with status {:?} {}", a, status); println!("Child exited with status {}", status);
let p_num = nb.page_num(&vte); let p_num = nb.page_num(&vte);
nb.remove_page(p_num); nb.remove_page(p_num);
})); }));
@ -101,11 +100,13 @@ fn set_title(term: &vte::Terminal, nb: &gtk::Notebook) {
}; };
if let Some(l) = nb.get_tab_label(term) { if let Some(l) = nb.get_tab_label(term) {
if let Ok(l) = l.downcast::<gtk::Label>() { if let Ok(l) = l.downcast::<gtk::Label>() {
if let Some(title) = term.get_window_title() { let new_label = if let Some(title) = term.get_window_title() {
l.set_label(&format!("{}{}", tab_n, title)); format!("{}{}", tab_n, title)
} else { } else {
l.set_label(&tab_n); tab_n
} };
l.set_label(&new_label);
l.set_width_chars(std::cmp::min(new_label.len(), 14) as i32);
} }
} }
} }