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/1e127c7f100a9ad0d8186fa581b829d6e6fce84f
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/1e127c7f100a9ad0d8186fa581b829d6e6fce84f
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits