Warning, /plasma/qqc2-breeze-style/style/qtquickcontrols/TextArea.qml is written in an unsupported language. File is not indexed.
0001 // NOTE: check this
0002 /* SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
0003 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0004 */
0005
0006 import QtQuick
0007 import QtQuick.Controls as Controls
0008 import QtQuick.Templates as T
0009 import org.kde.kirigami as Kirigami
0010 import org.kde.breeze.impl as Impl
0011
0012 T.TextArea {
0013 id: control
0014
0015 implicitWidth: Math.max(contentWidth + leftPadding + rightPadding,
0016 implicitBackgroundWidth + leftInset + rightInset,
0017 placeholder.implicitWidth + leftPadding + rightPadding)
0018 implicitHeight: Math.max(contentHeight + topPadding + bottomPadding,
0019 implicitBackgroundHeight + topInset + bottomInset,
0020 placeholder.implicitHeight + topPadding + bottomPadding)
0021 property bool visualFocus: control.activeFocus && (
0022 control.focusReason == Qt.TabFocusReason ||
0023 control.focusReason == Qt.BacktabFocusReason ||
0024 control.focusReason == Qt.ShortcutFocusReason
0025 )
0026
0027
0028 padding: Kirigami.Units.mediumSpacing
0029 property real horizontalPadding: Impl.Units.mediumHorizontalPadding
0030 property real verticalPadding: padding
0031 leftPadding: horizontalPadding
0032 rightPadding: horizontalPadding
0033 topPadding: verticalPadding
0034 bottomPadding: verticalPadding
0035
0036 Kirigami.Theme.colorSet: Kirigami.Theme.View
0037 Kirigami.Theme.inherit: background == null
0038
0039 color: Kirigami.Theme.textColor
0040 selectionColor: Kirigami.Theme.highlightColor
0041 selectedTextColor: Kirigami.Theme.highlightedTextColor
0042 placeholderTextColor: Kirigami.Theme.disabledTextColor
0043
0044 selectByMouse: true
0045 mouseSelectionMode: Kirigami.Settings.tabletMode ?
0046 TextEdit.SelectWords : TextEdit.SelectCharacters
0047
0048 cursorDelegate: Loader {
0049 visible: control.activeFocus && !control.readOnly && control.selectionStart === control.selectionEnd
0050 active: visible
0051 sourceComponent: Impl.CursorDelegate { target: control }
0052 }
0053
0054 Controls.Label {
0055 id: placeholder
0056 anchors {
0057 fill: parent
0058 leftMargin: control.leftPadding
0059 rightMargin: control.rightPadding
0060 topMargin: control.topPadding
0061 bottomMargin: control.bottomPadding
0062 }
0063
0064 text: control.placeholderText
0065 font: control.font
0066 color: control.placeholderTextColor
0067 horizontalAlignment: control.horizontalAlignment
0068 verticalAlignment: control.verticalAlignment
0069 visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
0070 elide: Text.ElideRight
0071 renderType: control.renderType
0072 }
0073
0074 background:Impl.TextEditBackground {
0075 control: control
0076 implicitWidth: 200
0077 visualFocus: control.visualFocus
0078 }
0079
0080 Impl.CursorHandle {
0081 id: selectionStartHandle
0082 target: control
0083 }
0084
0085 Impl.CursorHandle {
0086 id: selectionEndHandle
0087 target: control
0088 isSelectionEnd: true
0089 }
0090
0091 MobileTextActionsToolBar {
0092 id: mobileTextActionsToolBar
0093 target: control
0094 }
0095
0096 onActiveFocusChanged: {
0097 if (!activeFocus) {
0098 mobileTextActionsToolBar.visible = false
0099 } else if (Kirigami.Settings.tabletMode) {
0100 mobileTextActionsToolBar.visible = true
0101 }
0102 }
0103
0104 onSelectedTextChanged: {
0105 if (Kirigami.Settings.tabletMode && selectedText.length > 0) {
0106 mobileTextActionsToolBar.item.open()
0107 }
0108 }
0109
0110 onPressAndHold: {
0111 if (Kirigami.Settings.tabletMode && selectByMouse) {
0112 forceActiveFocus();
0113 cursorPosition = positionAt(event.x, event.y);
0114 selectWord();
0115 mobileTextActionsToolBar.item.open()
0116 }
0117 }
0118 }