Commit a61719dd 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
parent e726779c
Pipeline #206741 passed with stage
in 12 minutes and 56 seconds
......@@ -244,7 +244,9 @@ FocusScope {
const nextIndex = findNextItem(heap.selectedIndex, direction);
if (nextIndex != -1) {
heap.selectedIndex = nextIndex;
return true;
}
return false;
}
function selectLastItem(direction) {
......@@ -259,39 +261,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);
......@@ -316,6 +322,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