Fix widget animations.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Mon, 16 Jul 2012 14:14:17 +0000 (16:14 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 17 Jul 2012 13:56:15 +0000 (15:56 +0200)
- Update opacity.
- Change Q_WS_WIN to Q_OS_WIN.

Task-number: QTBUG-25436
Change-Id: I76c1e4668dc2ee4f4d861da320c10aa05e57e804
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
src/widgets/kernel/qwidget.cpp
src/widgets/widgets/qeffects.cpp

index bc1d9da..ca5a410 100644 (file)
@@ -2061,31 +2061,17 @@ void QWidgetPrivate::updateIsOpaque()
 
 void QWidgetPrivate::setOpaque(bool opaque)
 {
-    if (isOpaque == opaque)
-        return;
-    isOpaque = opaque;
-#ifdef Q_WS_MAC
-    macUpdateIsOpaque();
-#endif
-#ifdef Q_WS_X11
-    x11UpdateIsOpaque();
-#endif
-#ifdef Q_WS_WIN
-    winUpdateIsOpaque();
-#endif
+    if (isOpaque != opaque) {
+        isOpaque = opaque;
+        updateIsTranslucent();
+    }
 }
 
 void QWidgetPrivate::updateIsTranslucent()
 {
-#ifdef Q_WS_MAC
-    macUpdateIsOpaque();
-#endif
-#ifdef Q_WS_X11
-    x11UpdateIsOpaque();
-#endif
-#ifdef Q_WS_WIN
-    winUpdateIsOpaque();
-#endif
+    Q_Q(QWidget);
+    if (QWindow *window = q->windowHandle())
+        window->setOpacity(isOpaque ? qreal(1.0) : qreal(0.0));
 }
 
 static inline void fillRegion(QPainter *painter, const QRegion &rgn, const QBrush &brush)
index 4617a2d..d4d3e98 100644 (file)
@@ -102,7 +102,7 @@ static QAlphaWidget* q_blend = 0;
 QAlphaWidget::QAlphaWidget(QWidget* w, Qt::WindowFlags f)
     : QWidget(QApplication::desktop()->screen(QApplication::desktop()->screenNumber(w)), f)
 {
-#ifndef Q_WS_WIN
+#ifndef Q_OS_WIN
     setEnabled(false);
 #endif
     setAttribute(Qt::WA_NoSystemBackground, true);
@@ -112,7 +112,7 @@ QAlphaWidget::QAlphaWidget(QWidget* w, Qt::WindowFlags f)
 
 QAlphaWidget::~QAlphaWidget()
 {
-#if defined(Q_WS_WIN) && !defined(Q_OS_WINCE)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
     // Restore user-defined opacity value
     if (widget)
         widget->setWindowOpacity(1);
@@ -270,10 +270,10 @@ void QAlphaWidget::render()
 
         if (widget) {
             if (!showWidget) {
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
                 setEnabled(true);
                 setFocus();
-#endif // Q_WS_WIN
+#endif // Q_OS_WIN
                 widget->hide();
             } else {
                 //Since we are faking the visibility of the widget 
@@ -383,7 +383,7 @@ static QRollEffect* q_roll = 0;
 QRollEffect::QRollEffect(QWidget* w, Qt::WindowFlags f, DirFlags orient)
     : QWidget(0, f), orientation(orient)
 {
-#ifndef Q_WS_WIN
+#ifndef Q_OS_WIN
     setEnabled(false);
 #endif
 
@@ -408,7 +408,7 @@ QRollEffect::QRollEffect(QWidget* w, Qt::WindowFlags f, DirFlags orient)
     if (orientation & (DownScroll|UpScroll))
         currentHeight = 0;
 
-    pm = widget->grab(QRect());
+    pm = widget->grab();
 }
 
 /*
@@ -538,7 +538,7 @@ void QRollEffect::scroll()
         qApp->removeEventFilter(this);
         if (widget) {
             if (!showWidget) {
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
                 setEnabled(true);
                 setFocus();
 #endif