@@ -18,6 +18,7 @@ import QtQuick 2.4
18import QtQuick.Layouts 1.1
18import QtQuick.Layouts 1.1
19import Utils 0.1
19import Utils 0.1
20import Ubuntu.Components 1.3
20import Ubuntu.Components 1.3
21+import GlobalShortcut 1.0
@@ -27,9 +28,9 @@ Item {
28 readonly property bool valid: rowRepeater.count > 0
29 readonly property bool valid: rowRepeater.count > 0
30− property alias enableKeyFilter: altFilter.enabled
31+ property bool enableKeyFilter: false
32− readonly property bool showRequested: altFilter.longAltPressed || d.currentItem != null
33+ readonly property bool showRequested: d.longAltPressed || d.currentItem != null
34 implicitWidth: row.width + units.gu(1)
35 implicitWidth: row.width + units.gu(1)
35 height: parent.height
36 height: parent.height
@@ -38,36 +39,32 @@ Item {
38 d.dismissAll();
39 d.dismissAll();
41− WindowInputFilter {
42+ // Need 2 shortcuts because Alt press gives a different event to Alt release.
42− id: altFilter
43+ GlobalShortcut {
43− property bool altPressed: false
44+ shortcut: Qt.Key_Alt|Qt.AltModifier
44− property bool longAltPressed: false
45+ active: enableKeyFilter
45− Keys.onPressed: {
46+ onTriggered: {
46− if (event.key === Qt.Key_Alt && !event.isAutoRepeat) {
47− altPressed = true;
47+ d.altPressed = true;
48− longAltPressed = false;
48+ d.longAltPressed = false;
49− menuBarShortcutTimer.start();
49+ menuBarShortcutTimer.start();
52− event.accepted = false;
54− Keys.onReleased: {
51+ }
55− if (event.key === Qt.Key_Alt) {
53+ shortcut: Qt.Key_Alt
54+ active: enableKeyFilter
56− menuBarShortcutTimer.stop();
56+ menuBarShortcutTimer.stop();
57− altPressed = false;
57+ d.altPressed = false;
58− longAltPressed = false;
58+ d.longAltPressed = false;
61− event.accepted = false
65− id: menuBarShortcutTimer
63+ id: menuBarShortcutTimer
66− interval: 200
64+ interval: 200
67− repeat: false
65+ repeat: false
68− onTriggered: {
66+ onTriggered: {
69− altFilter.longAltPressed = true;
67+ d.longAltPressed = true;
@@ -210,6 +207,9 @@ Item {
210 property Item hoveredItem: null
207 property Item hoveredItem: null
211 property Item prevCurrentItem: null
208 property Item prevCurrentItem: null
210+ property bool altPressed: false
211+ property bool longAltPressed: false
213 signal dismissAll()
213 signal dismissAll()
215 onCurrentItemChanged: {
215 onCurrentItemChanged: {