pub use super::render::register_input_coordinator_modal;
use super::render::register_context_manager_modal;
use super::settings::ModalSettings;
use super::state::ModalState;
use super::types::{ModalRenderKind, ModalView};
use crate::docking::panels::DockPanel;
use crate::input::LayerId;
use crate::layout::LayoutManager;
use crate::render::RenderContext;
use crate::types::WidgetId;
pub fn register_layout_manager_modal<P: DockPanel>(
layout: &mut LayoutManager<P>,
render: &mut dyn RenderContext,
slot_id: &str,
id: impl Into<WidgetId>,
state: &mut ModalState,
view: &mut ModalView<'_>,
settings: &ModalSettings,
kind: &ModalRenderKind,
layer: &LayerId,
) -> Option<()> {
let rect = layout.rect_for_overlay(slot_id)?;
Some(register_context_manager_modal(
layout.ctx_mut(), render, id, rect, state, view, settings, kind, layer,
))
}
pub fn handle_modal_drag(
state: &mut ModalState,
cursor_pos: (f64, f64),
screen_size: (f64, f64),
modal_size: (f64, f64),
) {
state.update_drag(cursor_pos, screen_size, modal_size);
}