diff --git a/src/iwd/iwd_manager.c b/src/iwd/iwd_manager.c index ec4648e..ac853f1 100644 --- a/src/iwd/iwd_manager.c +++ b/src/iwd/iwd_manager.c @@ -245,6 +245,20 @@ _on_iface_removed(void *data, const char *path, const char *iface) { eina_hash_del(m->networks, path, NULL); } + else if (!strcmp(iface, IWD_IFACE_KNOWN_NETWORK)) + { + /* A saved network was forgotten: iwd removes the KnownNetwork object + * but the matching Network.KnownNetwork change arrives only as an + * invalidation, which our changed-only property handler drops. Clear + * the back-reference here so the ★ marker and Forget (✕) button vanish + * immediately instead of lingering until the next full repopulate. */ + Eina_Iterator *it = eina_hash_iterator_data_new(m->networks); + Iwd_Network *n; + EINA_ITERATOR_FOREACH(it, n) + if (n->known_path && !strcmp(n->known_path, path)) + { free(n->known_path); n->known_path = NULL; } + eina_iterator_free(it); + } else if (!strcmp(iface, IWD_IFACE_ADAPTER)) { eina_hash_del(m->adapters, path, NULL);