Lomiri
Loading...
Searching...
No Matches
ListViewOSKScroller.qml
1/*
2 * Copyright (C) 2015 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 3.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17import QtQuick 2.15
18import QtQml 2.15
19import "../Components"
20
21Item {
22 id: root
23
24 property ListView list
25
26 Binding {
27 target: list
28 property: "bottomMargin"
29 value: d.bottomMargin
30 restoreMode: Binding.RestoreBinding
31 }
32
33 function setMakeSureVisibleItem(item) {
34 d.previousVisibleHeight = d.visibleHeight;
35 d.makeSureVisibleItem = item;
36 }
37
38 QtObject {
39 id: d
40 property var makeSureVisibleItem
41 property real previousVisibleHeight: 0
42 readonly property real visibleHeight: list.height - list.bottomMargin
43 readonly property real bottomMargin: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0
44
45 onVisibleHeightChanged: {
46 if (makeSureVisibleItem && makeSureVisibleItem.activeFocus && previousVisibleHeight > visibleHeight) {
47 var textAreaPos = makeSureVisibleItem.mapToItem(list, 0, 0);
48 if (textAreaPos.y + makeSureVisibleItem.height > visibleHeight) {
49 list.contentY += textAreaPos.y + makeSureVisibleItem.height - visibleHeight
50 }
51 }
52 previousVisibleHeight = visibleHeight;
53 }
54 }
55}