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