use teksilo_core::DragPayload;
use crate::tab_widget::{TabBarDragData, TabHandle};
use super::model::{DockTabId, DockWidgetId};
#[derive(Debug, Clone, Copy)]
pub(crate) struct DockDragData {
pub dock_id: DockWidgetId,
}
#[derive(Debug, Clone, Copy)]
pub(crate) struct DockTabDragData {
pub tab_id: DockTabId,
pub source_side: super::geometry::DockSide,
}
pub(crate) fn dropped_dock_tab(p: &DragPayload) -> Option<DockTabId> {
if let Some(d) = p.get_typed::<DockTabDragData>() {
return Some(d.tab_id);
}
if let Some(tbd) = p.get_typed::<TabBarDragData<TabHandle>>() {
return Some(DockTabId::from_raw(tbd.source_id.raw().get()));
}
None
}
pub(crate) fn dropped_dock_widget(p: &DragPayload) -> Option<DockWidgetId> {
p.get_typed::<DockDragData>().map(|d| d.dock_id)
}