Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/TextField.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org> 0003 SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 0004 0005 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 0006 */ 0007 0008 0009 import QtQuick 0010 import QtQuick.Window 0011 import QtQuick.Controls as Controls 0012 import QtQuick.Templates as T 0013 import org.kde.kirigami as Kirigami 0014 import org.kde.desktop.private as Private 0015 import org.kde.qqc2desktopstyle.private as StylePrivate 0016 0017 T.TextField { 0018 id: controlRoot 0019 0020 Kirigami.Theme.colorSet: Kirigami.Theme.View 0021 Kirigami.Theme.inherit: false 0022 0023 implicitWidth: Math.max(200, 0024 placeholderText ? placeholder.implicitWidth + leftPadding + rightPadding : 0) 0025 || contentWidth + leftPadding + rightPadding 0026 implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, 0027 background ? background.implicitHeight : 0, 0028 placeholder.implicitHeight + topPadding + bottomPadding) 0029 0030 padding: 6 0031 0032 placeholderTextColor: Kirigami.Theme.disabledTextColor 0033 color: enabled ? Kirigami.Theme.textColor : Kirigami.Theme.disabledTextColor 0034 selectionColor: Kirigami.Theme.highlightColor 0035 selectedTextColor: Kirigami.Theme.highlightedTextColor 0036 verticalAlignment: TextInput.AlignVCenter 0037 hoverEnabled: !Kirigami.Settings.tabletMode 0038 0039 selectByMouse: !Kirigami.Settings.tabletMode 0040 0041 cursorDelegate: Kirigami.Settings.tabletMode ? mobileCursor : null 0042 0043 Component { 0044 id: mobileCursor 0045 Private.MobileCursor { 0046 target: controlRoot 0047 } 0048 } 0049 0050 onFocusChanged: { 0051 if (focus) { 0052 Private.MobileTextActionsToolBar.controlRoot = controlRoot; 0053 } 0054 } 0055 0056 onTextChanged: Private.MobileTextActionsToolBar.shouldBeVisible = false; 0057 0058 onPressed: event => Private.MobileTextActionsToolBar.shouldBeVisible = true; 0059 0060 TapHandler { 0061 acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus 0062 acceptedButtons: Qt.LeftButton | Qt.RightButton 0063 0064 // unfortunately, taphandler's pressed event only triggers when the press is lifted 0065 // we need to use the longpress signal since it triggers when the button is first pressed 0066 longPressThreshold: 0 0067 onLongPressed: { 0068 Private.TextFieldContextMenu.targetClick( 0069 point, 0070 controlRoot, 0071 /*spellcheckHighlighterInstantiator*/ null, 0072 /*mousePosition*/ null, 0073 ); 0074 } 0075 } 0076 0077 Keys.onPressed: event => { 0078 // trigger if context menu button is pressed 0079 Private.TextFieldContextMenu.targetKeyPressed(event, controlRoot) 0080 0081 // Disable undo action for security reasons 0082 // See QTBUG-103934 0083 if ((echoMode === TextInput.PasswordEchoOnEdit || echoMode === TextInput.Password) && event.matches(StandardKey.Undo)) { 0084 event.accepted = true 0085 } 0086 } 0087 0088 onPressAndHold: event => { 0089 if (!Kirigami.Settings.tabletMode) { 0090 return; 0091 } 0092 forceActiveFocus(); 0093 cursorPosition = positionAt(event.x, event.y); 0094 selectWord(); 0095 } 0096 0097 Private.MobileCursor { 0098 target: controlRoot 0099 selectionStartHandle: true 0100 readonly property rect rect: controlRoot.positionToRectangle(controlRoot.selectionStart) 0101 x: rect.x + target.padding 0102 y: rect.y + target.padding 0103 } 0104 0105 Text { 0106 id: placeholder 0107 x: controlRoot.leftPadding 0108 y: controlRoot.topPadding 0109 width: controlRoot.width - controlRoot.leftPadding - controlRoot.rightPadding 0110 height: controlRoot.height - controlRoot.topPadding - controlRoot.bottomPadding 0111 0112 text: controlRoot.placeholderText 0113 font: controlRoot.font 0114 color: controlRoot.placeholderTextColor 0115 LayoutMirroring.enabled: false 0116 horizontalAlignment: controlRoot.effectiveHorizontalAlignment 0117 verticalAlignment: controlRoot.verticalAlignment 0118 visible: !controlRoot.length && !controlRoot.preeditText && (!controlRoot.activeFocus || controlRoot.horizontalAlignment !== Qt.AlignHCenter) 0119 elide: Text.ElideRight 0120 } 0121 0122 background: StylePrivate.StyleItem { 0123 control: controlRoot 0124 elementType: "edit" 0125 0126 sunken: true 0127 hasFocus: controlRoot.activeFocus 0128 hover: controlRoot.hovered 0129 } 0130 }