desktop: Use F11 as fullscreen shortcut

This patch removes Alt+Enter as the shortcut and replaces it with F11,
additionally the shortcut hint is added to the menu.
This commit is contained in:
Kamil Jarosz 2024-08-19 13:01:25 +02:00 committed by TÖRÖK Attila
parent 7178f3fd05
commit 4ef26ac9ba
2 changed files with 40 additions and 55 deletions

View File

@ -120,7 +120,6 @@ impl App {
let mut next_frame_time = None;
let mut minimized = false;
let mut modifiers = Modifiers::default();
let mut fullscreen_down = false;
if self.initial_movie_url.is_none() {
// No SWF provided on command line; show window with dummy movie immediately.
@ -333,47 +332,21 @@ impl App {
return;
}
// Handle fullscreen keyboard shortcuts: Alt+Return, Escape.
match event {
KeyEvent {
state: ElementState::Pressed,
logical_key: Key::Named(NamedKey::Enter),
..
} if modifiers.state().alt_key() => {
if !fullscreen_down {
if let Some(mut player) = self.player.get() {
player.update(|uc| {
uc.stage.toggle_display_state(uc);
});
}
}
fullscreen_down = true;
return;
}
KeyEvent {
state: ElementState::Released,
logical_key: Key::Named(NamedKey::Enter),
..
} if fullscreen_down => {
fullscreen_down = false;
}
KeyEvent {
state: ElementState::Pressed,
logical_key: Key::Named(NamedKey::Escape),
..
} => {
if let Some(mut player) = self.player.get() {
if player.is_playing() {
player.update(|uc| {
uc.stage.set_display_state(
uc,
StageDisplayState::Normal,
);
})
}
// Handle escaping from fullscreen.
if let KeyEvent {
state: ElementState::Pressed,
logical_key: Key::Named(NamedKey::Escape),
..
} = event
{
if let Some(mut player) = self.player.get() {
if player.is_playing() {
player.update(|uc| {
uc.stage
.set_display_state(uc, StageDisplayState::Normal);
})
}
}
_ => (),
}
let key_code = winit_to_ruffle_key_code(&event);

View File

@ -22,6 +22,13 @@ pub struct MenuBar {
}
impl MenuBar {
const SHORTCUT_FULLSCREEN: KeyboardShortcut = KeyboardShortcut::new(Modifiers::NONE, Key::F11);
const SHORTCUT_OPEN: KeyboardShortcut = KeyboardShortcut::new(Modifiers::COMMAND, Key::O);
const SHORTCUT_OPEN_ADVANCED: KeyboardShortcut =
KeyboardShortcut::new(Modifiers::COMMAND.plus(Modifiers::SHIFT), Key::O);
const SHORTCUT_PAUSE: KeyboardShortcut = KeyboardShortcut::new(Modifiers::COMMAND, Key::P);
const SHORTCUT_QUIT: KeyboardShortcut = KeyboardShortcut::new(Modifiers::COMMAND, Key::Q);
pub fn new(
event_loop: EventLoopProxy<RuffleEvent>,
default_launch_options: LaunchOptions,
@ -46,27 +53,34 @@ impl MenuBar {
egui::TopBottomPanel::top("menu_bar").show(egui_ctx, |ui| {
// TODO(mike): Make some MenuItem struct with shortcut info to handle this more cleanly.
if ui.ctx().input_mut(|input| {
input.consume_shortcut(&KeyboardShortcut::new(Modifiers::COMMAND | Modifiers::SHIFT, Key::O))
input.consume_shortcut(&Self::SHORTCUT_OPEN_ADVANCED)
}) {
dialogs.open_file_advanced();
}
if ui.ctx().input_mut(|input| {
input.consume_shortcut(&KeyboardShortcut::new(Modifiers::COMMAND, Key::O))
input.consume_shortcut(&Self::SHORTCUT_OPEN)
}) {
self.open_file(ui);
}
if ui.ctx().input_mut(|input| {
input.consume_shortcut(&KeyboardShortcut::new(Modifiers::COMMAND, Key::Q))
input.consume_shortcut(&Self::SHORTCUT_QUIT)
}) {
self.request_exit(ui);
}
if ui.ctx().input_mut(|input| {
input.consume_shortcut(&KeyboardShortcut::new(Modifiers::COMMAND, Key::P))
input.consume_shortcut(&Self::SHORTCUT_PAUSE)
}) {
if let Some(player) = &mut player {
player.set_is_playing(!player.is_playing());
}
}
if ui.ctx().input_mut(|input| {
input.consume_shortcut(&Self::SHORTCUT_FULLSCREEN)
}) {
if let Some(player) = &mut player {
player.set_fullscreen(true);
}
}
menu::bar(ui, |ui| {
self.file_menu(locale, ui, dialogs, player.is_some());
@ -75,8 +89,7 @@ impl MenuBar {
menu::menu_button(ui, text(locale, "controls-menu"), |ui| {
ui.add_enabled_ui(player.is_some(), |ui| {
let playing = player.as_ref().map(|p| p.is_playing()).unwrap_or_default();
let pause_shortcut = KeyboardShortcut::new(Modifiers::COMMAND, Key::P);
if Button::new(text(locale, if playing { "controls-menu-suspend" } else { "controls-menu-resume" })).shortcut_text(ui.ctx().format_shortcut(&pause_shortcut)).ui(ui).clicked() {
if Button::new(text(locale, if playing { "controls-menu-suspend" } else { "controls-menu-resume" })).shortcut_text(ui.ctx().format_shortcut(&Self::SHORTCUT_PAUSE)).ui(ui).clicked() {
ui.close_menu();
if let Some(player) = &mut player {
player.set_is_playing(!player.is_playing());
@ -179,20 +192,16 @@ impl MenuBar {
player_exists: bool,
) {
menu::menu_button(ui, text(locale, "file-menu"), |ui| {
let mut shortcut;
shortcut = KeyboardShortcut::new(Modifiers::COMMAND, Key::O);
if Button::new(text(locale, "file-menu-open-quick"))
.shortcut_text(ui.ctx().format_shortcut(&shortcut))
.shortcut_text(ui.ctx().format_shortcut(&Self::SHORTCUT_OPEN))
.ui(ui)
.clicked()
{
self.open_file(ui);
}
shortcut = KeyboardShortcut::new(Modifiers::COMMAND | Modifiers::SHIFT, Key::O);
if Button::new(text(locale, "file-menu-open-advanced"))
.shortcut_text(ui.ctx().format_shortcut(&shortcut))
.shortcut_text(ui.ctx().format_shortcut(&Self::SHORTCUT_OPEN_ADVANCED))
.ui(ui)
.clicked()
{
@ -267,9 +276,8 @@ impl MenuBar {
}
ui.separator();
shortcut = KeyboardShortcut::new(Modifiers::COMMAND, Key::Q);
if Button::new(text(locale, "file-menu-exit"))
.shortcut_text(ui.ctx().format_shortcut(&shortcut))
.shortcut_text(ui.ctx().format_shortcut(&Self::SHORTCUT_QUIT))
.ui(ui)
.clicked()
{
@ -358,7 +366,11 @@ impl MenuBar {
}
ui.separator();
if ui.button(text(locale, "view-menu-fullscreen")).clicked() {
if Button::new(text(locale, "view-menu-fullscreen"))
.shortcut_text(ui.ctx().format_shortcut(&Self::SHORTCUT_FULLSCREEN))
.ui(ui)
.clicked()
{
ui.close_menu();
if let Some(player) = player {
player.set_fullscreen(true);