From 533617d59f781514dfd7b55f4dd85083f3dadd91 Mon Sep 17 00:00:00 2001 From: oupson Date: Mon, 6 Mar 2023 07:54:37 +0100 Subject: [PATCH] Change tab name --- src/pane.vala | 6 +++++- src/terminalpane.vala | 9 +++++++++ src/window.vala | 16 +++++++++++----- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/pane.vala b/src/pane.vala index 3475187..26dcf56 100644 --- a/src/pane.vala +++ b/src/pane.vala @@ -30,15 +30,19 @@ namespace Footerm { [GtkChild] private unowned Footerm.TerminalPane terminal_pane; + public signal void title_changed (string new_title); + construct { this.new_pane.on_server_selected.connect ((s) => { this.footerm_pane_stack.set_visible_child (this.terminal_pane); + this.title_changed (s.name); + this.terminal_pane.title_changed.connect ((s) => this.title_changed (s)); this.terminal_pane.connect_to_server_async (s); }); } public async void close () { - yield this.terminal_pane.disconnect_from_server(); + yield this.terminal_pane.disconnect_from_server (); } } } diff --git a/src/terminalpane.vala b/src/terminalpane.vala index eca3816..29807dd 100644 --- a/src/terminalpane.vala +++ b/src/terminalpane.vala @@ -37,6 +37,8 @@ namespace Footerm { private int old_terminal_width = 0; private int old_terminal_height = 0; + public signal void title_changed(string new_title); + construct { this.configure_terminal(); } @@ -83,6 +85,13 @@ namespace Footerm { this.terminal.set_enable_sixel(true); this.terminal.char_size_changed.connect(this.terminal_appearance_changed); this.terminal.contents_changed.connect(this.terminal_appearance_changed); + this.terminal.window_title_changed.connect((t) => { + var terminal_title = t.window_title; + if (terminal_title.length == 0) { + terminal_title = this.server.name; + } + this.title_changed(terminal_title); + }); this.setup_terminal_theme(); } diff --git a/src/window.vala b/src/window.vala index 6d30fc6..9b46b4f 100644 --- a/src/window.vala +++ b/src/window.vala @@ -32,13 +32,19 @@ namespace Footerm { this.view.close_page.connect (this.close_page); var action = new SimpleAction ("new_tab", null); action.activate.connect (() => { - var a = view.append (new Footerm.Pane ()); - a.set_title ("New Pane"); - view.set_selected_page (a); + this.create_new_pane (); }); this.add_action (action); - var a = view.append (new Footerm.Pane ()); - a.set_title ("New Pane"); + this.create_new_pane (); + } + + private void create_new_pane () { + var pane = new Footerm.Pane (); + var tab_page = this.view.append (pane); + tab_page.set_title ("New Pane"); + pane.title_changed.connect ((title) => { + tab_page.set_title (title); + }); } private bool close_page (Adw.TabView tab_view, Adw.TabPage page) {