diff --git a/libs/declarative/connectionicon.cpp b/libs/declarative/connectionicon.cpp --- a/libs/declarative/connectionicon.cpp +++ b/libs/declarative/connectionicon.cpp @@ -313,7 +313,10 @@ } NetworkManager::ActiveConnection::Ptr connection = NetworkManager::activatingConnection(); - if (!connection) { + + // Set icon based on the current primary connection if the activating connection is virtual + // since we're not setting icons for virtual connections + if (!connection || (connection && UiUtils::isConnectionTypeVirtual(connection->type()))) { connection = NetworkManager::primaryConnection(); } diff --git a/libs/uiutils.h b/libs/uiutils.h --- a/libs/uiutils.h +++ b/libs/uiutils.h @@ -119,6 +119,12 @@ */ static QString wirelessBandToString(NetworkManager::WirelessSetting::FrequencyBand band); + /** + * @param type Type of the network connection + * @result return true if the connection is virtual. + */ + static bool isConnectionTypeVirtual(NetworkManager::ConnectionSettings::ConnectionType type); + #if WITH_MODEMMANAGER_SUPPORT static QString convertAllowedModeToString(ModemManager::Modem::ModemModes mode); static QString convertAccessTechnologyToString(ModemManager::Modem::AccessTechnologies tech); diff --git a/libs/uiutils.cpp b/libs/uiutils.cpp --- a/libs/uiutils.cpp +++ b/libs/uiutils.cpp @@ -677,3 +677,16 @@ } return lastUsedText; } + +bool UiUtils::isConnectionTypeVirtual(NetworkManager::ConnectionSettings::ConnectionType type) +{ + if (type == NetworkManager::ConnectionSettings::Bond || + type == NetworkManager::ConnectionSettings::Bridge || + type == NetworkManager::ConnectionSettings::Infiniband || + type == NetworkManager::ConnectionSettings::Team || + type == NetworkManager::ConnectionSettings::Vlan) { + return true; + } + + return false; +}