From d8de7c7e4b1b57470297dc238b210670f87c23ba Mon Sep 17 00:00:00 2001 From: ATMDA Date: Sun, 9 Nov 2025 21:43:51 -0500 Subject: controlcenter: wifi passphrase input fix: dependability issues with nmcli --- modules/controlcenter/network/Details.qml | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'modules/controlcenter/network/Details.qml') diff --git a/modules/controlcenter/network/Details.qml b/modules/controlcenter/network/Details.qml index 86164f1..19e011f 100644 --- a/modules/controlcenter/network/Details.qml +++ b/modules/controlcenter/network/Details.qml @@ -79,17 +79,37 @@ Item { checked: root.network?.active ?? false toggle.onToggled: { if (checked) { - if (root.network.isSecure) { - // TODO: Show password dialog - root.session.network.showPasswordDialog = true; - root.session.network.pendingNetwork = root.network; + // If already connected to a different network, disconnect first + if (Network.active && Network.active.ssid !== root.network.ssid) { + Network.disconnectFromNetwork(); + // Wait a moment before connecting to new network + Qt.callLater(() => { + connectToNetwork(); + }); } else { - Network.connectToNetwork(root.network.ssid, ""); + connectToNetwork(); } } else { Network.disconnectFromNetwork(); } } + + function connectToNetwork(): void { + if (root.network.isSecure) { + // Try connecting without password first (in case it's saved) + Network.connectToNetworkWithPasswordCheck( + root.network.ssid, + root.network.isSecure, + () => { + // Callback: connection failed, show password dialog + root.session.network.showPasswordDialog = true; + root.session.network.pendingNetwork = root.network; + } + ); + } else { + Network.connectToNetwork(root.network.ssid, ""); + } + } } } } -- cgit v1.2.3-freya