@@ -18,6 +18,7 @@ import QtQuick 2.4
1818import QtQuick.Layouts 1.1
1919import Utils 0.1
2020import Ubuntu.Components 1.3
21+import GlobalShortcut 1.0
2122
2223Item {
2324 id: root
@@ -27,9 +28,9 @@ Item {
2728
2829 readonly property bool valid: rowRepeater.count > 0
2930
30− property alias enableKeyFilter: altFilter.enabled
31+ property bool enableKeyFilter: false
3132
32− readonly property bool showRequested: altFilter.longAltPressed || d.currentItem != null
33+ readonly property bool showRequested: d.longAltPressed || d.currentItem != null
3334
3435 implicitWidth: row.width + units.gu(1)
3536 height: parent.height
@@ -38,36 +39,32 @@ Item {
3839 d.dismissAll();
3940 }
4041
41− WindowInputFilter {
42− id: altFilter
43− property bool altPressed: false
44− property bool longAltPressed: false
45− Keys.onPressed: {
46− if (event.key === Qt.Key_Alt && !event.isAutoRepeat) {
47− altPressed = true;
48− longAltPressed = false;
49− menuBarShortcutTimer.start();
50− return;
51− }
52− event.accepted = false;
42+ // Need 2 shortcuts because Alt press gives a different event to Alt release.
43+ GlobalShortcut {
44+ shortcut: Qt.Key_Alt|Qt.AltModifier
45+ active: enableKeyFilter
46+ onTriggered: {
47+ d.altPressed = true;
48+ d.longAltPressed = false;
49+ menuBarShortcutTimer.start();
5350 }
54− Keys.onReleased: {
55− if (event.key === Qt.Key_Alt) {
56− menuBarShortcutTimer.stop();
57− altPressed = false;
58− longAltPressed = false;
59− return;
60− }
61− event.accepted = false
51+ }
52+ GlobalShortcut {
53+ shortcut: Qt.Key_Alt
54+ active: enableKeyFilter
55+ onReleased: {
56+ menuBarShortcutTimer.stop();
57+ d.altPressed = false;
58+ d.longAltPressed = false;
6259 }
60+ }
6361
64− Timer {
65− id: menuBarShortcutTimer
66− interval: 200
67− repeat: false
68− onTriggered: {
69− altFilter.longAltPressed = true;
70− }
62+ Timer {
63+ id: menuBarShortcutTimer
64+ interval: 200
65+ repeat: false
66+ onTriggered: {
67+ d.longAltPressed = true;
7168 }
7269 }
7370
@@ -210,6 +207,9 @@ Item {
210207 property Item hoveredItem: null
211208 property Item prevCurrentItem: null
212209
210+ property bool altPressed: false
211+ property bool longAltPressed: false
212+
213213 signal dismissAll()
214214
215215 onCurrentItemChanged: {