From c17297c5f5bcec99c59f731fd879055a04f1edb8 Mon Sep 17 00:00:00 2001 From: Shane Synan Date: Tue, 7 Aug 2018 17:25:16 -0500 Subject: [PATCH] settings: Reset Network SASL status on load Explicitly reset IRCv3 capability-based network settings whenever loading network IDs. This should help guard against situations where setNetworkCapStates() does not get called with a NetworkId when loading, resulting in the template text being left visible. --- src/qtui/settingspages/networkssettingspage.cpp | 12 +++++++++++- src/qtui/settingspages/networkssettingspage.h | 10 ++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index d8309ad6..c1ee10a8 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -207,6 +207,9 @@ void NetworksSettingsPage::load() sslUpdated(); #endif + // Reset network capability status in case no valid networks get selected (a rare situation) + resetNetworkCapStates(); + foreach(NetworkId netid, Client::networkIds()) { clientNetworkAdded(netid); } @@ -355,10 +358,17 @@ void NetworksSettingsPage::setItemState(NetworkId id, QListWidgetItem *item) } +void NetworksSettingsPage::resetNetworkCapStates() +{ + // Set the status to a blank (invalid) network ID, reseting all UI + setNetworkCapStates(NetworkId()); +} + + void NetworksSettingsPage::setNetworkCapStates(NetworkId id) { const Network *net = Client::network(id); - if (Client::isCoreFeatureEnabled(Quassel::Feature::CapNegotiation) && net) { + if (net && Client::isCoreFeatureEnabled(Quassel::Feature::CapNegotiation)) { // Capability negotiation is supported, network exists. // Check if the network is connected. Don't use net->isConnected() as that won't be true // during capability negotiation when capabilities are added and removed. diff --git a/src/qtui/settingspages/networkssettingspage.h b/src/qtui/settingspages/networkssettingspage.h index 3ce01907..1e32ccd1 100644 --- a/src/qtui/settingspages/networkssettingspage.h +++ b/src/qtui/settingspages/networkssettingspage.h @@ -59,6 +59,16 @@ private slots: void displayNetwork(NetworkId); void setItemState(NetworkId, QListWidgetItem *item = 0); + /** + * Reset the capability-dependent settings to the default unknown states + * + * For example, this updates the SASL text to indicate the status is unknown. Any actual + * information should be set by setNetworkCapStates() + * + * @see NetworksSettingsPage::setNetworkCapStates() + */ + void resetNetworkCapStates(); + /** * Update the capability-dependent settings according to what the server supports * -- 2.20.1