fix: detectInterfaces过滤规则与readNetworkStats统一

detectInterfaces 原仅过滤 lo,docker/veth/br- 接口会在首次刷新前
短暂出现在列表中后被 readNetworkStats 覆盖,造成 UI 闪烁。
统一过滤规则为 lo/veth*/docker*/br-*。
This commit is contained in:
2026-07-24 09:37:11 +08:00
parent c614df5fbe
commit 91bc3174a0
2 changed files with 8 additions and 4 deletions
+3 -2
View File
@@ -25,8 +25,9 @@
~~`AboutWindow.qml`、`SettingsWindow.qml`、`TextColorPicker.qml`、`TrafficChartWindow.qml` 全部硬编码浅色,不随系统主题适配。~~
已为 4 个独立窗口新增 `isDarkMode` 属性(由 networkview.qml 检测后注入),各窗口定义深/浅双色方案切换。深色模式检测改用 `DTK.palette.window.hslLightness < 0.5`(原 `DockPalette.iconTextPalette` 不随系统主题变化)。同时修复 networkview.qml 任务栏图标和 NetworkPopup 弹窗的颜色基:从 `DockPalette.iconTextPalette` 改为 `DTK.palette.windowText`,解决深色模式黑底黑字问题。
**5. `detectInterfaces()` 过滤规则与 `readNetworkStats()` 不一致**
`init()` 先调 `detectInterfaces()`(读 `/sys/class/net`仅过滤 `lo`),再调 `readNetworkStats()`(读 `/proc/net/dev`过滤 `lo`/`veth`/`docker`/`br-`)。首次刷新前docker/veth 接口短暂出现在列表中,造成 UI 闪烁。`detectInterfaces()` 的结果会被 `readNetworkStats()` 完全覆盖,属于冗余调用。
**5. ~~`detectInterfaces()` 过滤规则与 `readNetworkStats()` 不一致~~ ✅ 已修复**
~~`init()` 先调 `detectInterfaces()`仅过滤 `lo`),再调 `readNetworkStats()`过滤 `lo`/`veth`/`docker`/`br-`),首次刷新前 docker/veth 接口短暂出现造成 UI 闪烁。~~
已将 `detectInterfaces()` 的过滤规则统一为与 `readNetworkStats()` 一致(`lo`/`veth*`/`docker*`/`br-*`)。
### 🟡 中优先级
+5 -2
View File
@@ -424,8 +424,11 @@ void NetworkMonitorApplet::detectInterfaces()
m_interfaceList.clear();
for (const QString &entry : entries) {
// 过滤回环接口
if (entry != "lo") {
// 过滤回环接口和虚拟接口,与 readNetworkStats() 保持一致
// 设计原因:原仅过滤 lodocker/veth/br- 接口会短暂出现在列表中,
// 随后被 readNetworkStats() 覆盖,造成 UI 闪烁
if (entry != "lo" && !entry.startsWith("veth") &&
!entry.startsWith("docker") && !entry.startsWith("br-")) {
m_interfaceList << entry;
}
}