/// <summary> /// Function called when dragged window leaves already docked window</summary> /// <param name="sender">Dockable window being dragged</param> /// <param name="e">Drag and drop arguments when window is dropped to be docked to dockpanel</param> public void DockDragLeave(object sender, DockDragDropEventArgs e) { DockIconsLayer dockIconLayer = Root.DockIconsLayer; dockIconLayer.RemoveChild(m_dockLeftIcon); dockIconLayer.RemoveChild(m_dockRightIcon); dockIconLayer.RemoveChild(m_dockTopIcon); dockIconLayer.RemoveChild(m_dockBottomIcon); dockIconLayer.RemoveChild(m_dockTabIcon); if (m_dockPreviewShape != null) { Root.DockIconsLayer.RemoveChild(m_dockPreviewShape); m_dockPreviewShape = null; } dockIconLayer.CloseIfEmpty(); }
/// <summary> /// Function called when dragged window leaves already docked window</summary> /// <param name="sender">Dockable window being dragged</param> /// <param name="e">Drag and drop arguments when window is dropped to be docked to dockpanel</param> public void DockDragLeave(object sender, DockDragDropEventArgs e) { DockIconsLayer.RemoveChild(m_dockTabIcon); if (m_dockPreviewShape != null) { DockIconsLayer.RemoveChild(m_dockPreviewShape); m_dockPreviewShape = null; } DockIconsLayer.CloseIfEmpty(); }
/// <summary> /// Function called when dragged window is moved over already docked window</summary> /// <param name="sender">Dockable window being dragged</param> /// <param name="e">Drag and drop arguments when window is dropped to be docked to dockpanel</param> public void DockDragOver(object sender, DockDragDropEventArgs e) { Point pos = e.MouseEventArgs.GetPosition(this); bool b = m_dockTabIcon.HitTest(pos); if (b && !m_dockTabIcon.Highlight) { m_dockTabIcon.Highlight = b; DockIconsLayer.RemoveChild(m_dockPreviewShape); m_dockPreviewShape = null; Window owner = Window.GetWindow(this); Rectangle rect = new Rectangle(); rect.Fill = Brushes.RoyalBlue; rect.Opacity = 0.3; m_dockPreviewShape = rect; double space = 2; Point p = PointFromScreen(PointToScreen(new Point(space, space))); Canvas c = new Canvas(); c.SnapsToDevicePixels = true; c.Width = DockedContent.ActualWidth; c.Height = DockedContent.ActualHeight; Canvas.SetLeft(c, p.X); Canvas.SetTop(c, p.Y); m_dockPreviewShape.Width = DockedContent.ActualWidth - space * 2; m_dockPreviewShape.Height = DockedContent.ActualHeight - 20 - space * 2; Canvas.SetLeft(m_dockPreviewShape, 0); Canvas.SetTop(m_dockPreviewShape, 0); c.Children.Add(m_dockPreviewShape); rect = new Rectangle(); rect.Fill = Brushes.RoyalBlue; rect.Opacity = 0.3; rect.Width = Math.Min(DockedContent.ActualWidth / 4, 50); rect.Height = 20; Canvas.SetLeft(rect, 0); Canvas.SetTop(rect, DockedContent.ActualHeight - 20 - space * 2); c.Children.Add(rect); m_dockPreviewShape = c; DockIconsLayer.InsertChild(0, m_dockPreviewShape); } else if (!b) { if (m_dockPreviewShape != null) { DockIconsLayer.RemoveChild(m_dockPreviewShape); m_dockPreviewShape = null; } m_dockTabIcon.Highlight = false; } }