diff options
author | Jason Barron <jbarron@trolltech.com> | 2009-04-30 13:24:55 (GMT) |
---|---|---|
committer | Jason Barron <jbarron@trolltech.com> | 2009-04-30 13:24:55 (GMT) |
commit | 32493498dcf3aa1ab9973aab381c5ca99d9ba9fd (patch) | |
tree | cb46e87a358289adbc5c58d74521676add50435e /src/gui/kernel/qwidget_s60.cpp | |
parent | b20ca123c521a1dae695045211c253c221ed604a (diff) | |
parent | 4b1137345a0bbfedc348b020ad0ad6e5720eb6d1 (diff) | |
download | Qt-32493498dcf3aa1ab9973aab381c5ca99d9ba9fd.zip Qt-32493498dcf3aa1ab9973aab381c5ca99d9ba9fd.tar.gz Qt-32493498dcf3aa1ab9973aab381c5ca99d9ba9fd.tar.bz2 |
Merge commit 'private/translucentWindows'
Conflicts:
src/gui/styles/qs60style_symbian.cpp
Diffstat (limited to 'src/gui/kernel/qwidget_s60.cpp')
-rw-r--r-- | src/gui/kernel/qwidget_s60.cpp | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index ec80a18..f424e93 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -99,7 +99,7 @@ void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove) // disable it for this particular widget. if (inTopLevelResize) tlwExtra->inTopLevelResize = false; - if (!isResize) + if (!isResize && maybeBackingStore()) moveRect(QRect(oldPos, oldSize), x - oldPos.x(), y - oldPos.y()); else invalidateBuffer_resizeHelper(oldPos, oldSize); @@ -202,8 +202,16 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO topExtra->rwindow->PointerFilter(EPointerFilterEnterExit | EPointerFilterMove | EPointerFilterDrag, 0); topExtra->rwindow->EnableVisibilityChangeEvents(); + + if (!isOpaque) { + RWindow *rwindow = static_cast<RWindow*>(topExtra->rwindow); + TDisplayMode gotDM = (TDisplayMode)rwindow->SetRequiredDisplayMode(EColor16MA); + if (rwindow->SetTransparencyAlphaChannel() == KErrNone) + rwindow->SetBackgroundColor(TRgb(255, 255, 255, 0)); + } } + id = (WId)control; setWinId(id); @@ -429,6 +437,30 @@ void QWidgetPrivate::setConstraints_sys() } + +void QWidgetPrivate::s60UpdateIsOpaque() +{ + Q_Q(QWidget); + + if (!q->testAttribute(Qt::WA_WState_Created) || !q->testAttribute(Qt::WA_TranslucentBackground)) + return; + + if ((data.window_flags & Qt::FramelessWindowHint) == 0) + return; + + if (!isOpaque) { + QTLWExtra *topExtra = topData(); + RWindow *rwindow = static_cast<RWindow*>(topExtra->rwindow); + TDisplayMode gotDM = (TDisplayMode)rwindow->SetRequiredDisplayMode(EColor16MA); + if (rwindow->SetTransparencyAlphaChannel() == KErrNone) + rwindow->SetBackgroundColor(TRgb(255, 255, 255, 0)); + } else { + QTLWExtra *topExtra = topData(); + RWindow *rwindow = static_cast<RWindow*>(topExtra->rwindow); + rwindow->SetTransparentRegion(TRegionFix<1>()); + } +} + CFbsBitmap* qt_pixmapToNativeBitmapL(QPixmap pixmap, bool invert) { CFbsBitmap* fbsBitmap = new(ELeave)CFbsBitmap; @@ -574,9 +606,9 @@ void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &r) TRANSPARENCY To a line in the wsini.ini file. */ -void QWidgetPrivate::setWindowOpacity_sys(qreal level) +void QWidgetPrivate::setWindowOpacity_sys(qreal) { - + // ### TODO: Implement uniform window transparency } void QWidgetPrivate::updateFrameStrut() |