use crate::input::core::coordinator::{InputCoordinator, LayerId};
use crate::input::core::sense::Sense;
use crate::input::core::widget_kind::WidgetKind;
use crate::types::{Rect, WidgetId};
pub fn register_tab(
coord: &mut InputCoordinator,
tab_id: impl Into<WidgetId>,
rect: Rect,
sense: Sense,
close_btn_rect: Option<Rect>,
) -> WidgetId {
let id = coord.register_composite(tab_id, WidgetKind::Tab, rect, sense, &LayerId::main());
if let Some(close_rect) = close_btn_rect {
let close_id = format!("{}:close", id.0);
coord.register_child(&id, close_id, WidgetKind::Button, close_rect, Sense::CLICK);
}
id
}
pub fn register_tab_on_layer(
coord: &mut InputCoordinator,
tab_id: impl Into<WidgetId>,
rect: Rect,
sense: Sense,
close_btn_rect: Option<Rect>,
layer: &LayerId,
) -> WidgetId {
let id = coord.register_composite(tab_id, WidgetKind::Tab, rect, sense, layer);
if let Some(close_rect) = close_btn_rect {
let close_id = format!("{}:close", id.0);
coord.register_child(&id, close_id, WidgetKind::Button, close_rect, Sense::CLICK);
}
id
}
pub fn register_chrome_tab(
coord: &mut InputCoordinator,
tab_id: impl Into<WidgetId>,
rect: Rect,
close_btn_rect: Option<Rect>,
) -> WidgetId {
register_tab(coord, tab_id, rect, Sense::CLICK | Sense::HOVER, close_btn_rect)
}
pub fn register_sidebar_tab(
coord: &mut InputCoordinator,
tab_id: impl Into<WidgetId>,
rect: Rect,
layer: &LayerId,
) -> WidgetId {
register_tab_on_layer(coord, tab_id, rect, Sense::CLICK | Sense::HOVER, None, layer)
}
pub fn register_horizontal_tab(
coord: &mut InputCoordinator,
tab_id: impl Into<WidgetId>,
rect: Rect,
close_btn_rect: Option<Rect>,
layer: &LayerId,
) -> WidgetId {
register_tab_on_layer(coord, tab_id, rect, Sense::CLICK | Sense::HOVER, close_btn_rect, layer)
}