summaryrefslogtreecommitdiff
path: root/src/tray.vala
diff options
context:
space:
mode:
authorkotontrion <[email protected]>2024-05-23 14:30:34 +0200
committerkotontrion <[email protected]>2024-05-23 14:30:34 +0200
commitc9d7394bcce12e761e1372fbd18649023aad729d (patch)
treea8adb3e044ad226defa1f8c9802e32ef15c6ed9c /src/tray.vala
parent7c2bdd44cd7d2c4d50a13a706b6cc13e29340426 (diff)
implement tray items
Diffstat (limited to 'src/tray.vala')
-rw-r--r--src/tray.vala16
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);
}