2 * Copyright (C) 2015 Canonical Ltd.
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.
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.
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/>.
24 property ListView list
28 property: "bottomMargin"
30 restoreMode: Binding.RestoreBinding
33 function setMakeSureVisibleItem(item) {
34 d.previousVisibleHeight = d.visibleHeight;
35 d.makeSureVisibleItem = item;
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
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
52 previousVisibleHeight = visibleHeight;