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
|
import QtQuick 2.15
import QtQuick.Controls 2.15
import Theme 1.0
Item {
id: control
property alias content: content
property alias text: content.text
property alias textFormat: content.textFormat
property alias background: scrollView.background
property Menu menu
ScrollView {
id: scrollView
anchors.fill: parent
contentWidth: availableWidth
clip: true
Flickable {
id: flickView
boundsBehavior: Flickable.StopAtBounds
contentWidth: scrollView.contentWidth;
contentHeight: content.implicitHeight;
TextEdit {
id: content
width: flickView.contentWidth
cursorVisible: false
persistentSelection: true
font.pixelSize: 16
font.letterSpacing: -1
font.family: "Share Tech Mono"
selectionColor: Theme.color.lightorange2
selectedTextColor: Theme.color.darkorange1
color: Theme.color.lightorange2
wrapMode: Text.Wrap
readOnly: true
selectByMouse: true
selectByKeyboard: true
onTextChanged: scrollToBottom();
}
}
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.IBeamCursor
acceptedButtons: Qt.RightButton
onClicked: function(mouse) {
if(control.menu && mouse.button === Qt.RightButton) control.menu.popup();
}
}
onVisibleChanged: if(visible) scrollToBottom()
function scrollToBottom() {
if(visible) {
const sb = scrollView.ScrollBar.vertical;
sb.position = 1.0 - sb.size;
}
}
}
|