use crate::sys;
use bitflags::bitflags;
bitflags! {
#[repr(transparent)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct FocusedFlags: i32 {
const NONE = sys::ImGuiFocusedFlags_None as i32;
const CHILD_WINDOWS = sys::ImGuiFocusedFlags_ChildWindows as i32;
const ROOT_WINDOW = sys::ImGuiFocusedFlags_RootWindow as i32;
const ANY_WINDOW = sys::ImGuiFocusedFlags_AnyWindow as i32;
const NO_POPUP_HIERARCHY = sys::ImGuiFocusedFlags_NoPopupHierarchy as i32;
const DOCK_HIERARCHY = sys::ImGuiFocusedFlags_DockHierarchy as i32;
const ROOT_AND_CHILD_WINDOWS = sys::ImGuiFocusedFlags_RootAndChildWindows as i32;
}
}
impl Default for FocusedFlags {
fn default() -> Self {
FocusedFlags::NONE
}
}
pub(super) fn validate_focused_flags(caller: &str, flags: FocusedFlags) {
let unsupported = flags.bits() & !FocusedFlags::all().bits();
assert!(
unsupported == 0,
"{caller} received unsupported ImGuiFocusedFlags bits: 0x{unsupported:X}"
);
}