Philipp Hörist pushed to branch master at gajim / gajim
Commits: 1e127c7f by wurstsalat at 2022-10-19T22:32:16+02:00 imprv: Workspaces: Add 'Mark as read' menu item
Fixes #11198
- - - - -
4 changed files:
- gajim/gtk/const.py - gajim/gtk/main.py - gajim/gtk/menus.py - gajim/gtk/workspace_side_bar.py
Changes:
===================================== gajim/gtk/const.py ===================================== @@ -248,6 +248,7 @@ def __str__(self): ('edit-workspace', 's', True), ('remove-workspace', 's', True), ('activate-workspace', 's', True), + ('mark-workspace-as-read', 's', True), ('add-chat', 'a{sv}', True), ('add-group-chat', 'as', True), ('add-to-roster', 'a{sv}', True),
===================================== gajim/gtk/main.py ===================================== @@ -186,6 +186,22 @@ def unminimize(self) -> None: self.deiconify() self.present_with_time(Gtk.get_current_event_time())
+ def mark_workspace_as_read(self, workspace: str) -> None: + chat_list_stack = self._chat_page.get_chat_list_stack() + chat_list = chat_list_stack.get_chatlist(workspace) + open_chats = chat_list.get_open_chats() + for chat in open_chats: + self.mark_as_read(chat['account'], chat['jid']) + + def _mark_workspace_as_read(self, + _action: Gio.SimpleAction, + param: GLib.Variant + ) -> None: + + workspace_id = param.get_string() or None + if workspace_id is not None: + self.mark_workspace_as_read(workspace_id) + def _prepare_window(self) -> None: window_width = app.settings.get('mainwin_width') window_height = app.settings.get('mainwin_height') @@ -370,6 +386,7 @@ def _connect_actions(self) -> None: ('edit-workspace', self._edit_workspace), ('remove-workspace', self._remove_workspace), ('activate-workspace', self._activate_workspace), + ('mark-workspace-as-read', self._mark_workspace_as_read), ('add-chat', self._add_chat), ('add-group-chat', self._add_group_chat), ('add-to-roster', self._add_to_roster),
===================================== gajim/gtk/menus.py ===================================== @@ -586,7 +586,7 @@ def get_format_menu() -> GajimMenu: return GajimMenu.from_list(menuitems)
-def get_workspace_menu(workspace_id: str) -> GajimMenu: +def get_workspace_menu(workspace_id: str, has_unread: bool) -> GajimMenu: remove_action = 'win.dummy' if app.settings.get_workspace_count() > 1: remove_action = 'win.remove-workspace' @@ -596,6 +596,13 @@ def get_workspace_menu(workspace_id: str) -> GajimMenu: (_('Remove'), remove_action, f'"{workspace_id}"'), ]
+ if has_unread: + menuitems.insert( + 0, + (_('Mark as read'), + 'win.mark-workspace-as-read', + f'"{workspace_id}"')) + return GajimMenu.from_list(menuitems)
===================================== gajim/gtk/workspace_side_bar.py ===================================== @@ -333,7 +333,8 @@ def _popup_menu(self, _widget: Gtk.Widget, event: Gdk.EventButton) -> None: if event.button != 3: # right click return
- menu = get_workspace_menu(self.workspace_id) + menu = get_workspace_menu( + self.workspace_id, self._unread_label.get_visible())
popover = GajimPopover(menu, relative_to=self, event=event) popover.popup()
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/1e127c7f100a9ad0d8186fa581b829d6e...