mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-13 14:52:19 +00:00
fix(location): a POI key held with Cmd, Ctrl or Alt runs no POI
The points-of-interest keys (Q/W/E/R/T while a city is expanded) are a second bare-key document listener, and it did not look at modifiers either: Alt+R or a delivered Ctrl+R picked the fourth POI and flew the camera there. It now leaves Cmd, Ctrl and Alt chords to the browser like the application shortcuts; Shift still counts as the key. The docs and the changelog entry say so.
This commit is contained in:
1 parent
8ac0d95f1b
commit
1d476c87ee
4 files changed
+17
-1
No files matched your search
@@ -88,6 +88,9 @@ export class LocationControls {
|
||||
event.target === elements.search
|
||||
)
|
||||
return;
|
||||
// As for the application shortcuts: Cmd+R, Ctrl+W, Alt+E and the like
|
||||
// belong to the browser and the system. Shift is not a chord.
|
||||
if (event.metaKey || event.ctrlKey || event.altKey) return;
|
||||
const index = POI_KEYS.indexOf(event.key.toUpperCase());
|
||||
if (index !== -1 && index < (cities[cityId]?.pois.length || 0))
|
||||
onPoi(cityId, index);
|
||||
|
||||
@@ -191,6 +191,16 @@ test('location and POI keys route once while form controls retain typing', () =>
|
||||
f.controls.reset();
|
||||
assert.deepEqual(f.calls, [['poi', 'a', 1], ['reset']]);
|
||||
});
|
||||
test('POI keys held with Cmd, Ctrl or Alt run no POI; Shift still does', () => {
|
||||
const f = fixture();
|
||||
const target = { matches: () => false };
|
||||
for (const modifier of ['metaKey', 'ctrlKey', 'altKey'])
|
||||
for (const key of ['q', 'w', 'r', 'R'])
|
||||
f.doc.fire('keydown', { key, target, [modifier]: true });
|
||||
assert.deepEqual(f.calls, []);
|
||||
f.doc.fire('keydown', { key: 'W', target, shiftKey: true });
|
||||
assert.deepEqual(f.calls, [['poi', 'a', 1]]);
|
||||
});
|
||||
test('typing clears a failed search error and closing the emptied field drops it too', () => {
|
||||
const f = fixture();
|
||||
f.elements.search.value = 'Pariss';
|
||||
|
||||
Reference in new issue
Block a user