diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-12-11 09:54:32 +0200 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-12-14 13:41:43 +0000 |
commit | 91273471991b8f1097780f8171f19e7efc622be5 (patch) | |
tree | e1f1d67a0ca5485cf9998dcd7317529cd0be3d66 /examples | |
parent | c34a3ef3c5283df834577577bb0becd48470aa55 (diff) |
Remove AutoScroller component
The AutoScroller component is not well maintained and has not been validated
to be working correctly except for the example app.
This change moves the AutoScroller component to the example application.
There was also a bug in the component. References to the flickable components
were not cleared before updating.
Task-number: QTRD-3784
Change-Id: Ie15b4b994c016a9d0c065a2e469f928fec15d265
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Reviewed-by: Rainer Keller <rainer.keller@theqtcompany.com>
Diffstat (limited to 'examples')
4 files changed, 102 insertions, 0 deletions
diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard-b2qt.qml b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard-b2qt.qml index cdb18b97..50cf5d4b 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard-b2qt.qml +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/VirtualKeyboard-b2qt.qml @@ -124,6 +124,7 @@ Item { } } } + AutoScroller {} } } } diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/AutoScroller.qml b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/AutoScroller.qml new file mode 100644 index 00000000..33aab92a --- /dev/null +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/content/AutoScroller.qml @@ -0,0 +1,99 @@ +/****************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module. +** +** $QT_BEGIN_LICENSE:COMM$ +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** $QT_END_LICENSE$ +** +******************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Enterprise.VirtualKeyboard 2.0 + +Item { + + property var innerFlickable + property var outerFlickable + property var inputItem: InputContext.inputItem + + onInputItemChanged: { + innerFlickable = null + outerFlickable = null + if (inputItem !== null) { + var parent_ = inputItem.parent + while (parent_) { + if (parent_.maximumFlickVelocity) { + if (innerFlickable) { + outerFlickable = parent_ + break + } else { + innerFlickable = parent_ + } + } + parent_ = parent_.parent + } + delayedLoading.triggered() + } + } + + function ensureVisible(flickable) { + if (Qt.inputMethod.visible && inputItem && flickable && flickable.visible && flickable.interactive) { + + var verticallyFlickable = (flickable.flickableDirection === Flickable.HorizontalAndVerticalFlick || flickable.flickableDirection === Flickable.VerticalFlick + || (flickable.flickableDirection === Flickable.AutoFlickDirection && flickable.contentHeight > flickable.height)) + var horizontallyFlickable = (flickable.flickableDirection === Flickable.HorizontalAndVerticalFlick || flickable.flickableDirection === Flickable.HorizontalFlick + || (flickable.flickableDirection === Flickable.AutoFlickDirection && flickable.contentWidth > flickable.width)) + + if ((!verticallyFlickable && !horizontallyFlickable) || !inputItem.hasOwnProperty("cursorRectangle")) + return + + var cursorRectangle = flickable.contentItem.mapFromItem(inputItem, inputItem.cursorRectangle.x, inputItem.cursorRectangle.y) + + var oldContentY = flickable.contentY + if (verticallyFlickable) { + var scrollMarginVertical = (flickable && flickable.scrollMarginVertical) ? flickable.scrollMarginVertical : 10 + if (flickable.contentY >= cursorRectangle.y - scrollMarginVertical) + flickable.contentY = Math.max(0, cursorRectangle.y - scrollMarginVertical) + else if (flickable.contentY + flickable.height <= cursorRectangle.y + inputItem.cursorRectangle.height + scrollMarginVertical) + flickable.contentY = Math.min(flickable.contentHeight - flickable.height, cursorRectangle.y + inputItem.cursorRectangle.height - flickable.height + scrollMarginVertical) + } + if (horizontallyFlickable) { + var scrollMarginHorizontal = (flickable && flickable.scrollMarginHorizontal) ? flickable.scrollMarginHorizontal : 10 + if (flickable.contentX >= cursorRectangle.x - scrollMarginHorizontal) + flickable.contentX = Math.max(0, cursorRectangle.x - scrollMarginHorizontal) + else if (flickable.contentX + flickable.width <= cursorRectangle.x + inputItem.cursorRectangle.width + scrollMarginHorizontal) + flickable.contentX = Math.min(flickable.contentWidth - flickable.width, cursorRectangle.x + inputItem.cursorRectangle.width - flickable.width + scrollMarginHorizontal) + } + } + } + Timer { + id: delayedLoading + interval: 10 + onTriggered: { + ensureVisible(innerFlickable) + ensureVisible(outerFlickable) + } + } + Connections { + ignoreUnknownSignals: true + target: inputItem && !Qt.inputMethod.animating ? Qt.inputMethod : null + onKeyboardRectangleChanged: delayedLoading.triggered() + } + Connections { + ignoreUnknownSignals: true + target: inputItem && inputItem.activeFocus ? inputItem : null + onCursorRectangleChanged: delayedLoading.triggered() + } +} diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/demo.qrc b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/demo.qrc index bcb4a9d4..92258cbb 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/demo.qrc +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/demo.qrc @@ -2,6 +2,7 @@ <qresource prefix="/"> <file>VirtualKeyboard-b2qt.qml</file> <file>VirtualKeyboard.qml</file> + <file>content/AutoScroller.qml</file> <file>content/ScrollBar.qml</file> <file>content/TextArea.qml</file> <file>content/TextBase.qml</file> diff --git a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/virtualkeyboard.pro b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/virtualkeyboard.pro index b8396bdf..28cc4dcc 100644 --- a/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/virtualkeyboard.pro +++ b/examples/quick/enterprise/virtualkeyboard/virtualkeyboard/virtualkeyboard.pro @@ -21,6 +21,7 @@ RESOURCES += \ OTHER_FILES += \ VirtualKeyboard.qml \ VirtualKeyboard-b2qt.qml \ + content/AutoScroller.qml \ content/HandwritingModeButton.qml \ content/ScrollBar.qml \ content/TextArea.qml \ |