diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2018-07-27 11:22:57 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2018-07-31 13:33:14 +0200 |
commit | 23c9d4c98f3c6729b56700edc1d7144b444b16db (patch) | |
tree | 27b20ccbf3c101dbc7bcb1e509882b6c7fc75962 /src/plugins/platforms/windows | |
parent | f69a5857d115786f44d053e68c36f74526020e82 (diff) | |
parent | 0ef66e98ccf4946a0e4513ab5fc157df0f0aca4e (diff) |
Merge branch '5.11' into dev
Conflicts:
qmake/library/qmakebuiltins.cpp
src/plugins/platforms/windows/qwindowstabletsupport.h
src/plugins/platforms/xcb/qxcbconnection.cpp
src/plugins/platforms/xcb/qxcbconnection.h
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
src/plugins/platforms/xcb/qxcbwindow.cpp
src/widgets/styles/qstylesheetstyle.cpp
tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
Done-With: Gatis Paeglis <gatis.paeglis@qt.io>
Change-Id: I000b0eb3cea2a5c7a99b95732bfdd41507cf916e
Diffstat (limited to 'src/plugins/platforms/windows')
3 files changed, 48 insertions, 29 deletions
diff --git a/src/plugins/platforms/windows/qwindowstabletsupport.cpp b/src/plugins/platforms/windows/qwindowstabletsupport.cpp index dad3e9df9f..2ab59b11ca 100644 --- a/src/plugins/platforms/windows/qwindowstabletsupport.cpp +++ b/src/plugins/platforms/windows/qwindowstabletsupport.cpp @@ -486,11 +486,8 @@ bool QWindowsTabletSupport::translateTabletPacketEvent() const int z = currentDevice == QTabletEvent::FourDMouse ? int(packet.pkZ) : 0; - // This code is to delay the tablet data one cycle to sync with the mouse location. - QPointF globalPosF = m_oldGlobalPosF; - const QPointF currentGlobalPosF = + QPointF globalPosF = m_devices.at(m_currentDevice).scaleCoordinates(packet.pkX, packet.pkY, virtualDesktopArea); - m_oldGlobalPosF = currentGlobalPosF; QWindow *target = QGuiApplicationPrivate::tabletDevicePoint(uniqueId).target; // Pass to window that grabbed it. @@ -498,10 +495,10 @@ bool QWindowsTabletSupport::translateTabletPacketEvent() const QPoint mouseLocation = QWindowsCursor::mousePosition(); if (m_state == PenProximity) { m_state = PenDown; - m_mode = (mouseLocation - currentGlobalPosF).manhattanLength() > m_absoluteRange + m_mode = (mouseLocation - globalPosF).manhattanLength() > m_absoluteRange ? MouseMode : PenMode; qCDebug(lcQpaTablet) << __FUNCTION__ << "mode=" << m_mode << "pen:" - << currentGlobalPosF << "mouse:" << mouseLocation; + << globalPosF << "mouse:" << mouseLocation; } if (m_mode == MouseMode) globalPosF = mouseLocation; diff --git a/src/plugins/platforms/windows/qwindowstabletsupport.h b/src/plugins/platforms/windows/qwindowstabletsupport.h index d98dbd4de7..d91701d6a5 100644 --- a/src/plugins/platforms/windows/qwindowstabletsupport.h +++ b/src/plugins/platforms/windows/qwindowstabletsupport.h @@ -150,7 +150,6 @@ private: bool m_tiltSupport = false; QVector<QWindowsTabletDeviceData> m_devices; int m_currentDevice = -1; - QPointF m_oldGlobalPosF; Mode m_mode = PenMode; State m_state = PenUp; }; diff --git a/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp b/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp index de06077890..fad83fb165 100644 --- a/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp +++ b/src/plugins/platforms/windows/uiautomation/qwindowsuiamainprovider.cpp @@ -364,7 +364,7 @@ HRESULT QWindowsUiaMainProvider::GetPropertyValue(PROPERTYID idProp, VARIANT *pR setVariantBool(accessible->state().focusable, pRetVal); break; case UIA_IsOffscreenPropertyId: - setVariantBool(false, pRetVal); + setVariantBool(accessible->state().offscreen, pRetVal); break; case UIA_IsContentElementPropertyId: setVariantBool(true, pRetVal); @@ -453,30 +453,53 @@ HRESULT QWindowsUiaMainProvider::Navigate(NavigateDirection direction, IRawEleme QAccessibleInterface *targetacc = nullptr; - switch (direction) { - case NavigateDirection_Parent: - targetacc = accessible->parent(); - if (targetacc && (targetacc->role() == QAccessible::Application)) { - targetacc = nullptr; // The app's children are considered top level objects. - } - break; - case NavigateDirection_FirstChild: - targetacc = accessible->child(0); - break; - case NavigateDirection_LastChild: - targetacc = accessible->child(accessible->childCount() - 1); - break; - case NavigateDirection_NextSibling: - case NavigateDirection_PreviousSibling: + if (direction == NavigateDirection_Parent) { if (QAccessibleInterface *parent = accessible->parent()) { - if (parent->isValid()) { - int index = parent->indexOfChild(accessible); - index += (direction == NavigateDirection_NextSibling) ? 1 : -1; - if (index >= 0 && index < parent->childCount()) - targetacc = parent->child(index); + // The Application's children are considered top level objects. + if (parent->isValid() && parent->role() != QAccessible::Application) { + targetacc = parent; + } + } + } else { + QAccessibleInterface *parent = nullptr; + int index = 0; + int incr = 1; + switch (direction) { + case NavigateDirection_FirstChild: + parent = accessible; + index = 0; + incr = 1; + break; + case NavigateDirection_LastChild: + parent = accessible; + index = accessible->childCount() - 1; + incr = -1; + break; + case NavigateDirection_NextSibling: + if ((parent = accessible->parent())) + index = parent->indexOfChild(accessible) + 1; + incr = 1; + break; + case NavigateDirection_PreviousSibling: + if ((parent = accessible->parent())) + index = parent->indexOfChild(accessible) - 1; + incr = -1; + break; + default: + Q_UNREACHABLE(); + break; + } + + if (parent && parent->isValid()) { + for (int count = parent->childCount(); index >= 0 && index < count; index += incr) { + if (QAccessibleInterface *child = parent->child(index)) { + if (child->isValid() && !child->state().invisible) { + targetacc = child; + break; + } + } } } - break; } if (targetacc) |