Commit 8ca7bb13 authored by David Edmundson's avatar David Edmundson Committed by Vlad Zahorodnii
Browse files

Accept keys in windowheap conditionally

In WindowHeap we currently always accept the keyboard event regardless
of whether the event was handled.

This will allow the event to propagate to other handlers


(cherry picked from commit a61719dd)
parent ac4fe1a8
Pipeline #206742 passed with stage
in 19 minutes and 46 seconds
......@@ -245,7 +245,9 @@ FocusScope {
const nextIndex = findNextItem(heap.selectedIndex, direction);
if (nextIndex != -1) {
heap.selectedIndex = nextIndex;
return true;
}
return false;
}
function selectLastItem(direction) {
......@@ -260,39 +262,43 @@ FocusScope {
}
if (last != -1) {
heap.selectedIndex = last;
return true;
}
return false;
}
onActiveFocusChanged: resetSelected();
Keys.onPressed: {
let handled = false;
switch (event.key) {
case Qt.Key_Up:
selectNextItem(WindowHeap.Direction.Up);
handled = selectNextItem(WindowHeap.Direction.Up);
break;
case Qt.Key_Down:
selectNextItem(WindowHeap.Direction.Down);
handled = selectNextItem(WindowHeap.Direction.Down);
break;
case Qt.Key_Left:
selectNextItem(WindowHeap.Direction.Left);
handled = selectNextItem(WindowHeap.Direction.Left);
break;
case Qt.Key_Right:
selectNextItem(WindowHeap.Direction.Right);
handled = selectNextItem(WindowHeap.Direction.Right);
break;
case Qt.Key_Home:
selectLastItem(WindowHeap.Direction.Left);
handled = selectLastItem(WindowHeap.Direction.Left);
break;
case Qt.Key_End:
selectLastItem(WindowHeap.Direction.Right);
handled = selectLastItem(WindowHeap.Direction.Right);
break;
case Qt.Key_PageUp:
selectLastItem(WindowHeap.Direction.Up);
handled = selectLastItem(WindowHeap.Direction.Up);
break;
case Qt.Key_PageDown:
selectLastItem(WindowHeap.Direction.Down);
handled = selectLastItem(WindowHeap.Direction.Down);
break;
case Qt.Key_Return:
case Qt.Key_Space:
handled = true;
let selectedItem = null;
if (heap.selectedIndex != -1) {
selectedItem = windowsRepeater.itemAt(heap.selectedIndex);
......@@ -317,6 +323,6 @@ FocusScope {
default:
return;
}
event.accepted = true;
event.accepted = handled;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment