From f8f589b00248d1c56db696b16576486525893e8d Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 6 Nov 2009 17:06:13 +0100 Subject: Fixed -xsync configure option handling. Reviewed-by: trustme --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index aab520ecd0..683b7a0be2 100755 --- a/configure +++ b/configure @@ -914,7 +914,7 @@ while [ "$#" -gt 0 ]; do VAL=no ;; #Qt style yes options - -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config) + -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config) VAR=`echo $1 | sed "s,^-\(.*\),\1,"` VAL=yes ;; -- cgit v1.2.3 From 69f0cfbb9c609ac922a6d45a7ef3d75b59d23c25 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 6 Nov 2009 17:19:40 +0100 Subject: Dont create native winid when not required. When Windows doesn't support native gestures, we shouldn't create a native winid. Also, there is no reason to create winid on all ancestors. Reviewed-by: Trond --- src/gui/kernel/qwidget_win.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index 22a94b92a8..95ef1cf8d6 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -2033,9 +2033,12 @@ void QWidgetPrivate::registerTouchWindow() void QWidgetPrivate::winSetupGestures() { Q_Q(QWidget); - if (!q || !q->isVisible()) + if (!q || !q->isVisible() || !nativeGesturePanEnabled) return; + QApplicationPrivate *qAppPriv = QApplicationPrivate::instance(); + if (!qAppPriv->SetGestureConfig) + return; WId winid = q->internalWinId(); bool needh = false; @@ -2052,10 +2055,12 @@ void QWidgetPrivate::winSetupGestures() needv = (vbarpolicy == Qt::ScrollBarAlwaysOn || (vbarpolicy == Qt::ScrollBarAsNeeded && vbar->minimum() < vbar->maximum())); singleFingerPanEnabled = asa->d_func()->singleFingerPanEnabled; - if (!winid) + if (!winid) { + q->setAttribute(Qt::WA_DontCreateNativeAncestors); winid = q->winId(); // enforces the native winid on the viewport + } } - if (winid && qAppPriv->SetGestureConfig) { + if (winid) { GESTURECONFIG gc[1]; memset(gc, 0, sizeof(gc)); gc[0].dwID = GID_PAN; -- cgit v1.2.3 From d672ff5ddc23fe7c332d17b32378a00e21fad7b3 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 6 Nov 2009 17:26:43 +0100 Subject: Added a -no-native-gestures option for configure.exe The option allows to disable native Windows7 gestures since they require the creation of the native window handle. This partially disabled alien widgets concept and make window resizing slower and more flickery. Reviewed-by: Espen Riskedal --- src/gui/kernel/qapplication_win.cpp | 2 ++ src/gui/kernel/qgesturemanager.cpp | 4 +++- src/gui/kernel/qstandardgestures.cpp | 3 +-- src/gui/kernel/qwidget_win.cpp | 2 ++ src/gui/kernel/qwinnativepangesturerecognizer_win.cpp | 4 ++++ src/gui/kernel/qwinnativepangesturerecognizer_win_p.h | 4 ++++ tools/configure/configureapp.cpp | 11 +++++++++++ 7 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index 387c29b5d1..05e75a2cac 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -832,6 +832,7 @@ void qt_init(QApplicationPrivate *priv, int) priv->GetGestureInfo = (PtrGetGestureInfo) &TKGetGestureInfo; priv->GetGestureExtraArgs = (PtrGetGestureExtraArgs) &TKGetGestureExtraArguments; #elif !defined(Q_WS_WINCE) + #if !defined(QT_NO_NATIVE_GESTURES) priv->GetGestureInfo = (PtrGetGestureInfo)QLibrary::resolve(QLatin1String("user32"), "GetGestureInfo"); @@ -847,6 +848,7 @@ void qt_init(QApplicationPrivate *priv, int) priv->GetGestureConfig = (PtrGetGestureConfig)QLibrary::resolve(QLatin1String("user32"), "GetGestureConfig"); + #endif // QT_NO_NATIVE_GESTURES priv->BeginPanningFeedback = (PtrBeginPanningFeedback)QLibrary::resolve(QLatin1String("uxtheme"), "BeginPanningFeedback"); diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp index 375116f495..2a6e286f87 100644 --- a/src/gui/kernel/qgesturemanager.cpp +++ b/src/gui/kernel/qgesturemanager.cpp @@ -52,7 +52,7 @@ #ifdef Q_WS_MAC #include "qmacgesturerecognizer_mac_p.h" #endif -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN) && !defined(QT_NO_NATIVE_GESTURES) #include "qwinnativepangesturerecognizer_win_p.h" #endif @@ -94,7 +94,9 @@ QGestureManager::QGestureManager(QObject *parent) registerGestureRecognizer(new QTapGestureRecognizer); #endif #if defined(Q_OS_WIN) + #if !defined(QT_NO_NATIVE_GESTURES) registerGestureRecognizer(new QWinNativePanGestureRecognizer); + #endif #else registerGestureRecognizer(new QTapAndHoldGestureRecognizer); #endif diff --git a/src/gui/kernel/qstandardgestures.cpp b/src/gui/kernel/qstandardgestures.cpp index 0ea476400d..6b0441bd8d 100644 --- a/src/gui/kernel/qstandardgestures.cpp +++ b/src/gui/kernel/qstandardgestures.cpp @@ -56,7 +56,7 @@ QPanGestureRecognizer::QPanGestureRecognizer() QGesture *QPanGestureRecognizer::create(QObject *target) { if (target && target->isWidgetType()) { -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN) && !defined(QT_NO_NATIVE_GESTURES) // for scroll areas on Windows we want to use native gestures instead if (!qobject_cast(target->parent())) static_cast(target)->setAttribute(Qt::WA_AcceptTouchEvents); @@ -77,7 +77,6 @@ QGestureRecognizer::Result QPanGestureRecognizer::recognize(QGesture *state, const QTouchEvent *ev = static_cast(event); QGestureRecognizer::Result result; - switch (event->type()) { case QEvent::TouchBegin: { result = QGestureRecognizer::MayBeGesture; diff --git a/src/gui/kernel/qwidget_win.cpp b/src/gui/kernel/qwidget_win.cpp index 95ef1cf8d6..87f1cadc79 100644 --- a/src/gui/kernel/qwidget_win.cpp +++ b/src/gui/kernel/qwidget_win.cpp @@ -2032,6 +2032,7 @@ void QWidgetPrivate::registerTouchWindow() void QWidgetPrivate::winSetupGestures() { +#if !defined(QT_NO_NATIVE_GESTURES) Q_Q(QWidget); if (!q || !q->isVisible() || !nativeGesturePanEnabled) return; @@ -2080,6 +2081,7 @@ void QWidgetPrivate::winSetupGestures() qAppPriv->SetGestureConfig(winid, 0, sizeof(gc)/sizeof(gc[0]), gc, sizeof(gc[0])); } +#endif } QT_END_NAMESPACE diff --git a/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp b/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp index 5fceb13161..7dff54317e 100644 --- a/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp +++ b/src/gui/kernel/qwinnativepangesturerecognizer_win.cpp @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +#if !defined(QT_NO_NATIVE_GESTURES) + QWinNativePanGestureRecognizer::QWinNativePanGestureRecognizer() { } @@ -122,4 +124,6 @@ void QWinNativePanGestureRecognizer::reset(QGesture *state) QGestureRecognizer::reset(state); } +#endif // QT_NO_NATIVE_GESTURES + QT_END_NAMESPACE diff --git a/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h b/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h index 8fb0d50b17..7d53ed2b57 100644 --- a/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h +++ b/src/gui/kernel/qwinnativepangesturerecognizer_win_p.h @@ -57,6 +57,8 @@ QT_BEGIN_NAMESPACE +#if !defined(QT_NO_NATIVE_GESTURES) + class QWinNativePanGestureRecognizer : public QGestureRecognizer { public: @@ -67,6 +69,8 @@ public: void reset(QGesture *state); }; +#endif // QT_NO_NATIVE_GESTURES + QT_END_NAMESPACE #endif // QWINNATIVEPANGESTURERECOGNIZER_WIN_P_H diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index d8c2abd4f3..265bc5c6a0 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -351,6 +351,7 @@ Configure::Configure( int& argc, char** argv ) dictionary[ "INCREDIBUILD_XGE" ] = "auto"; dictionary[ "LTCG" ] = "no"; + dictionary[ "NATIVE_GESTURES" ] = "yes"; } Configure::~Configure() @@ -796,6 +797,10 @@ void Configure::parseCmdLine() dictionary[ "INCREDIBUILD_XGE" ] = "no"; else if( configCmdLine.at(i) == "-incredibuild-xge" ) dictionary[ "INCREDIBUILD_XGE" ] = "yes"; + else if( configCmdLine.at(i) == "-native-gestures" ) + dictionary[ "NATIVE_GESTURES" ] = "yes"; + else if( configCmdLine.at(i) == "-no-native-gestures" ) + dictionary[ "NATIVE_GESTURES" ] = "no"; #if !defined(EVAL) // Others --------------------------------------------------- else if (configCmdLine.at(i) == "-fpu" ) @@ -1774,6 +1779,8 @@ bool Configure::displayHelp() desc("STYLE_WINDOWSCE", "yes", "", " windowsce", ' '); desc("STYLE_WINDOWSMOBILE" , "yes", "", " windowsmobile", ' '); desc("STYLE_S60" , "yes", "", " s60\n", ' '); + desc("NATIVE_GESTURES", "no", "-no-native-gestures", "Do not use native gestures on Windows 7."); + desc("NATIVE_GESTURES", "yes", "-native-gestures", "Use native gestures on Windows 7."); /* We do not support -qconfig on Windows yet @@ -2521,6 +2528,9 @@ void Configure::generateOutputVars() if (dictionary["DECLARATIVE"] == "yes") qtConfig += "declarative"; + if( dictionary[ "NATIVE_GESTURES" ] == "yes" ) + qtConfig += "native-gestures"; + // We currently have no switch for QtSvg, so add it unconditionally. qtConfig += "svg"; @@ -2897,6 +2907,7 @@ void Configure::generateConfigfiles() if(dictionary["SCRIPTTOOLS"] == "no") qconfigList += "QT_NO_SCRIPTTOOLS"; if(dictionary["FREETYPE"] == "no") qconfigList += "QT_NO_FREETYPE"; if(dictionary["S60"] == "no") qconfigList += "QT_NO_S60"; + if(dictionary["NATIVE_GESTURES"] == "no") qconfigList += "QT_NO_NATIVE_GESTURES"; if(dictionary["OPENGL_ES_CM"] == "yes" || dictionary["OPENGL_ES_CL"] == "yes" || -- cgit v1.2.3 From 0d92333ec537821876f2d3365e3c1780cfb3c2ea Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 6 Nov 2009 19:29:52 +0100 Subject: Fixes compilation warning in qbrush Reviewed-by: Andreas --- src/gui/painting/qbrush.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp index 6f5d89208c..afe9986870 100644 --- a/src/gui/painting/qbrush.cpp +++ b/src/gui/painting/qbrush.cpp @@ -970,7 +970,7 @@ bool QBrush::operator==(const QBrush &b) const QDebug operator<<(QDebug dbg, const QBrush &b) { #ifndef Q_BROKEN_DEBUG_STREAM - char *BRUSH_STYLES[] = { + const char *BRUSH_STYLES[] = { "NoBrush", "SolidPattern", "Dense1Pattern", -- cgit v1.2.3 From 338fe3c15e90d62606806b0845bb621dd05153ae Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Fri, 6 Nov 2009 19:30:20 +0100 Subject: Improved xsync feature testing. Make sure we actually call any XSync function to test if those functions are available on the platform. On HPUX there is something wrong since X11 header files contain required function declarations, however we cannot link to them. Reviewed-by: Andreas --- config.tests/x11/xsync/xsync.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config.tests/x11/xsync/xsync.cpp b/config.tests/x11/xsync/xsync.cpp index a7175deb76..ed3ecf5177 100644 --- a/config.tests/x11/xsync/xsync.cpp +++ b/config.tests/x11/xsync/xsync.cpp @@ -48,5 +48,7 @@ int main(int, char **) XSyncValue value; (void*)&XSyncIntToValue; (void*)&XSyncCreateCounter; - return 0; + int a, b; + Status ret = XSyncInitialize(NULL, &a, &b); + return ret; } -- cgit v1.2.3 From d6a23684c8546fcd20ac032aa01985ca7ac69128 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Mon, 9 Nov 2009 12:28:58 +0100 Subject: Fixed pan gesture handlers in standard Qt widgets. Reviewed-by: Richard --- src/gui/widgets/qabstractscrollarea.cpp | 2 +- src/gui/widgets/qplaintextedit.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/widgets/qabstractscrollarea.cpp b/src/gui/widgets/qabstractscrollarea.cpp index 7d81d5a4e2..1a4ee2ba79 100644 --- a/src/gui/widgets/qabstractscrollarea.cpp +++ b/src/gui/widgets/qabstractscrollarea.cpp @@ -946,7 +946,7 @@ bool QAbstractScrollArea::event(QEvent *e) if (g) { QScrollBar *hBar = horizontalScrollBar(); QScrollBar *vBar = verticalScrollBar(); - QPointF delta = g->lastOffset(); + QPointF delta = g->delta(); if (!delta.isNull()) { if (QApplication::isRightToLeft()) delta.rx() *= -1; diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp index 0de7421f16..18adc6ce9d 100644 --- a/src/gui/widgets/qplaintextedit.cpp +++ b/src/gui/widgets/qplaintextedit.cpp @@ -1465,7 +1465,7 @@ bool QPlainTextEdit::event(QEvent *e) // QPlainTextEdit scrolls by lines only in vertical direction QFontMetrics fm(document()->defaultFont()); int lineHeight = fm.height(); - int newX = hBar->value() - g->lastOffset().x(); + int newX = hBar->value() - g->delta().x(); int newY = d->originalOffsetY - offset.y()/lineHeight; hBar->setValue(newX); vBar->setValue(newY); -- cgit v1.2.3