/usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/Components/Themes/Ambiance/SelectionCursorStyle.qml is in ubuntu-ui-toolkit-theme 0.1.46+14.04.20140408.1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | /*
* Copyright 2012 Canonical Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0
import Ubuntu.Components 0.1
EditorCursorStyle {
id: cursor
blinking: false
property bool startPin: (styledItem.positionProperty === "selectionStart")
property int cursorPosition: styledItem.editorItem[styledItem.positionProperty]
visible: true
function updatePosition(pos)
{
if (undefined === pos)
return;
var rect = styledItem.editorItem.positionToRectangle(pos);
x = rect.x;
y = rect.y;
}
onCursorPositionChanged: updatePosition(cursorPosition)
Rectangle {
id: pinBall
width: cursor.pinSize
height: width
radius: width
smooth: true
color: cursor.pinColor
anchors {
horizontalCenter: cursor.horizontalCenter
bottom: startPin ? cursor.top : undefined
top: !startPin ? cursor.bottom : undefined
}
MouseArea {
id: dragArea
anchors.fill: parent
anchors.margins: -cursor.pinSensingOffset
drag {
target: Item{}
axis: Drag.XandYAxis
onActiveChanged: {
if (drag.active) {
cursorStartX = cursor.x
cursorStartY = cursor.y
dragStartX = dragArea.drag.target.x
dragStartY = dragArea.drag.target.y
}
}
}
property real dragStartX
property real dragStartY
property real cursorStartX
property real cursorStartY
property real dragDX: dragArea.drag.target.x - dragArea.dragStartX
property real dragDY: dragArea.drag.target.y - dragArea.dragStartY
onDragDXChanged: updateEditorCursorPosition()
onDragDYChanged: updateEditorCursorPosition()
function updateEditorCursorPosition()
{
var pos = styledItem.editorItem.mapFromItem(styledItem, cursor.x, cursor.y + cursor.height / 2);
var dx = dragArea.cursorStartX + dragDX;
var dy = dragArea.cursorStartY + dragDY;
if (startPin)
styledItem.editorItem.select(styledItem.editorItem.positionAt(dx, dy), styledItem.editorItem.selectionEnd);
else
styledItem.editorItem.select(styledItem.editorItem.selectionStart, styledItem.editorItem.positionAt(dx, dy));
}
}
}
}
|