Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormjk <mjk@disroot.org>2023-05-01 16:39:44 +0300
committerPhilipp Hörist <philipp@hoerist.com>2023-05-09 21:47:24 +0300
commit0ecae706ca7fc094398be32d28b393b77c3bfa97 (patch)
tree8aee2c92df82ea20c42ae472a417c359ffd19413
parent3e1fa2e9055197acafa349d55359cf0afa498c52 (diff)
imprv: Notifications: Withdraw all when a corresponding chat is read
Fixes #11030
-rw-r--r--gajim/common/events.py7
-rw-r--r--gajim/gtk/chat_list.py3
-rw-r--r--gajim/gtk/notification.py6
3 files changed, 14 insertions, 2 deletions
diff --git a/gajim/common/events.py b/gajim/common/events.py
index 92496c5b0..ba5b19e52 100644
--- a/gajim/common/events.py
+++ b/gajim/common/events.py
@@ -123,6 +123,13 @@ class Notification(ApplicationEvent):
@dataclass
+class ChatRead(ApplicationEvent):
+ name: str = field(init=False, default='chat-read')
+ account: str
+ jid: JID
+
+
+@dataclass
class StanzaSent(ApplicationEvent):
name: str = field(init=False, default='stanza-sent')
account: str
diff --git a/gajim/gtk/chat_list.py b/gajim/gtk/chat_list.py
index 23046225d..c2a9feba8 100644
--- a/gajim/gtk/chat_list.py
+++ b/gajim/gtk/chat_list.py
@@ -163,8 +163,9 @@ class ChatList(Gtk.ListBox, EventHelper):
def mark_as_read(self, account: str, jid: JID) -> None:
chat = self._chats.get((account, jid))
- if chat is not None:
+ if chat is not None and chat.get_real_unread_count() > 0:
chat.reset_unread()
+ app.ged.raise_event(events.ChatRead(account=account, jid=jid))
def toggle_chat_pinned(self, account: str, jid: JID) -> None:
row = self._chats[(account, jid)]
diff --git a/gajim/gtk/notification.py b/gajim/gtk/notification.py
index b31a2d504..092420f52 100644
--- a/gajim/gtk/notification.py
+++ b/gajim/gtk/notification.py
@@ -83,7 +83,8 @@ class NotificationBackend(EventHelper):
self.register_events([
('notification', ged.GUI2, self._on_notification),
- ('account-enabled', ged.GUI2, self._on_account_enabled)
+ ('account-enabled', ged.GUI2, self._on_account_enabled),
+ ('chat-read', ged.GUI2, self._on_chat_read)
])
for client in app.get_clients():
@@ -111,6 +112,9 @@ class NotificationBackend(EventHelper):
client = app.get_client(event.account)
client.connect_signal('state-changed', self._on_client_state_changed)
+ def _on_chat_read(self, event: events.ChatRead) -> None:
+ self._withdraw(['new-message', event.account, event.jid])
+
def _on_client_state_changed(self,
client: Client,
_signal_name: str,