use crate::app::window_state::WindowState;
use winit::dpi::PhysicalSize;
impl WindowState {
pub(super) fn gather_viewport_sizing(&self) -> Option<(PhysicalSize<u32>, usize, usize)> {
let renderer = self.renderer.as_ref()?;
let (cols, rows) = renderer.grid_size();
Some((renderer.size(), rows, cols))
}
pub(super) fn resolve_cursor_shader_hide(&mut self, is_alt_screen: bool) -> bool {
let cursor_shader_name: Option<String> = self.config.shader.cursor_shader.clone();
let hides_cursor_from_config = cursor_shader_name
.as_deref()
.and_then(|name| self.config.cursor_shader_configs.get(name))
.and_then(|cfg| cfg.hides_cursor);
let resolved_hides_cursor = hides_cursor_from_config
.or_else(|| {
cursor_shader_name
.as_deref()
.and_then(|name| self.shader_state.cursor_shader_metadata_cache.get(name))
.and_then(|meta| meta.defaults.hides_cursor)
})
.unwrap_or(self.config.shader.cursor_shader_hides_cursor);
let disable_in_alt_screen_from_config = cursor_shader_name
.as_deref()
.and_then(|name| self.config.cursor_shader_configs.get(name))
.and_then(|cfg| cfg.disable_in_alt_screen);
let resolved_disable_in_alt_screen = disable_in_alt_screen_from_config
.or_else(|| {
cursor_shader_name
.as_deref()
.and_then(|name| self.shader_state.cursor_shader_metadata_cache.get(name))
.and_then(|meta| meta.defaults.disable_in_alt_screen)
})
.unwrap_or(self.config.shader.cursor_shader_disable_in_alt_screen);
self.config.shader.cursor_shader_enabled
&& resolved_hides_cursor
&& !(resolved_disable_in_alt_screen && is_alt_screen)
}
}