@@ -15,6 +15,8 @@
17import QtQuick 2.0
17import QtQuick 2.0
19 \brief A mapper for the physical keys on the device
21 \brief A mapper for the physical keys on the device
@@ -62,16 +64,33 @@ Item {
64 function onKeyPressed(key) {
66 function onKeyPressed(key) {
67+ var eventAccepted = true;
65 /* Determine what key was pressed */
69 /* Determine what key was pressed */
66 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
70 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
72+ // FIXME: We only consider power key presses if the screen is
73+ // on because of bugs 1410830/1409003. The theory is that when
74+ // those bugs are encountered, there is a >2s delay between the
75+ // power press event and the power release event, which causes
76+ // the shutdown dialog to appear on resume. So to avoid that
77+ // symptom while we investigate the root cause, we simply won't
78+ // initiate any dialogs when the screen is off.
79+ // This also prevents taking screenshots when the screen is off.
80+ if (Powerd.status === Powerd.On) {
67− if (!powerKeyLongPressTimer.running) {
81+ if (!powerKeyLongPressTimer.running) {
68− powerKeyLongPressTimer.restart();
82+ powerKeyLongPressTimer.restart();
84+ d.powerKeyPressed = true;
70− d.powerKeyPressed = true;
86+ } else if (key == Qt.Key_MediaTogglePlayPause || key == Qt.Key_MediaPlay) {
87+ eventAccepted = callManager.handleMediaKey(false);
71 } else if (key == Qt.Key_VolumeDown) {
88 } else if (key == Qt.Key_VolumeDown) {
72 d.volumeDownKeyPressed = true;
89 d.volumeDownKeyPressed = true;
73 } else if (key == Qt.Key_VolumeUp) {
90 } else if (key == Qt.Key_VolumeUp) {
74 d.volumeUpKeyPressed = true;
91 d.volumeUpKeyPressed = true;
93+ eventAccepted = false;
77 /* Determine how to handle it */
96 /* Determine how to handle it */
@@ -86,9 +105,12 @@ Item {
86 } else if (d.volumeUpKeyPressed) {
105 } else if (d.volumeUpKeyPressed) {
87 volumeUpPressed();
106 volumeUpPressed();
108+ return eventAccepted;
91 function onKeyReleased(key) {
111 function onKeyReleased(key) {
112+ var eventAccepted = true;
92 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
114 if (key == Qt.Key_PowerDown || key == Qt.Key_PowerOff) {
93 powerKeyLongPressTimer.stop();
115 powerKeyLongPressTimer.stop();
94 d.powerKeyPressed = false;
116 d.powerKeyPressed = false;
@@ -97,6 +119,9 @@ Item {
97 d.volumeDownKeyPressed = false;
119 d.volumeDownKeyPressed = false;
98 } else if (key == Qt.Key_VolumeUp) {
120 } else if (key == Qt.Key_VolumeUp) {
99 d.volumeUpKeyPressed = false;
121 d.volumeUpKeyPressed = false;
123+ eventAccepted = false;
125+ return eventAccepted;