public IsDockStateValid ( DockState dockState ) : bool | ||
dockState | DockState | |
return | bool |
internal void TestDrop(DragHandler dragHandler, Point pt) { if (DockState == DockState.Document) DockPanel.TestDrop(dragHandler, pt); if (dragHandler.DropTarget.DropTo != null) return; if (DockHelper.IsDockStateAutoHide(DockState)) return; if (!dragHandler.IsDockStateValid(DockState)) return; if (dragHandler.DragSource == DragSource.FloatWindow && FloatWindow == dragHandler.DragControl) return; if (dragHandler.DragSource == DragSource.Pane && dragHandler.DragControl == this) return; if (dragHandler.DragSource == DragSource.Content && dragHandler.DragControl == this && DockState == DockState.Document && DisplayingContents.Count == 1) return; Point ptClient = PointToClient(pt); Rectangle rectPane = DisplayingRectangle; int dragSize = MeasurePane.DragSize; if (ptClient.Y - rectPane.Top >= 0 && ptClient.Y - rectPane.Top < dragSize) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Top); else if (rectPane.Bottom - ptClient.Y >= 0 && rectPane.Bottom - ptClient.Y < dragSize) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Bottom); else if (rectPane.Right - ptClient.X >= 0 && rectPane.Right - ptClient.X < dragSize) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Right); else if (ptClient.X - rectPane.Left >= 0 && ptClient.X - rectPane.Left < dragSize) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Left); else { if (rectPane.Height <= TabStripRectangle.Height) return; HitTestResult hitTestResult = GetHitTest(pt); if (hitTestResult.HitArea == HitTestArea.Caption) dragHandler.DropTarget.SetDropTarget(this, -1); else if (hitTestResult.HitArea == HitTestArea.TabStrip && hitTestResult.Index != -1) dragHandler.DropTarget.SetDropTarget(this, hitTestResult.Index); else if (DockState == DockState.Float && !HasCaption && ((ptClient.Y - rectPane.Top >= dragSize && ptClient.Y - rectPane.Top < 2 * dragSize) || (rectPane.Bottom - ptClient.Y >= dragSize && rectPane.Bottom - ptClient.Y < 2 * dragSize) || (rectPane.Right - ptClient.X >= dragSize && rectPane.Right - ptClient.X < 2 * dragSize) || (ptClient.X - rectPane.Left >= dragSize && ptClient.X - rectPane.Left < 2 * dragSize))) dragHandler.DropTarget.SetDropTarget(this, -1); else return; } if (dragHandler.DropTarget.SameAsOldValue) return; dragHandler.DragOutline = GetTestDropOutline(dragHandler.DropTarget.Dock, dragHandler.DropTarget.ContentIndex); }
internal void TestDrop(DragHandler dragHandler, Point pt) { if (DockArea.Width <= 0 || DockArea.Height <= 0) { return; } Point ptClient = PointToClient(pt); int dragSize = MeasurePane.DragSize; Rectangle rectDoc = DocumentRectangle; if (ptClient.Y - rectDoc.Top >= 0 && ptClient.Y - rectDoc.Top < dragSize && DockWindows[DockState.DockTop].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockTop)) { dragHandler.DropTarget.SetDropTarget(this, DockStyle.Top); } else if (rectDoc.Bottom - ptClient.Y >= 0 && rectDoc.Bottom - ptClient.Y < dragSize && DockWindows[DockState.DockBottom].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockBottom)) { dragHandler.DropTarget.SetDropTarget(this, DockStyle.Bottom); } else if (rectDoc.Right - ptClient.X >= 0 && rectDoc.Right - ptClient.X < dragSize && DockWindows[DockState.DockRight].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockRight)) { dragHandler.DropTarget.SetDropTarget(this, DockStyle.Right); } else if (ptClient.X - rectDoc.Left >= 0 && ptClient.X - rectDoc.Left < dragSize && DockWindows[DockState.DockLeft].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockLeft)) { dragHandler.DropTarget.SetDropTarget(this, DockStyle.Left); } else if (((ptClient.Y - rectDoc.Top >= dragSize && ptClient.Y - rectDoc.Top < 2 * dragSize) || (rectDoc.Bottom - ptClient.Y >= dragSize && rectDoc.Bottom - ptClient.Y < 2 * dragSize) || (rectDoc.Right - ptClient.X >= dragSize && rectDoc.Right - ptClient.X < 2 * dragSize) || (ptClient.X - rectDoc.Left >= dragSize && ptClient.X - rectDoc.Left < 2 * dragSize)) && DockWindows[DockState.Document].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.Document)) { dragHandler.DropTarget.SetDropTarget(this, DockStyle.Fill); } else { return; } if (dragHandler.DropTarget.SameAsOldValue) { return; } Rectangle rect = DockArea; if (dragHandler.DropTarget.Dock == DockStyle.Top) { rect.Height = (int)(DockArea.Height * DockTopPortion); } else if (dragHandler.DropTarget.Dock == DockStyle.Bottom) { rect.Height = (int)(DockArea.Height * DockBottomPortion); rect.Y = DockArea.Bottom - rect.Height; } else if (dragHandler.DropTarget.Dock == DockStyle.Left) { rect.Width = (int)(DockArea.Width * DockLeftPortion); } else if (dragHandler.DropTarget.Dock == DockStyle.Right) { rect.Width = (int)(DockArea.Width * DockRightPortion); rect.X = DockArea.Right - rect.Width; } else if (dragHandler.DropTarget.Dock == DockStyle.Fill) { rect = DocumentRectangle; } rect.Location = PointToScreen(rect.Location); dragHandler.DragOutline = DrawHelper.CreateDragOutline(rect, dragSize); }
internal void TestDrop(DragHandler dragHandler, Point pt) { if (DockArea.Width <=0 || DockArea.Height <= 0) return; Point ptClient = PointToClient(pt); int dragSize = MeasurePane.DragSize; Rectangle rectDoc = DocumentRectangle; if (ptClient.Y - rectDoc.Top >= 0 && ptClient.Y - rectDoc.Top < dragSize && DockWindows[DockState.DockTop].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockTop)) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Top); else if (rectDoc.Bottom - ptClient.Y >= 0 && rectDoc.Bottom - ptClient.Y < dragSize && DockWindows[DockState.DockBottom].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockBottom)) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Bottom); else if (rectDoc.Right - ptClient.X >= 0 && rectDoc.Right - ptClient.X < dragSize && DockWindows[DockState.DockRight].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockRight)) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Right); else if (ptClient.X - rectDoc.Left >= 0 && ptClient.X - rectDoc.Left < dragSize && DockWindows[DockState.DockLeft].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.DockLeft)) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Left); else if (((ptClient.Y - rectDoc.Top >= dragSize && ptClient.Y - rectDoc.Top < 2 * dragSize) || (rectDoc.Bottom - ptClient.Y >= dragSize && rectDoc.Bottom - ptClient.Y < 2 * dragSize) || (rectDoc.Right - ptClient.X >= dragSize && rectDoc.Right - ptClient.X < 2 * dragSize) || (ptClient.X - rectDoc.Left >= dragSize && ptClient.X - rectDoc.Left < 2 * dragSize)) && DockWindows[DockState.Document].DisplayingList.Count == 0 && dragHandler.IsDockStateValid(DockState.Document)) dragHandler.DropTarget.SetDropTarget(this, DockStyle.Fill); else return; if (dragHandler.DropTarget.SameAsOldValue) return; Rectangle rect = DockArea; if (dragHandler.DropTarget.Dock == DockStyle.Top) rect.Height = (int)(DockArea.Height * DockTopPortion); else if (dragHandler.DropTarget.Dock == DockStyle.Bottom) { rect.Height = (int)(DockArea.Height * DockBottomPortion); rect.Y = DockArea.Bottom - rect.Height; } else if (dragHandler.DropTarget.Dock == DockStyle.Left) rect.Width = (int)(DockArea.Width * DockLeftPortion); else if (dragHandler.DropTarget.Dock == DockStyle.Right) { rect.Width = (int)(DockArea.Width * DockRightPortion); rect.X = DockArea.Right - rect.Width; } else if (dragHandler.DropTarget.Dock == DockStyle.Fill) rect = DocumentRectangle; rect.Location = PointToScreen(rect.Location); dragHandler.DragOutline = DrawHelper.CreateDragOutline(rect, dragSize); }