Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/private/MobileCursor.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2018 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.1
0008 import org.kde.kirigami 2.5 as Kirigami
0009 
0010 Item {
0011     id: root
0012     width: 1 //<-important that this is actually a single device pixel
0013     height: Kirigami.Units.gridUnit
0014 
0015     property Item target
0016 
0017     property bool selectionStartHandle: false
0018 
0019     visible: Kirigami.Settings.tabletMode && ((target.activeFocus && !selectionStartHandle) || target.selectedText.length > 0)
0020 
0021     Rectangle {
0022         width: 3
0023         anchors {
0024             horizontalCenter: parent.horizontalCenter
0025             top: parent.top
0026             bottom: parent.bottom
0027         }
0028         color: Qt.tint(Kirigami.Theme.highlightColor, Qt.rgba(1,1,1,0.4))
0029         radius: width
0030         Rectangle {
0031             width: Math.round(Kirigami.Units.gridUnit/1.5)
0032             height: width
0033             visible: MobileTextActionsToolBar.shouldBeVisible
0034             anchors {
0035                 horizontalCenter: parent.horizontalCenter
0036                 verticalCenter: parent.bottom
0037             }
0038             radius: width
0039             color: Qt.tint(Kirigami.Theme.highlightColor, Qt.rgba(1,1,1,0.4))
0040         }
0041         MouseArea {
0042             anchors {
0043                 fill: parent
0044                 margins: -Kirigami.Units.gridUnit
0045             }
0046             preventStealing: true
0047             onPositionChanged: {
0048                 var pos = mapToItem(target, mouse.x, mouse.y);
0049                 pos = target.positionAt(pos.x, pos.y);
0050 
0051                 if (target.selectedText.length > 0) {
0052                     if (selectionStartHandle) {
0053                         target.select(Math.min(pos, target.selectionEnd - 1), target.selectionEnd);
0054                     } else {
0055                         target.select(target.selectionStart, Math.max(pos, target.selectionStart + 1));
0056                     }
0057                 } else {
0058                     target.cursorPosition = pos;
0059                 }
0060             }
0061         }
0062     }
0063 }
0064