eframe: Mouse passthrough option (#2080)

This commit is contained in:
Michael Galos 2022-10-02 17:45:37 +11:00 committed by GitHub
parent 53ff83737b
commit 9901ad4bb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 0 deletions

View file

@ -270,6 +270,10 @@ pub struct NativeOptions {
/// You should avoid having a [`egui::CentralPanel`], or make sure its frame is also transparent. /// You should avoid having a [`egui::CentralPanel`], or make sure its frame is also transparent.
pub transparent: bool, pub transparent: bool,
/// On desktop: mouse clicks pass through the window, used for non-interactable overlays
/// Generally you would use this in conjunction with always_on_top
pub mouse_passthrough: bool,
/// Turn on vertical syncing, limiting the FPS to the display refresh rate. /// Turn on vertical syncing, limiting the FPS to the display refresh rate.
/// ///
/// The default is `true`. /// The default is `true`.
@ -389,6 +393,7 @@ impl Default for NativeOptions {
max_window_size: None, max_window_size: None,
resizable: true, resizable: true,
transparent: false, transparent: false,
mouse_passthrough: false,
vsync: true, vsync: true,
multisampling: 0, multisampling: 0,
depth_buffer: 0, depth_buffer: 0,

View file

@ -383,6 +383,9 @@ mod glow_integration {
integration.egui_ctx.set_visuals(theme.egui_visuals()); integration.egui_ctx.set_visuals(theme.egui_visuals());
gl_window.window().set_ime_allowed(true); gl_window.window().set_ime_allowed(true);
if self.native_options.mouse_passthrough {
gl_window.window().set_cursor_hittest(false).unwrap();
}
{ {
let event_loop_proxy = self.repaint_proxy.clone(); let event_loop_proxy = self.repaint_proxy.clone();