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


Commits:
9d3e996d by wurstsalat at 2022-05-17T09:59:48+02:00
fix: Windows: Hide status icon on shutdown

Fixes #10862

- - - - -


2 changed files:

- gajim/common/application.py
- gajim/gtk/status_icon.py


Changes:

=====================================
gajim/common/application.py
=====================================
@@ -83,6 +83,8 @@ def _log(self) -> logging.Logger:
         return app.log('gajim.application')
 
     def start_shutdown(self, *args: Any, **kwargs: Any) -> None:
+        app.app.systray.shutdown()
+
         accounts_to_disconnect: dict[str, Client] = {}
 
         for account, client in app.connections.items():


=====================================
gajim/gtk/status_icon.py
=====================================
@@ -93,6 +93,9 @@ def _on_unread_count_changed(self, *args: Any) -> None:
     def is_visible(self) -> bool:
         return self._backend.is_visible()
 
+    def shutdown(self) -> None:
+        self._backend.shutdown()
+
 
 class NoneBackend:
     def update_state(self, count: int = 0) -> None:
@@ -101,6 +104,9 @@ def update_state(self, count: int = 0) -> None:
     def is_visible(self) -> bool:
         return False
 
+    def shutdown(self) -> None:
+        pass
+
 
 class GtkMenuBackend(EventHelper):
     def __init__(self) -> None:
@@ -215,6 +221,7 @@ class GtkStatusIcon(GtkMenuBackend):
     def __init__(self) -> None:
         GtkMenuBackend.__init__(self)
         self._hide_menuitem_added = False
+        self._shutdown = False
 
         self._status_icon = Gtk.StatusIcon()
         self._status_icon.set_tooltip_text('Gajim')  # Needed for Windows
@@ -225,6 +232,10 @@ def __init__(self) -> None:
         self.update_state()
 
     def update_state(self, count: int = 0) -> None:
+        if self._shutdown:
+            # Shutdown in progress, don't update icon
+            return
+
         if app.settings.get('trayicon') == 'never':
             self._status_icon.set_visible(False)
             return
@@ -242,6 +253,11 @@ def update_state(self, count: int = 0) -> None:
     def is_visible(self) -> bool:
         return self._status_icon.get_visible()
 
+    def shutdown(self) -> None:
+        # Necessary on Windows in order to remove icon from tray on shutdown
+        self._shutdown = True
+        self._status_icon.set_visible(False)
+
     def _on_size_changed(self,
                          _status_icon: Gtk.StatusIcon,
                          size: int) -> None:
@@ -317,3 +333,6 @@ def update_state(self, count: int = 0) -> None:
     def is_visible(self) -> bool:
         status = self._status_icon.get_status()
         return status == appindicator.IndicatorStatus.ACTIVE
+
+    def shutdown(self) -> None:
+        pass



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/9d3e996dd14bdb4c8b6deba12ec0d9c22eb6c5c5

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/9d3e996dd14bdb4c8b6deba12ec0d9c22eb6c5c5
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to