diff --git a/src/app/update/dialog.rs b/src/app/update/dialog.rs index 403959ecb..fc46feea1 100644 --- a/src/app/update/dialog.rs +++ b/src/app/update/dialog.rs @@ -636,6 +636,7 @@ pub(super) fn on_ribbon_tool_click(&mut self, tool_id: String, event: ModuleEven } DockMsg::DragMove(point) => { if self.dock_dragging.is_some() { + let avail = self.tabs[self.active_tab].scene.selection.borrow().vp_size.1; let side = if point.x < self.win_size.0 * 0.5 { DockSide::Left } else { @@ -644,7 +645,7 @@ pub(super) fn on_ribbon_tool_click(&mut self, tool_id: String, event: ModuleEven let index = crate::ui::dock::drop_index( point.y, std::cmp::max(self.dock.len(side), 1), - self.win_size.1, + avail, ); self.dock_drag_target = Some((side, index)); } else if let Some(id) = self.dock_resizing { diff --git a/src/app/view/mod.rs b/src/app/view/mod.rs index 7a5929f8c..fec1d8a81 100644 --- a/src/app/view/mod.rs +++ b/src/app/view/mod.rs @@ -1563,7 +1563,8 @@ impl OpenCADStudio { } else { self.dock.len(side) + 1 }; - let slot_h = self.win_size.1 / final_count as f32; + let edge_h = tab.scene.selection.borrow().vp_size.1; + let slot_h = edge_h / final_count as f32; let index = self.dock_drag_target.map(|(_, i)| i).unwrap_or(0); let slot = index.min(final_count.saturating_sub(1)); let ghost_top = slot as f32 * slot_h;