okra pushed a commit to branch master. http://git.enlightenment.org/enlightenment/gadgets/wireless.git/commit/?id=d1788bde1f21ef30a2f168f93890cf2401975e59
commit d1788bde1f21ef30a2f168f93890cf2401975e59 Author: Stephen Houston <stephen@localhost.localdomain> Date: Thu Nov 30 10:52:35 2017 -0600 Update aps and their corresponding settings when things change. --- TODO | 4 +++- src/networkmanager.c | 25 ++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 8c98b9e..453ca3b 100644 --- a/TODO +++ b/TODO @@ -2,13 +2,15 @@ NetworkManager Support: --Untested-- DNS config editing - DNS domain and name servers are likely not stored correctly. + Proxy config editing --Issues-- Doesn't always update the icon correctly - Forgetting a wifi network goes back to ethernet mode... why? + Random crashes -- Are they sandbox related or wireless related? -When forgetting a network the connection setting is removed and thus doesn't show up in the network list anymore -- however the access point is still available so this should somehow update that the connection setting is removed but not the access point. +There is a duplicate entry for settings and aps in the wifi list -- This is so that when you delete a setting, the ap still exists. Is there a better way to do that? --Needed-- Add WEP support to agent. Currently only WPA will work. diff --git a/src/networkmanager.c b/src/networkmanager.c index d3e74c8..eaa124a 100644 --- a/src/networkmanager.c +++ b/src/networkmanager.c @@ -1506,7 +1506,8 @@ static void _networkmanager_manager_getap(void *data, const void *msg, Eldbus_Message_Iter *it) { const char *setting = msg; - NetworkManager_Service *ns = data; + Eina_List *l; + NetworkManager_Service *ns = data, *nss; if (eina_streq(setting, "Ssid")) { @@ -1573,6 +1574,26 @@ _networkmanager_manager_getap(void *data, const void *msg, Eldbus_Message_Iter * ns->security = WIRELESS_NETWORK_SECURITY_IEEE8021X; } } + EINA_LIST_FOREACH(networkmanager_services_list[ns->type], l, nss) + { + if (!nss->access_point) + { + if (!nss->conn_ssid) continue; + if (eina_streq(ns->name, nss->conn_ssid)) + { + if (nss->strength < ns->strength) + { + nss->strength = ns->strength; + nss->security = ns->security; + if (nss->wn) + free(nss->wn); + _networkmanager_service_convert(nss); + if (_networkmanager_service_is_connected(nss)) + _networkmanager_update_current_network(nss, nss->type); + } + } + } + } } static void @@ -1805,8 +1826,6 @@ _networkmanager_service_ap_new(int type, const char *path, Eldbus_Message_Iter * free(nss->wn); _networkmanager_service_convert(nss); } - _networkmanager_service_free_nolist(ns); - return NULL; } } } --