Philipp Hörist pushed to branch master at gajim / gajim

Commits:

4 changed files:

Changes:

  • gajim/gtk/const.py
    ... ... @@ -248,6 +248,7 @@ def __str__(self):
    248 248
         ('edit-workspace', 's', True),
    
    249 249
         ('remove-workspace', 's', True),
    
    250 250
         ('activate-workspace', 's', True),
    
    251
    +    ('mark-workspace-as-read', 's', True),
    
    251 252
         ('add-chat', 'a{sv}', True),
    
    252 253
         ('add-group-chat', 'as', True),
    
    253 254
         ('add-to-roster', 'a{sv}', True),
    

  • gajim/gtk/main.py
    ... ... @@ -186,6 +186,22 @@ def unminimize(self) -> None:
    186 186
             self.deiconify()
    
    187 187
             self.present_with_time(Gtk.get_current_event_time())
    
    188 188
     
    
    189
    +    def mark_workspace_as_read(self, workspace: str) -> None:
    
    190
    +        chat_list_stack = self._chat_page.get_chat_list_stack()
    
    191
    +        chat_list = chat_list_stack.get_chatlist(workspace)
    
    192
    +        open_chats = chat_list.get_open_chats()
    
    193
    +        for chat in open_chats:
    
    194
    +            self.mark_as_read(chat['account'], chat['jid'])
    
    195
    +
    
    196
    +    def _mark_workspace_as_read(self,
    
    197
    +                                _action: Gio.SimpleAction,
    
    198
    +                                param: GLib.Variant
    
    199
    +                                ) -> None:
    
    200
    +
    
    201
    +        workspace_id = param.get_string() or None
    
    202
    +        if workspace_id is not None:
    
    203
    +            self.mark_workspace_as_read(workspace_id)
    
    204
    +
    
    189 205
         def _prepare_window(self) -> None:
    
    190 206
             window_width = app.settings.get('mainwin_width')
    
    191 207
             window_height = app.settings.get('mainwin_height')
    
    ... ... @@ -370,6 +386,7 @@ def _connect_actions(self) -> None:
    370 386
                 ('edit-workspace', self._edit_workspace),
    
    371 387
                 ('remove-workspace', self._remove_workspace),
    
    372 388
                 ('activate-workspace', self._activate_workspace),
    
    389
    +            ('mark-workspace-as-read', self._mark_workspace_as_read),
    
    373 390
                 ('add-chat', self._add_chat),
    
    374 391
                 ('add-group-chat', self._add_group_chat),
    
    375 392
                 ('add-to-roster', self._add_to_roster),
    

  • gajim/gtk/menus.py
    ... ... @@ -586,7 +586,7 @@ def get_format_menu() -> GajimMenu:
    586 586
         return GajimMenu.from_list(menuitems)
    
    587 587
     
    
    588 588
     
    
    589
    -def get_workspace_menu(workspace_id: str) -> GajimMenu:
    
    589
    +def get_workspace_menu(workspace_id: str, has_unread: bool) -> GajimMenu:
    
    590 590
         remove_action = 'win.dummy'
    
    591 591
         if app.settings.get_workspace_count() > 1:
    
    592 592
             remove_action = 'win.remove-workspace'
    
    ... ... @@ -596,6 +596,13 @@ def get_workspace_menu(workspace_id: str) -> GajimMenu:
    596 596
             (_('Remove'), remove_action, f'"{workspace_id}"'),
    
    597 597
         ]
    
    598 598
     
    
    599
    +    if has_unread:
    
    600
    +        menuitems.insert(
    
    601
    +            0,
    
    602
    +            (_('Mark as read'),
    
    603
    +             'win.mark-workspace-as-read',
    
    604
    +             f'"{workspace_id}"'))
    
    605
    +
    
    599 606
         return GajimMenu.from_list(menuitems)
    
    600 607
     
    
    601 608
     
    

  • gajim/gtk/workspace_side_bar.py
    ... ... @@ -333,7 +333,8 @@ def _popup_menu(self, _widget: Gtk.Widget, event: Gdk.EventButton) -> None:
    333 333
             if event.button != 3:  # right click
    
    334 334
                 return
    
    335 335
     
    
    336
    -        menu = get_workspace_menu(self.workspace_id)
    
    336
    +        menu = get_workspace_menu(
    
    337
    +            self.workspace_id, self._unread_label.get_visible())
    
    337 338
     
    
    338 339
             popover = GajimPopover(menu, relative_to=self, event=event)
    
    339 340
             popover.popup()