Warning, /plasma/qqc2-breeze-style/style/qtquickcontrols/TextField.qml is written in an unsupported language. File is not indexed.

0001 // NOTE: checkthis
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.TextField {
0013     id: control
0014 
0015     property bool visualFocus: control.activeFocus && (
0016         control.focusReason == Qt.TabFocusReason ||
0017         control.focusReason == Qt.BacktabFocusReason ||
0018         control.focusReason == Qt.ShortcutFocusReason
0019     )
0020 
0021     implicitWidth: implicitBackgroundWidth + leftInset + rightInset
0022                    || Math.ceil(Math.max(contentWidth, placeholder.implicitWidth)) + leftPadding + rightPadding
0023     implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0024                              contentHeight + topPadding + bottomPadding,
0025                              placeholder.implicitHeight + topPadding + bottomPadding)
0026 
0027     padding: Kirigami.Units.mediumSpacing
0028     leftPadding: Impl.Units.mediumHorizontalPadding
0029     rightPadding: Impl.Units.mediumHorizontalPadding
0030 
0031     Kirigami.Theme.colorSet: Kirigami.Theme.View
0032     Kirigami.Theme.inherit: !background || !background.visible
0033 
0034     color: Kirigami.Theme.textColor
0035     selectionColor: Kirigami.Theme.highlightColor
0036     selectedTextColor: Kirigami.Theme.highlightedTextColor
0037     placeholderTextColor: Kirigami.Theme.disabledTextColor
0038     verticalAlignment: TextInput.AlignVCenter
0039     horizontalAlignment: TextInput.AlignLeft
0040 
0041     selectByMouse: true
0042     mouseSelectionMode: Kirigami.Settings.tabletMode ?
0043         TextInput.SelectWords : TextInput.SelectCharacters
0044 
0045     cursorDelegate: Loader {
0046         visible: control.activeFocus && !control.readOnly && control.selectionStart === control.selectionEnd
0047         active: visible
0048         sourceComponent: Impl.CursorDelegate { target: control }
0049     }
0050 
0051     Controls.Label {
0052         id: placeholder
0053         anchors {
0054             fill: parent
0055             leftMargin: control.leftPadding
0056             rightMargin: control.rightPadding
0057             topMargin: control.topPadding
0058             bottomMargin: control.bottomPadding
0059         }
0060 
0061         text: control.placeholderText
0062         font: control.font
0063         color: control.placeholderTextColor
0064         horizontalAlignment: control.horizontalAlignment
0065         verticalAlignment: control.verticalAlignment
0066         visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
0067         elide: Text.ElideRight
0068         renderType: control.renderType
0069     }
0070 
0071     background: Impl.TextEditBackground {
0072         control: control
0073         implicitWidth: 200
0074         visualFocus: control.visualFocus
0075     }
0076 
0077     Impl.CursorHandle {
0078         id: selectionStartHandle
0079         target: control
0080     }
0081 
0082     Impl.CursorHandle {
0083         id: selectionEndHandle
0084         target: control
0085         isSelectionEnd: true
0086     }
0087 
0088     MobileTextActionsToolBar {
0089         id: mobileTextActionsToolBar
0090         target: control
0091     }
0092 
0093     onActiveFocusChanged: {
0094         if (!activeFocus) {
0095             mobileTextActionsToolBar.visible = false
0096         } else if (Kirigami.Settings.tabletMode) {
0097             mobileTextActionsToolBar.visible = true
0098         }
0099     }
0100 
0101     onSelectedTextChanged: {
0102         if (Kirigami.Settings.tabletMode && selectedText.length > 0) {
0103             mobileTextActionsToolBar.item.open()
0104         }
0105     }
0106 
0107     onPressAndHold: {
0108         if (Kirigami.Settings.tabletMode) {
0109             forceActiveFocus();
0110             cursorPosition = positionAt(event.x, event.y);
0111             selectWord();
0112             mobileTextActionsToolBar.item.open()
0113         }
0114     }
0115 }