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:
parent
19d24bbebe
commit
ddd5f6f4f6
12 changed files with 14 additions and 49 deletions
|
@ -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`.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -4,6 +4,7 @@ All notable changes to the `egui_glium` integration will be noted in this file.
|
|||
|
||||
## Unreleased
|
||||
* Simplify `EguiGlium` interface ([#871](https://github.com/emilk/egui/pull/871)).
|
||||
* Remove `EguiGlium::is_quit_event` ([#881](https://github.com/emilk/egui/pull/881)).
|
||||
|
||||
|
||||
## 0.15.0 - 2021-10-24
|
||||
|
|
|
@ -102,8 +102,9 @@ fn main() {
|
|||
glutin::event::Event::RedrawRequested(_) if !cfg!(windows) => redraw(),
|
||||
|
||||
glutin::event::Event::WindowEvent { event, .. } => {
|
||||
if egui_glium.is_quit_event(&event) {
|
||||
*control_flow = glium::glutin::event_loop::ControlFlow::Exit;
|
||||
use glutin::event::WindowEvent;
|
||||
if matches!(event, WindowEvent::CloseRequested | WindowEvent::Destroyed) {
|
||||
*control_flow = glutin::event_loop::ControlFlow::Exit;
|
||||
}
|
||||
|
||||
egui_glium.on_event(&event);
|
||||
|
|
|
@ -72,8 +72,9 @@ fn main() {
|
|||
glutin::event::Event::RedrawRequested(_) if !cfg!(windows) => redraw(),
|
||||
|
||||
glutin::event::Event::WindowEvent { event, .. } => {
|
||||
if egui_glium.is_quit_event(&event) {
|
||||
*control_flow = glium::glutin::event_loop::ControlFlow::Exit;
|
||||
use glutin::event::WindowEvent;
|
||||
if matches!(event, WindowEvent::CloseRequested | WindowEvent::Destroyed) {
|
||||
*control_flow = glutin::event_loop::ControlFlow::Exit;
|
||||
}
|
||||
|
||||
egui_glium.on_event(&event);
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
use crate::*;
|
||||
use egui::Color32;
|
||||
#[cfg(target_os = "windows")]
|
||||
use glium::glutin::platform::windows::WindowBuilderExtWindows;
|
||||
use glium::glutin;
|
||||
|
||||
impl epi::TextureAllocator for Painter {
|
||||
fn alloc_srgba_premultiplied(
|
||||
|
|
|
@ -97,8 +97,6 @@ pub use epi_backend::{run, NativeOptions};
|
|||
|
||||
pub use egui_winit;
|
||||
|
||||
use glium::glutin;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/// Convenience wrapper for using [`egui`] from a [`glium`] app.
|
||||
|
@ -127,11 +125,6 @@ impl EguiGlium {
|
|||
self.egui_winit.on_event(&self.egui_ctx, event)
|
||||
}
|
||||
|
||||
/// Is this a close event or a Cmd-Q/Alt-F4 keyboard command?
|
||||
pub fn is_quit_event(&self, event: &glutin::event::WindowEvent<'_>) -> bool {
|
||||
self.egui_winit.is_quit_event(event)
|
||||
}
|
||||
|
||||
/// Returns `needs_repaint` and shapes to draw.
|
||||
pub fn run(
|
||||
&mut self,
|
||||
|
|
|
@ -5,6 +5,7 @@ All notable changes to the `egui_glow` integration will be noted in this file.
|
|||
## Unreleased
|
||||
* Make winit/glutin an optional dependency ([#868](https://github.com/emilk/egui/pull/868)).
|
||||
* Simplify `EguiGlow` interface ([#871](https://github.com/emilk/egui/pull/871)).
|
||||
* Remove `EguiGlow::is_quit_event` ([#881](https://github.com/emilk/egui/pull/881)).
|
||||
|
||||
|
||||
## 0.15.0 - 2021-10-24
|
||||
|
|
|
@ -90,7 +90,8 @@ fn main() {
|
|||
glutin::event::Event::RedrawRequested(_) if !cfg!(windows) => redraw(),
|
||||
|
||||
glutin::event::Event::WindowEvent { event, .. } => {
|
||||
if egui_glow.is_quit_event(&event) {
|
||||
use glutin::event::WindowEvent;
|
||||
if matches!(event, WindowEvent::CloseRequested | WindowEvent::Destroyed) {
|
||||
*control_flow = glutin::event_loop::ControlFlow::Exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
use crate::*;
|
||||
#[cfg(target_os = "windows")]
|
||||
use glutin::platform::windows::WindowBuilderExtWindows;
|
||||
|
||||
struct RequestRepaintEvent;
|
||||
|
||||
|
|
|
@ -141,11 +141,6 @@ impl EguiGlow {
|
|||
self.egui_winit.on_event(&self.egui_ctx, event)
|
||||
}
|
||||
|
||||
/// Is this a close event or a Cmd-Q/Alt-F4 keyboard command?
|
||||
pub fn is_quit_event(&self, event: &glutin::event::WindowEvent<'_>) -> bool {
|
||||
self.egui_winit.is_quit_event(event)
|
||||
}
|
||||
|
||||
/// Returns `needs_repaint` and shapes to draw.
|
||||
pub fn run(
|
||||
&mut self,
|
||||
|
|
Loading…
Reference in a new issue