51 lines
915 B
QML
51 lines
915 B
QML
|
// SPDX-License-Identifier: Unlicense
|
||
|
|
||
|
import QtQuick 2.12
|
||
|
import QtQuick.Controls 2.13
|
||
|
|
||
|
Label {
|
||
|
id: control
|
||
|
|
||
|
property var definition
|
||
|
property alias value: control.text
|
||
|
|
||
|
Keys.onPressed: {
|
||
|
if (event.text === definition.key) {
|
||
|
popup.open()
|
||
|
event.accepted = true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function set(val) { value = val || '' }
|
||
|
|
||
|
elide: Text.ElideRight
|
||
|
|
||
|
Popup {
|
||
|
id: popup
|
||
|
|
||
|
width: control.width
|
||
|
height: control.height
|
||
|
padding: 0
|
||
|
|
||
|
onOpened: {
|
||
|
input.text = value
|
||
|
input.forceActiveFocus()
|
||
|
}
|
||
|
|
||
|
TextInput {
|
||
|
id: input
|
||
|
|
||
|
clip: true
|
||
|
padding: 2
|
||
|
topPadding: 0
|
||
|
bottomPadding: 0
|
||
|
width: parent.width
|
||
|
|
||
|
onAccepted: {
|
||
|
value = input.text.trim()
|
||
|
popup.close()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|