#![allow(clippy::question_mark)]
#![allow(clippy::type_complexity)]
use rat_event::{ConsumedEvent, Outcome};
pub mod decorations;
mod dialog_stack;
mod window_list;
pub use dialog_stack::DialogStack;
pub use dialog_stack::handle_dialog_stack;
pub use window_list::Window;
pub use window_list::WindowFrameOutcome;
pub use window_list::WindowList;
pub use window_list::handle_window_list;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
#[must_use]
pub enum WindowControl<Event> {
Continue,
Unchanged,
Changed,
Event(Event),
Close(Event),
}
impl<Event> ConsumedEvent for WindowControl<Event> {
fn is_consumed(&self) -> bool {
!matches!(self, WindowControl::Continue)
}
}
impl<Event, T: Into<Outcome>> From<T> for WindowControl<Event> {
fn from(value: T) -> Self {
let r = value.into();
match r {
Outcome::Continue => WindowControl::Continue,
Outcome::Unchanged => WindowControl::Unchanged,
Outcome::Changed => WindowControl::Changed,
}
}
}
mod _private {
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct NonExhaustive;
}