Fix for bad operator precedence causing right mouse button issues
authorAlex Wilson <alex.wilson@nokia.com>
Thu, 23 Feb 2012 01:57:18 +0000 (11:57 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 23 Feb 2012 03:06:04 +0000 (04:06 +0100)
Binary or (|) has higher operator precedence than a ternary in C,
causing the original expression here to function quite incorrectly
for anything other than the common left-mouse-button-only case. I
just added brackets -- feel free to change this to "if"s if you
think that would more clearly avoid this issue in future.

Change-Id: Ie20bd7e805b89a393794d3240fb0ae680b29ff64
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
src/quick/items/qquickitem_p.h

index c2cc7d0..fd02334 100644 (file)
@@ -830,8 +830,8 @@ private:
 
 Qt::MouseButtons QQuickItemPrivate::acceptedMouseButtons() const
 {
-    return extra.flag()?Qt::LeftButton:Qt::MouseButton(0) |
-           (extra.isAllocated()?extra->acceptedMouseButtons:Qt::MouseButtons(0));
+    return ((extra.flag() ? Qt::LeftButton : Qt::MouseButton(0)) |
+            (extra.isAllocated() ? extra->acceptedMouseButtons : Qt::MouseButtons(0)));
 }
 
 QSGContext *QQuickItemPrivate::sceneGraphContext() const