@@ -57,27 +57,20 @@ Item {
58 property bool altPressed: false
58 property bool altPressed: false
59 property bool altTabPressed: false
59 property bool altTabPressed: false
62− Timer {
61+ property var powerButtonPressStart: 0
63− id: powerKeyLongPressTimer
64− interval: root.powerKeyLongPressTime
65− onTriggered: root.powerKeyLongPressed();
68− function onKeyPressed(event) {
64+ function onKeyPressed(event, currentEventTimestamp) {
69− if ((event.key == Qt.Key_PowerDown || event.key == Qt.Key_PowerOff)
65+ if (event.key == Qt.Key_PowerDown || event.key == Qt.Key_PowerOff) {
70− && (!event.isAutoRepeat || !powerKeyLongPressTimer.running)) {
66+ if (event.isAutoRepeat) {
71−
67+ if (d.powerButtonPressStart > 0
72− // FIXME: We only consider power key presses if the screen is
68+ && currentEventTimestamp - d.powerButtonPressStart >= powerKeyLongPressTime) {
73− // on because of bugs 1410830/1409003. The theory is that when
69+ d.powerButtonPressStart = 0;
74− // those bugs are encountered, there is a >2s delay between the
70+ root.powerKeyLongPressed();
75− // power press event and the power release event, which causes
71+ }
76− // the shutdown dialog to appear on resume. So to avoid that
72+ } else {
77− // symptom while we investigate the root cause, we simply won't
73+ d.powerButtonPressStart = currentEventTimestamp;
78− // initiate any dialogs when the screen is off.
79− if (Powerd.status === Powerd.On) {
80− powerKeyLongPressTimer.restart();
82 } else if ((event.key == Qt.Key_MediaTogglePlayPause || event.key == Qt.Key_MediaPlay) && !event.isAutoRepeat) {
75 } else if ((event.key == Qt.Key_MediaTogglePlayPause || event.key == Qt.Key_MediaPlay) && !event.isAutoRepeat) {
83 event.accepted = callManager.handleMediaKey(false);
76 event.accepted = callManager.handleMediaKey(false);
@@ -113,9 +106,9 @@ Item {
116− function onKeyReleased(event) {
109+ function onKeyReleased(event, currentEventTimestamp) {
117 if (event.key == Qt.Key_PowerDown || event.key == Qt.Key_PowerOff) {
110 if (event.key == Qt.Key_PowerDown || event.key == Qt.Key_PowerOff) {
118− powerKeyLongPressTimer.stop();
111+ d.powerButtonPressStart = 0;
119 event.accepted = true;
112 event.accepted = true;
120 } else if (event.key == Qt.Key_VolumeDown) {
113 } else if (event.key == Qt.Key_VolumeDown) {
121 if (!d.ignoreVolumeEvents) root.volumeDownTriggered();
114 if (!d.ignoreVolumeEvents) root.volumeDownTriggered();