Scroll attachments if necessary when raise keyboard to keep focus

This commit is contained in:
David Rowe 2017-03-09 18:13:26 +13:00
parent 1fc6d82456
commit 66dded5e28
3 changed files with 34 additions and 19 deletions

View file

@ -42,4 +42,14 @@ ScrollingWindow {
AttachmentsContent { }
onKeyboardRaisedChanged: {
if (keyboardEnabled && keyboardRaised) {
var buttonHeight = 40; // Allow for New Attachment button.
var keyboardRaisedHeight = 200;
var delta = activator.mouseY - (root.height - keyboardRaisedHeight - buttonHeight);
if (delta > 0) {
content.scrollBy(delta);
}
}
}
}

View file

@ -191,24 +191,8 @@ Item {
}
}
// FIXME
/*
onKeyboardRaisedChanged: {
if (keyboardEnabled && keyboardRaised) {
// Scroll to item with focus if necessary.
var footerHeight = newAttachmentButton.height + buttonRow.height + 3 * hifi.dimensions.contentSpacing.y;
var delta = activator.mouseY
- (activator.height + activator.y - 200 - footerHeight - hifi.dimensions.controlLineHeight);
if (delta > 0) {
scrollView.scrollBy(delta);
} else {
// HACK: Work around for case where are 100% scrolled; stops window from erroneously scrolling to 100% when show keyboard.
scrollView.scrollBy(-1);
scrollView.scrollBy(1);
}
}
function scrollBy(delta) {
scrollView.scrollBy(delta);
}
*/
}

View file

@ -49,7 +49,7 @@ Item {
MouseArea {
// Defocuses any current control so that the keyboard gets hidden.
id: mouseArea
id: defocuser
anchors.fill: parent
propagateComposedEvents: true
acceptedButtons: Qt.AllButtons
@ -71,6 +71,27 @@ Item {
}
}
onKeyboardRaisedChanged: {
if (keyboardEnabled && keyboardRaised) {
var buttonsHeight = 120; // Allow for New Attachment plus Cancel & OK buttons.
var delta = activator.mouseY - (root.height - keyboard.raisedHeight - buttonsHeight);
if (delta > 0) {
attachments.scrollBy(delta);
}
}
}
MouseArea {
id: activator
anchors.fill: parent
propagateComposedEvents: true
enabled: true
acceptedButtons: Qt.AllButtons
onPressed: {
mouse.accepted = false;
}
}
Component.onCompleted: {
keyboardEnabled = HMD.active;
}