use bevy::prelude::*;
#[derive(Resource, PartialEq, Eq, Default)]
pub struct EguiWantsFocus {
pub prev: bool,
pub curr: bool,
}
pub fn check_egui_wants_focus(
mut contexts: bevy_egui::EguiContexts,
mut wants_focus: ResMut<EguiWantsFocus>,
windows: Query<Entity, With<Window>>,
) {
let new_wants_focus = windows.iter().any(|window| {
let ctx = contexts.ctx_for_window_mut(window);
ctx.wants_pointer_input() || ctx.wants_keyboard_input()
});
let new_res = EguiWantsFocus {
prev: wants_focus.curr,
curr: new_wants_focus,
};
wants_focus.set_if_neq(new_res);
}