Skip to content

Commit 6def30e

Browse files
waterlovemelondeepin-bot[bot]
authored andcommitted
fix: 任务栏网络弹窗打开的时候闪烁
原因:窗口打开的时候会有窗管特效动画,在这个过程中窗口的大小发生变化可能会发生异常抖动和闪烁的情况。 方案: 1.如果需要改变窗口大小,即时处理,不要在showEvent里面去操作。 2.不要依赖isVisible()的状态,而是使用isVisibleTo()。 Log: PMS: BIG-336029
1 parent 03b0ef4 commit 6def30e

3 files changed

Lines changed: 5 additions & 10 deletions

File tree

dock-network-plugin/dockcontentwidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public Q_SLOTS:
7676
m_netView->setMaxHeight(h);
7777
if (m_netView->height() > h)
7878
m_netView->setFixedHeight(h);
79-
setFixedSize(m_netView->width(), qMax(m_minHeight, m_netView->height() + 20 + m_mainLayout->contentsMargins().top() + (m_netCheckBtn->isVisibleTo(this) ? (m_netSetBtn->height() + m_netCheckBtn->height() + 10) : m_netSetBtn->height())));
79+
resize(m_netView->width(), qMax(m_minHeight, m_netView->height() + 20 + m_mainLayout->contentsMargins().top() + (m_netCheckBtn->isVisibleTo(this) ? (m_netSetBtn->height() + m_netCheckBtn->height() + 10) : m_netSetBtn->height())));
8080
}
8181
void setNetCheckBtnVisible(bool visible) {
8282
m_netCheckBtn->setVisible(visible);

net-view/window/netview.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ NetView::NetView(NetManager *manager)
2828
: QTreeView(nullptr)
2929
, m_manager(manager)
3030
, m_closeOnClear(true)
31-
, m_shouldUpdateExpand(true)
3231
, m_maxHeight(400)
3332
{
3433
#ifdef QT_SCROLL_WHEEL_ANI
@@ -113,7 +112,6 @@ void NetView::clear()
113112

114113
m_manager->exec(NetManager::UserCancelRequest, "");
115114
scrollTo(model()->index(0, 0));
116-
m_shouldUpdateExpand = true;
117115
}
118116

119117
void NetView::rowsInserted(const QModelIndex &parent, int start, int end)
@@ -142,11 +140,15 @@ void NetView::rowsInserted(const QModelIndex &parent, int start, int end)
142140
case NetType::WirelessOtherItem: {
143141
NetWirelessOtherItem *otherItem = NetItem::toItem<NetWirelessOtherItem>(item);
144142
if (otherItem) {
143+
// 添加的节点后更新一下展开状态
144+
m_manager->exec(NetManager::ToggleExpand, "");
145145
updateItemExpand(otherItem);
146146
connect(otherItem, &NetWirelessOtherItem::expandedChanged, this, &NetView::onExpandStatusChanged, Qt::UniqueConnection);
147147
}
148148
} break;
149149
case NetType::WirelessMineItem:
150+
// 添加的节点后更新一下展开状态
151+
m_manager->exec(NetManager::ToggleExpand, "");
150152
updateItemExpand(item);
151153
break;
152154
case NetType::VPNControlItem: {
@@ -409,11 +411,6 @@ void NetView::showEvent(QShowEvent *event)
409411
{
410412
QTreeView::showEvent(event);
411413
m_manager->setAutoScanEnabled(true);
412-
// 首次打开,需要刷新展开状态
413-
if (m_shouldUpdateExpand)
414-
m_manager->exec(NetManager::ToggleExpand, "");
415-
m_shouldUpdateExpand = false;
416-
updateGeometries();
417414
}
418415

419416
void NetView::hideEvent(QHideEvent *event)
@@ -425,7 +422,6 @@ void NetView::hideEvent(QHideEvent *event)
425422
// 而网络面板大概在200毫秒之后显示,500毫秒为为了准备足够长的时间(防止不同性能的机器时间可能不同)
426423
QTimer::singleShot(500, this, &NetView::clear);
427424
}
428-
m_shouldUpdateExpand = false;
429425
m_manager->exec(NetManager::ToggleExpand, "");
430426
Q_EMIT updateSize();
431427
m_manager->setAutoScanEnabled(false);

net-view/window/netview.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ protected Q_SLOTS:
7373
NetModel *m_model;
7474
NetDelegate *m_delegate;
7575
bool m_closeOnClear;
76-
bool m_shouldUpdateExpand;
7776
int m_maxHeight;
7877
};
7978

0 commit comments

Comments
 (0)