Implement QWidgetPrivate::setWindowIcon_sys()
authorCorentin Jabot <corentinjabot@gmail.com>
Sat, 26 May 2012 00:12:06 +0000 (02:12 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 1 Jun 2012 23:14:14 +0000 (01:14 +0200)
 * The widgets icon are correctly set, through the QPA plugins
 * Removing QTLWExtra::iconPixmap that was only used in some platforms
in Qt 4.7, so if that wariable is still needed somewhere, it sould be
declared in the concerned QPA plugins

Change-Id: I85f50726cce3578b66c09c327767111f09935075
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
src/widgets/kernel/qwidget.cpp
src/widgets/kernel/qwidget_p.h
src/widgets/kernel/qwidget_qpa.cpp

index 1852c5f..454ffd5 100644 (file)
@@ -1336,7 +1336,8 @@ void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow)
 
     // need to force the resting of the icon after changing parents
     if (testAttribute(Qt::WA_SetWindowIcon))
-        d->setWindowIcon_sys(true);
+        d->setWindowIcon_sys();
+
     if (isWindow() && !d->topData()->iconText.isEmpty())
         d->setWindowIconText_helper(d->topData()->iconText);
     if (isWindow() && !d->topData()->caption.isEmpty())
@@ -1520,7 +1521,6 @@ void QWidgetPrivate::createTLExtra()
     if (!extra->topextra) {
         QTLWExtra* x = extra->topextra = new QTLWExtra;
         x->icon = 0;
-        x->iconPixmap = 0;
         x->backingStore = 0;
         x->sharedPainter = 0;
         x->incw = x->inch = 0;
@@ -1604,7 +1604,6 @@ void QWidgetPrivate::deleteExtra()
             deleteTLSysExtra();
             extra->topextra->backingStoreTracker.destroy();
             delete extra->topextra->icon;
-            delete extra->topextra->iconPixmap;
             delete extra->topextra->backingStore;
             delete extra->topextra;
         }
@@ -5660,9 +5659,6 @@ void QWidget::setWindowIcon(const QIcon &icon)
         d->extra->topextra->icon = new QIcon();
     *d->extra->topextra->icon = icon;
 
-    delete d->extra->topextra->iconPixmap;
-    d->extra->topextra->iconPixmap = 0;
-
     d->setWindowIcon_sys();
     d->setWindowIcon_helper();
 }
index 274a61e..7884496 100644 (file)
@@ -155,7 +155,6 @@ struct QTLWExtra {
 
     // Regular pointers (keep them together to avoid gaps on 64 bits architectures).
     QIcon *icon; // widget icon
-    QPixmap *iconPixmap;
     QWidgetBackingStoreTracker backingStoreTracker;
     QBackingStore *backingStore;
     QPainter *sharedPainter;
@@ -421,7 +420,7 @@ public:
     bool close_helper(CloseMode mode);
 
     void setWindowIcon_helper();
-    void setWindowIcon_sys(bool forceReset = false);
+    void setWindowIcon_sys();
     void setWindowOpacity_sys(qreal opacity);
     void adjustQuitOnCloseAttribute();
 
index 9d444fe..20f1384 100644 (file)
@@ -328,8 +328,11 @@ void QWidgetPrivate::setWindowTitle_sys(const QString &caption)
 
 }
 
-void QWidgetPrivate::setWindowIcon_sys(bool /*forceReset*/)
+void QWidgetPrivate::setWindowIcon_sys()
 {
+    Q_Q(QWidget);
+    if (QWindow *window = q->windowHandle())
+        window->setWindowIcon(q->windowIcon());
 }
 
 void QWidgetPrivate::setWindowIconText_sys(const QString &iconText)