use crate::{AppWindowId, DockNodeId, DropZone, PanelKey, Rect, WindowAnchor};
#[derive(Debug, Clone, PartialEq)]
pub enum DockOp {
SetActiveTab {
tabs: DockNodeId,
active: usize,
},
ClosePanel {
window: AppWindowId,
panel: PanelKey,
},
MovePanel {
source_window: AppWindowId,
panel: PanelKey,
target_window: AppWindowId,
target_tabs: DockNodeId,
zone: DropZone,
insert_index: Option<usize>,
},
MovePanelToEmptyDockSpace {
source_window: AppWindowId,
panel: PanelKey,
target_window: AppWindowId,
},
MoveTabs {
source_window: AppWindowId,
source_tabs: DockNodeId,
target_window: AppWindowId,
target_tabs: DockNodeId,
zone: DropZone,
insert_index: Option<usize>,
},
MoveTabsToEmptyDockSpace {
source_window: AppWindowId,
source_tabs: DockNodeId,
target_window: AppWindowId,
},
FloatPanelToWindow {
source_window: AppWindowId,
panel: PanelKey,
new_window: AppWindowId,
},
RequestFloatPanelToNewWindow {
source_window: AppWindowId,
panel: PanelKey,
anchor: Option<WindowAnchor>,
},
RequestFloatTabsToNewWindow {
source_window: AppWindowId,
source_tabs: DockNodeId,
panel: PanelKey,
anchor: Option<WindowAnchor>,
},
FloatPanelInWindow {
source_window: AppWindowId,
panel: PanelKey,
target_window: AppWindowId,
rect: Rect,
},
FloatTabsInWindow {
source_window: AppWindowId,
source_tabs: DockNodeId,
target_window: AppWindowId,
rect: Rect,
},
SetFloatingRect {
window: AppWindowId,
floating: DockNodeId,
rect: Rect,
},
RaiseFloating {
window: AppWindowId,
floating: DockNodeId,
},
MergeFloatingInto {
window: AppWindowId,
floating: DockNodeId,
target_tabs: DockNodeId,
},
MergeWindowInto {
source_window: AppWindowId,
target_window: AppWindowId,
target_tabs: DockNodeId,
},
SetSplitFractions {
split: DockNodeId,
fractions: Vec<f32>,
},
SetSplitFractionsMany {
updates: Vec<SplitFractionsUpdate>,
},
SetSplitFractionTwo {
split: DockNodeId,
first_fraction: f32,
},
}
#[derive(Debug, Clone, PartialEq)]
pub struct SplitFractionsUpdate {
pub split: DockNodeId,
pub fractions: Vec<f32>,
}