aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/virtualkeyboard/basic/Basic.qml4
-rw-r--r--examples/virtualkeyboard/basic/basic-b2qt.qml3
-rw-r--r--examples/virtualkeyboard/basic/content/AutoScroller.qml87
-rw-r--r--src/virtualkeyboard/content/InputPanel.qml14
-rw-r--r--src/virtualkeyboard/content/components/Keyboard.qml11
-rw-r--r--src/virtualkeyboard/virtualkeyboard.pro1
6 files changed, 56 insertions, 64 deletions
diff --git a/examples/virtualkeyboard/basic/Basic.qml b/examples/virtualkeyboard/basic/Basic.qml
index 158a7826..f3cd59c3 100644
--- a/examples/virtualkeyboard/basic/Basic.qml
+++ b/examples/virtualkeyboard/basic/Basic.qml
@@ -41,7 +41,7 @@ Rectangle {
property bool handwritingInputPanelActive: false
Flickable {
- id: flickable
+ id: contentFlickable
anchors.fill: parent
contentWidth: content.width
contentHeight: content.height
@@ -54,7 +54,7 @@ Rectangle {
MouseArea {
id: content
- width: flickable.width
+ width: contentFlickable.width
height: textEditors.height + 24
onClicked: focus = true
diff --git a/examples/virtualkeyboard/basic/basic-b2qt.qml b/examples/virtualkeyboard/basic/basic-b2qt.qml
index 59c64b86..1ab93b27 100644
--- a/examples/virtualkeyboard/basic/basic-b2qt.qml
+++ b/examples/virtualkeyboard/basic/basic-b2qt.qml
@@ -43,8 +43,9 @@ Item {
height: Screen.width < Screen.height ? parent.width : parent.height
anchors.centerIn: parent
rotation: Screen.width < Screen.height ? 90 : 0
+
Basic {
- id: virtualKeyboard
+ id: contentContainer
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
diff --git a/examples/virtualkeyboard/basic/content/AutoScroller.qml b/examples/virtualkeyboard/basic/content/AutoScroller.qml
index d8d84a50..4893f133 100644
--- a/examples/virtualkeyboard/basic/content/AutoScroller.qml
+++ b/examples/virtualkeyboard/basic/content/AutoScroller.qml
@@ -31,77 +31,60 @@ import QtQuick 2.0
import QtQuick.VirtualKeyboard 2.1
Item {
+ property var flickable
+ readonly property var inputItem: InputContext.inputItem
- 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()
- }
- }
+ onInputItemChanged: delayedLoading.start()
function ensureVisible(flickable) {
- if (Qt.inputMethod.visible && inputItem && flickable && flickable.visible && flickable.interactive) {
+ if (!Qt.inputMethod.visible || !inputItem || !flickable || !flickable.visible/* || !flickable.interactive*/)
+ return;
- 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))
+ 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
+ if ((!verticallyFlickable && !horizontallyFlickable) || !inputItem.hasOwnProperty("cursorRectangle"))
+ return
- var cursorRectangle = flickable.contentItem.mapFromItem(inputItem, inputItem.cursorRectangle.x, inputItem.cursorRectangle.y)
+ 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 (verticallyFlickable) {
+ var scrollMarginVertical = flickable.scrollMarginVertical ? flickable.scrollMarginVertical : 10
+ if (flickable.contentY >= cursorRectangle.y - scrollMarginVertical) {
+ // The flickable is foo far down; move it up.
+ flickable.contentY = Math.max(0, cursorRectangle.y - scrollMarginVertical)
+ } else if (flickable.contentY + flickable.height <= cursorRectangle.y + inputItem.cursorRectangle.height + scrollMarginVertical) {
+ // The flickable is foo far up; move it down.
+ 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)
+ }
+ if (horizontallyFlickable) {
+ var scrollMarginHorizontal = flickable.scrollMarginHorizontal ? flickable.scrollMarginHorizontal : 10
+ if (flickable.contentX >= cursorRectangle.x - scrollMarginHorizontal) {
+ // The flickable is foo far down; move it up.
+ flickable.contentX = Math.max(0, cursorRectangle.x - scrollMarginHorizontal)
+ } else if (flickable.contentX + flickable.width <= cursorRectangle.x + inputItem.cursorRectangle.width + scrollMarginHorizontal) {
+ // The flickable is foo far up; move it down.
+ 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)
- }
+ onTriggered: ensureVisible(flickable)
}
Connections {
ignoreUnknownSignals: true
- target: inputItem && !Qt.inputMethod.animating ? Qt.inputMethod : null
- onKeyboardRectangleChanged: delayedLoading.triggered()
+ target: Qt.inputMethod
+ onKeyboardRectangleChanged: delayedLoading.start()
}
Connections {
ignoreUnknownSignals: true
- target: inputItem && inputItem.activeFocus ? inputItem : null
- onCursorRectangleChanged: delayedLoading.triggered()
+ target: inputItem
+ enabled: inputItem && inputItem.activeFocus
+ onCursorRectangleChanged: delayedLoading.start()
}
}
diff --git a/src/virtualkeyboard/content/InputPanel.qml b/src/virtualkeyboard/content/InputPanel.qml
index ec771c4e..e41756a7 100644
--- a/src/virtualkeyboard/content/InputPanel.qml
+++ b/src/virtualkeyboard/content/InputPanel.qml
@@ -111,6 +111,9 @@ Item {
/*! \internal */
property alias keyboard: keyboard
+ /*! \internal */
+ readonly property bool __isRootItem: inputPanel.parent != null && inputPanel.parent.parent == null
+
SelectionControl {
objectName: "selectionControl"
x: -parent.x
@@ -130,4 +133,15 @@ Item {
anchors.fill: keyboard
enabled: active
}
+
+ Binding {
+ target: InputContext
+ property: "keyboardRectangle"
+ value: mapToItem(null,
+ __isRootItem ? keyboard.x : x,
+ (__isRootItem ? keyboard.y : y) + keyboard.wordCandidateView.currentYOffset - (keyboard.shadowInputControl.visible ? keyboard.shadowInputControl.height : 0),
+ keyboard.width,
+ keyboard.height - keyboard.wordCandidateView.currentYOffset + (keyboard.shadowInputControl.visible ? keyboard.shadowInputControl.height : 0))
+ when: !InputContext.animating
+ }
}
diff --git a/src/virtualkeyboard/content/components/Keyboard.qml b/src/virtualkeyboard/content/components/Keyboard.qml
index 5a2e76eb..ce02d406 100644
--- a/src/virtualkeyboard/content/components/Keyboard.qml
+++ b/src/virtualkeyboard/content/components/Keyboard.qml
@@ -40,6 +40,8 @@ Item {
objectName: "keyboard"
property alias style: styleLoader.item
+ property alias wordCandidateView: wordCandidateView
+ property alias shadowInputControl: shadowInputControl
property var activeKey: null
property TouchPoint activeTouchPoint
property int localeIndex: -1
@@ -470,15 +472,6 @@ Item {
}
Binding {
target: InputContext
- property: "keyboardRectangle"
- value: Qt.rect(keyboard.x,
- keyboard.y + wordCandidateView.currentYOffset - (shadowInputControl.visible ? shadowInputControl.height : 0),
- keyboard.width,
- keyboard.height - wordCandidateView.currentYOffset + (shadowInputControl.visible ? shadowInputControl.height : 0))
- when: keyboard.active && !InputContext.animating
- }
- Binding {
- target: InputContext
property: "previewRectangle"
value: characterPreview.previewRect
when: characterPreview.visible
diff --git a/src/virtualkeyboard/virtualkeyboard.pro b/src/virtualkeyboard/virtualkeyboard.pro
index 3b4a2b96..73b2055a 100644
--- a/src/virtualkeyboard/virtualkeyboard.pro
+++ b/src/virtualkeyboard/virtualkeyboard.pro
@@ -5,6 +5,7 @@ QMAKE_DOCS = $$PWD/doc/qtvirtualkeyboard.qdocconf
include(doc/doc.pri)
QT += qml quick gui gui-private core-private
+CONFIG += qtquickcompiler
win32 {
CONFIG += no-pkg-config