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

Commits:

3 changed files:

Changes:

  • gajim/common/events.py
    ... ... @@ -122,6 +122,13 @@ class Notification(ApplicationEvent):
    122 122
         icon_name: Optional[str] = None
    
    123 123
     
    
    124 124
     
    
    125
    +@dataclass
    
    126
    +class ChatRead(ApplicationEvent):
    
    127
    +    name: str = field(init=False, default='chat-read')
    
    128
    +    account: str
    
    129
    +    jid: JID
    
    130
    +
    
    131
    +
    
    125 132
     @dataclass
    
    126 133
     class StanzaSent(ApplicationEvent):
    
    127 134
         name: str = field(init=False, default='stanza-sent')
    

  • gajim/gtk/chat_list.py
    ... ... @@ -163,8 +163,9 @@ def get_open_chats(self) -> OpenChatsSettingT:
    163 163
     
    
    164 164
         def mark_as_read(self, account: str, jid: JID) -> None:
    
    165 165
             chat = self._chats.get((account, jid))
    
    166
    -        if chat is not None:
    
    166
    +        if chat is not None and chat.get_real_unread_count() > 0:
    
    167 167
                 chat.reset_unread()
    
    168
    +            app.ged.raise_event(events.ChatRead(account=account, jid=jid))
    
    168 169
     
    
    169 170
         def toggle_chat_pinned(self, account: str, jid: JID) -> None:
    
    170 171
             row = self._chats[(account, jid)]
    

  • gajim/gtk/notification.py
    ... ... @@ -83,7 +83,8 @@ def __init__(self) -> None:
    83 83
     
    
    84 84
             self.register_events([
    
    85 85
                 ('notification', ged.GUI2, self._on_notification),
    
    86
    -            ('account-enabled', ged.GUI2, self._on_account_enabled)
    
    86
    +            ('account-enabled', ged.GUI2, self._on_account_enabled),
    
    87
    +            ('chat-read', ged.GUI2, self._on_chat_read)
    
    87 88
             ])
    
    88 89
     
    
    89 90
             for client in app.get_clients():
    
    ... ... @@ -111,6 +112,9 @@ def _on_account_enabled(self, event: events.AccountEnabled) -> None:
    111 112
             client = app.get_client(event.account)
    
    112 113
             client.connect_signal('state-changed', self._on_client_state_changed)
    
    113 114
     
    
    115
    +    def _on_chat_read(self, event: events.ChatRead) -> None:
    
    116
    +        self._withdraw(['new-message', event.account, event.jid])
    
    117
    +
    
    114 118
         def _on_client_state_changed(self,
    
    115 119
                                      client: Client,
    
    116 120
                                      _signal_name: str,