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 }