mod window;
use std::rc::Rc;
use gpui::{AnyWindowHandle, PlatformDisplay, PlatformWindow, WindowParams};
pub(crate) use window::HeadlessWindow;
pub(crate) struct HeadlessConnection {
window_lease: Rc<()>,
}
impl HeadlessConnection {
pub(crate) fn new() -> Self {
Self {
window_lease: Rc::new(()),
}
}
pub(crate) fn has_windows(&self) -> bool {
Rc::strong_count(&self.window_lease) > 1
}
pub(crate) fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>> {
Vec::new()
}
pub(crate) fn primary_display(&self) -> Option<Rc<dyn PlatformDisplay>> {
None
}
pub(crate) fn open_window(
&self,
_handle: AnyWindowHandle,
params: WindowParams,
) -> anyhow::Result<Box<dyn PlatformWindow>> {
Ok(Box::new(HeadlessWindow::new(
params,
self.window_lease.clone(),
)))
}
}