Closed podlaszczyk closed 3 years ago
import QtQuick 2.9 import QtQuick.Controls 2.3 import "qrc:/javascript/keyutil.js" as KeyUtil Item { id: buttonArea property alias acceptedButtons: mouseArea.acceptedButtons property alias cursorShape: mouseArea.cursorShape property alias hoverEnabled: mouseArea.hoverEnabled readonly property bool containsPress: containsMouse && pressed readonly property bool containsMouse: mouseArea.containsMouse || focusCue.show || inKeyPress // pressed is enabled either for a real mouse button press or for a key press. readonly property bool pressed: mouseArea.pressed || inKeyPress signal clicked() // (in the header) or put the border on the inside. property alias focusCueColor: focusCue.color property alias focusCueInside: focusCue.inside property alias focusCueForceRound: focusCue.forceRound property alias focusCueMargin: focusCue.borderMargin activeFocusOnTab: true MouseArea { id: mouseArea anchors.fill: parent onClicked: mouseClicked() } property var inKeyPress: null Keys.onPressed: { if(KeyUtil.handleButtonKeyEvent(event)) { focusCue.reveal() inKeyPress = event.key } } Keys.onReleased: { if(inKeyPress && inKeyPress === event.key) { event.accepted = true inKeyPress = null clicked() } } // Loss of focus cancels any key press. onActiveFocusChanged: { if(!activeFocus) inKeyPress = null } }