1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-31 13:50:04 -04:00

winit: don't explicitly handle Cmd-Q and Alt-F4 (#881)

Closes https://github.com/emilk/egui/issues/877

Still a problem: https://github.com/rust-windowing/winit/issues/1998
This commit is contained in:
Emil Ernerfeldt
2021-11-07 20:58:02 +01:00
committed by GitHub
parent 19d24bbebe
commit ddd5f6f4f6
12 changed files with 14 additions and 49 deletions

View File

@@ -4,12 +4,9 @@ All notable changes to the `egui-winit` integration will be noted in this file.
## Unreleased
### Added ⭐
* Add helper `EpiIntegration` ([#871](https://github.com/emilk/egui/pull/871)).
### Fixed 🐛
* Fix shift key getting stuck enabled with the X11 option `shift:both_capslock` enabled ([#849](https://github.com/emilk/egui/pull/849)).
* Remove `State::is_quit_event` and `State::is_quit_shortcut` ([#881](https://github.com/emilk/egui/pull/881)).
## 0.15.0 - 2021-10-24
First stand-alone release. Previously part of `egui_glium`.

View File

@@ -268,7 +268,8 @@ impl EpiIntegration {
}
pub fn on_event(&mut self, event: &winit::event::WindowEvent<'_>) {
self.quit |= self.egui_winit.is_quit_event(event);
use winit::event::WindowEvent;
self.quit |= matches!(event, WindowEvent::CloseRequested | WindowEvent::Destroyed);
self.egui_winit.on_event(&self.egui_ctx, event);
}

View File

@@ -533,29 +533,6 @@ impl State {
}
}
/// Returns `true` if Alt-F4 (windows/linux) or Cmd-Q (Mac)
pub fn is_quit_shortcut(&self, input: &winit::event::KeyboardInput) -> bool {
if cfg!(target_os = "macos") {
input.state == winit::event::ElementState::Pressed
&& self.egui_input.modifiers.mac_cmd
&& input.virtual_keycode == Some(winit::event::VirtualKeyCode::Q)
} else {
input.state == winit::event::ElementState::Pressed
&& self.egui_input.modifiers.alt
&& input.virtual_keycode == Some(winit::event::VirtualKeyCode::F4)
}
}
/// Returns `true` if this a close event or a Cmd-Q/Alt-F4 keyboard command.
pub fn is_quit_event(&self, event: &winit::event::WindowEvent<'_>) -> bool {
use winit::event::WindowEvent;
match event {
WindowEvent::CloseRequested | WindowEvent::Destroyed => true,
WindowEvent::KeyboardInput { input, .. } => self.is_quit_shortcut(input),
_ => false,
}
}
fn set_cursor_icon(&mut self, window: &winit::window::Window, cursor_icon: egui::CursorIcon) {
// prevent flickering near frame boundary when Windows OS tries to control cursor icon for window resizing
if self.current_cursor_icon == cursor_icon {