diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py
index e08a44aade7f0f2637c2c6f86b97e012cf856b35..93e017c68361aeb02bad3037927c6ca5c58f9179 100644
--- a/briar-gtk/briar_gtk/actions/window.py
+++ b/briar-gtk/briar_gtk/actions/window.py
@@ -77,7 +77,7 @@ class WindowActions(Actions):
 
     # pylint: disable=unused-argument
     def _change_alias_contact_dialog(self, action, parameter):
-        self.widget.current_container.open_change_contact_alias_dialog()
+        self.widget.current_controller.open_change_contact_alias_dialog()
 
     # pylint: disable=unused-argument
     def _open_about_page(self, action, parameter):
diff --git a/briar-gtk/briar_gtk/controllers/main_window.py b/briar-gtk/briar_gtk/controllers/main_window.py
index 1781c7f5c63cae02b856f4c50f31b4bd5943c04c..83507cfac5e6003b027cf19d8646bca44cbbd4d0 100644
--- a/briar-gtk/briar_gtk/controllers/main_window.py
+++ b/briar-gtk/briar_gtk/controllers/main_window.py
@@ -2,6 +2,9 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 # License-Filename: LICENSE.md
 
+from gettext import gettext as _
+from gi.repository import Gtk
+
 from briar_wrapper.models.contacts import Contacts
 
 from briar_gtk.containers.private_chat import PrivateChatContainer
@@ -13,6 +16,7 @@ from briar_gtk.views.main_menu import MainMenuView
 from briar_gtk.views.private_chat import PrivateChatView
 from briar_gtk.views.sidebar import SidebarView
 from briar_gtk.widgets.about_dialog import AboutDialogWidget
+from briar_gtk.widgets.edit_dialog import EditDialog
 
 
 class MainWindowController():
@@ -31,6 +35,27 @@ class MainWindowController():
         about_dialog = AboutDialogWidget()
         about_dialog.show()
 
+    def open_change_contact_alias_dialog(self):
+        if self._current_contact_id == 0:
+            raise Exception("Can't change contact alias with ID 0")
+
+        confirmation_dialog = EditDialog(
+            parent=APP().window,
+            flags=Gtk.DialogFlags.MODAL,
+            placeholder=self._get_contact_name(self._current_contact_id)
+        )
+
+        confirmation_dialog.set_title(_("Change contact name"))
+
+        response = confirmation_dialog.run()
+        user_alias = confirmation_dialog.get_entry().get_text()
+        confirmation_dialog.destroy()
+        if (response == Gtk.ResponseType.OK) and (user_alias != ''):
+            Contacts(APP().api).set_alias(self._current_contact_id, user_alias)
+            contact_name_label = self._builder.get_object("contact_name")
+            contact_name_label.set_text(user_alias)
+            self._sidebar_controller.refresh_contacts()
+
     def open_private_chat(self, contact_id):
         contact_name = self._get_contact_name(contact_id)
         self._prepare_chat_view(contact_name)
diff --git a/briar-gtk/briar_gtk/views/main_window.py b/briar-gtk/briar_gtk/views/main_window.py
index a89e69d32923d15ec7f4150c60c6b8269a21a74e..a574a6bf3db06a4402b89bf633cc9b2d6c79e595 100644
--- a/briar-gtk/briar_gtk/views/main_window.py
+++ b/briar-gtk/briar_gtk/views/main_window.py
@@ -21,7 +21,6 @@ from briar_gtk.views.main_menu import MainMenuView
 from briar_gtk.views.private_chat import PrivateChatView
 from briar_gtk.views.sidebar import SidebarView
 from briar_gtk.widgets.contact_row import ContactRowWidget
-from briar_gtk.widgets.edit_dialog import EditDialog
 
 
 class MainWindowView(Gtk.Overlay):
@@ -82,26 +81,6 @@ class MainWindowView(Gtk.Overlay):
         self._current_contact_id = 0
         self._builder.get_object("chat_menu_button").hide()
 
-    def open_change_contact_alias_dialog(self):
-        if self._current_contact_id == 0:
-            raise Exception("Can't change contact alias with ID 0")
-
-        confirmation_dialog = EditDialog(
-            parent=APP().window,
-            flags=Gtk.DialogFlags.MODAL,
-            placeholder=self._get_contact_name(self._current_contact_id)
-        )
-
-        confirmation_dialog.set_title(_("Change contact name"))
-
-        response = confirmation_dialog.run()
-        user_alias = confirmation_dialog.get_entry().get_text()
-        confirmation_dialog.destroy()
-        if (response == Gtk.ResponseType.OK) and (user_alias != ''):
-            Contacts(APP().api).set_alias(self._current_contact_id, user_alias)
-            self.contact_name_label.set_text(user_alias)
-            self._refresh_contacts()
-
     def open_delete_all_messages_dialog(self):
         if self._current_contact_id == 0:
             raise Exception("Can't delete all messages with contact ID 0")