From b37d146a2d30952cf9b0acbce752294aa2e614ca Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Sat, 8 Sep 2018 21:55:31 +1000 Subject: [PATCH] Update account nickname in AccountsEditorListPane when it changes --- .../accounts/accounts-editor-list-pane.vala | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/client/accounts/accounts-editor-list-pane.vala b/src/client/accounts/accounts-editor-list-pane.vala index f5798bde..4f3ad517 100644 --- a/src/client/accounts/accounts-editor-list-pane.vala +++ b/src/client/accounts/accounts-editor-list-pane.vala @@ -210,7 +210,7 @@ internal class Accounts.EditorListPane : Gtk.Grid, EditorPane { Manager.Status status) { AccountListRow? row = get_account_row(account); if (row != null) { - row.update(status); + row.update_status(status); } } @@ -291,14 +291,28 @@ private class Accounts.AccountListRow : EditorRow { this.layout.add(this.account_name); this.layout.add(this.account_details); - update(status); + this.account.information_changed.connect(on_account_changed); + update_nickname(); + update_status(status); + } + + ~AccountListRow() { + this.account.information_changed.disconnect(on_account_changed); } public override void activated(EditorListPane pane) { pane.show_existing_account(this.account); } - public void update(Manager.Status status) { + public void update_nickname() { + string name = this.account.nickname; + if (Geary.String.is_empty(name)) { + name = account.primary_mailbox.to_address_display("", ""); + } + this.account_name.set_text(name); + } + + public void update_status(Manager.Status status) { if (status != Manager.Status.UNAVAILABLE) { this.unavailable_icon.hide(); this.set_tooltip_text(""); @@ -309,12 +323,6 @@ private class Accounts.AccountListRow : EditorRow { ); } - string name = this.account.nickname; - if (Geary.String.is_empty(name)) { - name = account.primary_mailbox.to_address_display("", ""); - } - this.account_name.set_text(name); - string? details = this.account.service_label; switch (account.service_provider) { case Geary.ServiceProvider.GMAIL: @@ -348,6 +356,10 @@ private class Accounts.AccountListRow : EditorRow { } } + private void on_account_changed() { + update_nickname(); + } + }