diff options
author | kotontrion <[email protected]> | 2024-05-23 14:30:34 +0200 |
---|---|---|
committer | kotontrion <[email protected]> | 2024-05-23 14:30:34 +0200 |
commit | c9d7394bcce12e761e1372fbd18649023aad729d (patch) | |
tree | a8adb3e044ad226defa1f8c9802e32ef15c6ed9c /src/tray.vala | |
parent | 7c2bdd44cd7d2c4d50a13a706b6cc13e29340426 (diff) |
implement tray items
Diffstat (limited to 'src/tray.vala')
-rw-r--r-- | src/tray.vala | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/tray.vala b/src/tray.vala index 380eaa1..5bf9270 100644 --- a/src/tray.vala +++ b/src/tray.vala @@ -22,7 +22,7 @@ public class Tray : Object { private IWatcher proxy; private HashTable<string, TrayItem> _items; - public TrayItem[] items { get { return _items.get_values_as_ptr_array().data; }} + public List<weak TrayItem> items { owned get { return _items.get_values(); }} public signal void item_added(string service); public signal void item_removed(string service); @@ -38,6 +38,9 @@ public class Tray : Object { start_watcher, () => { if (proxy != null) { + //foreach (string item in proxy.RegisteredStatusNotifierItems) { + // on_item_unregister(item); + //} proxy = null; } }, @@ -68,18 +71,23 @@ public class Tray : Object { proxy.StatusNotifierItemRegistered.connect(on_item_register); proxy.StatusNotifierItemUnregistered.connect(on_item_unregister); + + foreach (string item in proxy.RegisteredStatusNotifierItems) { + on_item_register(item); + } } private void on_item_register(string service) { if(_items.contains(service)) return; string[] parts = service.split("/", 2); TrayItem item = new TrayItem(parts[0], "/" + parts[1]); - _items.set(service, item); - item_added(service); + item.ready.connect(() => { + _items.set(service, item); + item_added(service); + }); } private void on_item_unregister(string service) { - string[] parts = service.split("/", 2); _items.remove(service); item_removed(service); } |