fix: 在界面size调整完毕后再计算图标大小

先通过消息循环让各部件调整好size后再计算图标大小,避免因为各部件size没有调整完导致计算的图标大小不准确,然后重复触发
PluginAreaWidget的reszie事件并重复计算,造成任务栏图标抖动问题

Log: 修复任务栏在无操作的情况下图标异常抖动的问题
Bug: https://pms.uniontech.com/zentao/bug-view-90724.html
Change-Id: Ia9b60f1829efdfa4e55fdb25403ab60e46d5ba94
This commit is contained in:
chenjun 2021-08-21 16:14:18 +08:00
parent a97b475cea
commit 61336764f3

View File

@ -84,7 +84,6 @@ MainPanelControl::MainPanelControl(QWidget *parent)
m_appAreaSonWidget->installEventFilter(this);
m_trayAreaWidget->installEventFilter(this);
m_desktopWidget->installEventFilter(this);
m_pluginAreaWidget->installEventFilter(this);
//在设置每条线大小前应该设置fixedsize(0,0)
//应为paintEvent函数会先调用设置背景颜色大小为随机值
@ -314,9 +313,12 @@ void MainPanelControl::removePluginAreaItem(QWidget *wdg)
void MainPanelControl::resizeEvent(QResizeEvent *event)
{
//先通过消息循环让各部件调整好size后再计算图标大小
//避免因为部件size没有调整完导致计算的图标大小不准确
//然后重复触发m_pluginAreaWidget的reszie事件并重复计算造成任务栏图标抖动问题
QWidget::resizeEvent(event);
resizeDesktopWidget();
resizeDockIcon();
return QWidget::resizeEvent(event);
}
/**根据任务栏所在位置, 设置应用区域控件的大小
@ -634,17 +636,6 @@ bool MainPanelControl::eventFilter(QObject *watched, QEvent *event)
}
}
// fix:88133 在计算icon大小时m_pluginAreaWidget的数据错误
if (watched == m_pluginAreaWidget) {
switch (event->type()) {
case QEvent::Resize:
resizeDockIcon();
break;
default:
break;
}
}
// 高效模式下,鼠标移入移出'显示桌面'区域的处理
if (watched == m_desktopWidget) {
if (event->type() == QEvent::Enter) {