feat(web): хоткей Ctrl+F для полноэкранного режима приложения

Кнопке «На весь экран» в верхней панели добавлен хоткей Ctrl+F. Хоткей `f`
полноэкранного просмотра больше не срабатывает на Ctrl+F: модификаторы
проверяются явно, поэтому сочетание свободно для кнопки каркаса.
This commit is contained in:
iu
2026-10-20 22:12:24 +03:00
parent 0a9e5274cf
commit 961dff15da
3 changed files with 31 additions and 4 deletions
+16 -2
View File
@@ -176,6 +176,17 @@
}
function onKeydown(ev: KeyboardEvent) {
// Ctrl+F — полноэкранный режим приложения (кнопка «На весь экран»).
if (
ev.ctrlKey &&
!ev.shiftKey &&
!ev.altKey &&
(ev.key === 'f' || ev.key === 'F' || ev.key === 'а' || ev.key === 'А')
) {
ev.preventDefault();
toggleFullscreen();
return;
}
if (ev.ctrlKey || ev.metaKey || ev.altKey || ev.repeat) return;
// `+`/`-` меняют размер миниатюр — как кнопки под регулятором.
@@ -275,8 +286,11 @@
<button
type="button"
class="text-text-muted hover:bg-bg-muted hover:text-text inline-flex items-center justify-center rounded-md p-1"
aria-label={isFullscreen ? 'Выйти из полноэкранного режима' : 'На весь экран'}
title={isFullscreen ? 'Выйти из полноэкранного режима' : 'На весь экран'}
aria-label={isFullscreen
? 'Выйти из полноэкранного режима (Ctrl+F)'
: 'На весь экран (Ctrl+F)'}
title={isFullscreen ? 'Выйти из полноэкранного режима (Ctrl+F)' : 'На весь экран (Ctrl+F)'}
aria-keyshortcuts="Control+f"
aria-pressed={isFullscreen}
onclick={toggleFullscreen}
>
+7 -1
View File
@@ -362,7 +362,13 @@
else toggleActual();
return;
}
if (ev.key === 'f' || ev.key === 'F' || ev.key === 'а' || ev.key === 'А') {
// `f` — полноэкранный просмотр; `Ctrl+F` отдан кнопке «На весь экран» каркаса.
if (
!ev.ctrlKey &&
!ev.metaKey &&
!ev.altKey &&
(ev.key === 'f' || ev.key === 'F' || ev.key === 'а' || ev.key === 'А')
) {
ev.preventDefault();
toggleViewerFullscreen();
return;
+8 -1
View File
@@ -479,12 +479,19 @@ Ctrl/Cmd-клик — добавить или убрать, Shift-клик —
Верхняя панель приложения и верхняя панель режима просмотра SHALL иметь минимальную высоту
(узкие отступы, иконочные органы управления), сохраняя все действия доступными. Верхняя панель
режима просмотра SHALL быть прозрачным оверлеем и SHALL не занимать место в раскладке,
увеличивая область фото.
увеличивая область фото. Кнопка «На весь экран» верхней панели приложения SHALL иметь хоткей
`Ctrl+F`; хоткей `f` полноэкранного просмотра SHALL срабатывать только без модификаторов, чтобы
`Ctrl+F` не перехватывался.
#### Scenario: Компактные верхние панели
- **WHEN** открыт список альбомов или режим просмотра фото
- **THEN** верхняя панель занимает минимум высоты, а её действия (навигация, полный экран, скачивание, удаление) доступны
#### Scenario: Полный экран по хоткею
- **WHEN** пользователь нажимает `Ctrl+F`
- **THEN** приложение переходит в полноэкранный режим или выходит из него, а в режиме просмотра
фото полноэкранным остаётся сам просмотр
#### Scenario: Прозрачная панель просмотра
- **WHEN** открыт режим просмотра фото
- **THEN** верхняя панель нарисована поверх фото без фона и не уменьшает область изображения