This file is indexed.

/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));
            }
        }
    }
}