diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-05-26 10:45:09 (GMT) |
---|---|---|
committer | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-05-26 10:45:09 (GMT) |
commit | 37fff42b5c52a8e0c36d6834ac494ebabb4ea449 (patch) | |
tree | 285ad1bdee0a4835c8edce58e66c7f7dc4f058a9 /src/gui/kernel/qwidget_win.cpp | |
parent | b6d42a179c021e7544242edb82d8368af27c4dad (diff) | |
download | Qt-37fff42b5c52a8e0c36d6834ac494ebabb4ea449.zip Qt-37fff42b5c52a8e0c36d6834ac494ebabb4ea449.tar.gz Qt-37fff42b5c52a8e0c36d6834ac494ebabb4ea449.tar.bz2 |
Don't enable WM_TOUCH* messages on all windows
Only do it when a widget has actually set the Qt::WA_AcceptTouchEvents attribute
Diffstat (limited to 'src/gui/kernel/qwidget_win.cpp')
-rw-r--r-- | src/gui/kernel/qwidget_win.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index d381cb2..ef67237 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -497,13 +497,12 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO } } - // ### don't always register for touch events - if (id && QApplicationPrivate::RegisterTouchWindow && !desktop) - QApplicationPrivate::RegisterTouchWindow(id, 0); - q->setAttribute(Qt::WA_WState_Created); // accept move/resize events hd = 0; // no display context + if (q->testAttribute(Qt::WA_AcceptTouchEvents)) + registerTouchWindow(); + if (window) { // got window from outside if (IsWindowVisible(window)) q->setAttribute(Qt::WA_WState_Visible); @@ -2072,8 +2071,16 @@ void QWidgetPrivate::setModal_sys() { } +void QWidgetPrivate::registerTouchWindow() +{ + Q_Q(QWidget); - + // enable WM_TOUCH* messages on our window + if (q->testAttribute(Qt::WA_WState_Created) + && QApplicationPrivate::RegisterTouchWindow + && q->windowType() != Qt::Desktop) + QApplicationPrivate::RegisterTouchWindow(q->effectiveWinId(), 0); +} QT_END_NAMESPACE |