use super::config::WindowConfig;
use super::id::TeksiloWindowId;
use super::state::WindowState;
use crate::raw_handle::ParentHandle;
pub trait WindowOps {
fn open_window(&mut self, config: WindowConfig) -> TeksiloWindowId;
fn find_window(&self, string_id: &str) -> Option<TeksiloWindowId>;
fn window_state(&self, id: TeksiloWindowId) -> Option<WindowState>;
fn windows(&self) -> Vec<WindowState>;
fn focus_window(&mut self, id: TeksiloWindowId);
fn request_activation_token(
&mut self,
_id: TeksiloWindowId,
cb: Box<dyn FnOnce(Option<String>)>,
) {
cb(None);
}
fn request_activation_token_self(&mut self, cb: Box<dyn FnOnce(Option<String>)>) {
cb(None);
}
fn close_window_by_id(&mut self, id: TeksiloWindowId);
fn current_parent_handle(&self) -> Option<ParentHandle> {
None
}
fn set_ime_cursor_area(&mut self, _area: teksilo_canvas::Rect) {}
fn begin_os_drag(
&mut self,
_data: crate::drag_payload::OutboundDragData,
_image: Option<crate::drag_payload::DragImageData>,
) -> bool {
false
}
fn cancel_os_drag(&mut self) {}
}
pub struct NoopWindowOps;
impl WindowOps for NoopWindowOps {
fn open_window(&mut self, _config: WindowConfig) -> TeksiloWindowId {
panic!("open_window called on a standalone WidgetTree (no app context)");
}
fn find_window(&self, _string_id: &str) -> Option<TeksiloWindowId> {
None
}
fn window_state(&self, _id: TeksiloWindowId) -> Option<WindowState> {
None
}
fn windows(&self) -> Vec<WindowState> {
Vec::new()
}
fn focus_window(&mut self, _id: TeksiloWindowId) {}
fn close_window_by_id(&mut self, _id: TeksiloWindowId) {}
}