Philipp Hörist pushed to branch master at gajim / gajim
Commits:
-
0ecae706
by mjk at 2023-05-09T18:47:24+00:00
3 changed files:
Changes:
| ... | ... | @@ -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')
|
| ... | ... | @@ -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)]
|
| ... | ... | @@ -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,
|