summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qwidget_s60.cpp
diff options
context:
space:
mode:
authorJason Barron <jbarron@trolltech.com>2009-04-30 13:24:55 (GMT)
committerJason Barron <jbarron@trolltech.com>2009-04-30 13:24:55 (GMT)
commit32493498dcf3aa1ab9973aab381c5ca99d9ba9fd (patch)
treecb46e87a358289adbc5c58d74521676add50435e /src/gui/kernel/qwidget_s60.cpp
parentb20ca123c521a1dae695045211c253c221ed604a (diff)
parent4b1137345a0bbfedc348b020ad0ad6e5720eb6d1 (diff)
downloadQt-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.cpp38
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()