From 119a4ec717995fb3fcd70ca596d203bca4b53cc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E5=8D=9A=E6=96=87?= Date: Tue, 6 Jun 2017 11:06:02 +0800 Subject: [PATCH] fix wm icon geometry error Change-Id: I6c93e65369fc88915efa459d9223e427bdf8542f --- frame/item/appitem.cpp | 20 ++++++++------------ frame/item/appitem.h | 1 - 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index bd09d4d52..656e2dd77 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -102,16 +102,12 @@ const QString AppItem::appId() const // window behaviors like minimization. void AppItem::updateWindowIconGeometries() { - QRect rect(mapToGlobal(QPoint(0, 0)), - mapToGlobal(QPoint(width(),height()))); + const QRect r(mapToGlobal(QPoint(0, 0)), + mapToGlobal(QPoint(width(),height()))); + auto *xcb_misc = XcbMisc::instance(); - if (rect != m_lastGlobalGeometry) { - QList winIds = m_titles.keys(); - for (quint32 winId : winIds) { - XcbMisc::instance()->set_window_icon_geometry(winId, rect); - } - m_lastGlobalGeometry = rect; - } + for (auto it(m_titles.cbegin()); it != m_titles.cend(); ++it) + xcb_misc->set_window_icon_geometry(it.key(), r); } void AppItem::setIconBaseSize(const int size) @@ -247,9 +243,6 @@ void AppItem::paintEvent(QPaintEvent *e) painter.drawPixmap(iconPos, pixmap); else painter.drawPixmap(iconPos, ImageFactory::lighterEffect(pixmap)); - - // Update the window icon geometry when the icon is changed. - m_updateIconGeometryTimer->start(); } void AppItem::mouseReleaseEvent(QMouseEvent *e) @@ -460,6 +453,7 @@ void AppItem::updateTitle() { m_titles = m_itemEntry->titles(); m_appPreviewTips->setWindowInfos(m_titles); + m_updateIconGeometryTimer->start(); update(); } @@ -479,6 +473,8 @@ void AppItem::refershIcon() } update(); + + m_updateIconGeometryTimer->start(); } void AppItem::activeChanged() diff --git a/frame/item/appitem.h b/frame/item/appitem.h index 1e90dc48b..d3621cfeb 100644 --- a/frame/item/appitem.h +++ b/frame/item/appitem.h @@ -74,7 +74,6 @@ private: QPixmap m_activeHorizontalIndicator; QPixmap m_activeVerticalIndicator; - QRect m_lastGlobalGeometry; QTimer *m_updateIconGeometryTimer; static int IconBaseSize;