public void Drop(Point dropLocation, out bool dropHandled) { dropHandled = false; UpdateMouseLocation(dropLocation); var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow; var root = floatingWindowModel.Root; if (_currentHost != null) _currentHost.HideOverlayWindow(); if (_currentDropTarget != null) { _currentWindow.DragDrop(_currentDropTarget); root.CollectGarbage(); dropHandled = true; } _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a)); if (_currentDropTarget != null) _currentWindow.DragLeave(_currentDropTarget); if (_currentWindow != null) _currentWindow.DragLeave(_floatingWindow); _currentWindow = null; _currentHost = null; }
internal DockingManagerOverlayArea(IOverlayWindow overlayWindow, DockingManager manager) : base(overlayWindow) { _manager = manager; base.SetScreenDetectionArea(new Rect( _manager.PointToScreenDPI(new Point()), _manager.TransformActualSizeToAncestor())); }
internal DockingManagerOverlayArea(IOverlayWindow overlayWindow, DockingManager manager) : base(overlayWindow) { var manager1 = manager; SetScreenDetectionArea(new Rect( manager1.PointToScreenDpi(new Point()), manager1.TransformActualSizeToAncestor())); }
internal DocumentPaneControlOverlayArea( IOverlayWindow overlayWindow, LayoutDocumentPaneControl documentPaneControl) : base(overlayWindow) { _documentPaneControl = documentPaneControl; base.SetScreenDetectionArea(new Rect( _documentPaneControl.PointToScreenDPI(new Point()), _documentPaneControl.TransformActualSizeToAncestor())); }
internal AnchorablePaneControlOverlayArea( IOverlayWindow overlayWindow, LayoutAnchorablePaneControl anchorablePaneControl) : base(overlayWindow) { _anchorablePaneControl = anchorablePaneControl; base.SetScreenDetectionArea(new Rect( _anchorablePaneControl.PointToScreenDPI(new Point()), _anchorablePaneControl.TransformActualSizeToAncestor())); }
internal DocumentPaneControlOverlayArea( IOverlayWindow overlayWindow, LayoutDocumentPaneControl documentPaneControl) : base(overlayWindow) { var documentPaneControl1 = documentPaneControl; SetScreenDetectionArea(new Rect( documentPaneControl1.PointToScreenDpi(new Point()), documentPaneControl1.TransformActualSizeToAncestor())); }
internal AnchorablePaneControlOverlayArea( IOverlayWindow overlayWindow, LayoutAnchorablePaneControl anchorablePaneControl) : base(overlayWindow) { var anchorablePaneControl1 = anchorablePaneControl; SetScreenDetectionArea(new Rect( anchorablePaneControl1.PointToScreenDpi(new Point()), anchorablePaneControl1.TransformActualSizeToAncestor())); }
public void UpdateMouseLocation(Point dragPosition) { var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow; var newHost = _overlayWindowHosts.FirstOrDefault(oh => oh.HitTest(dragPosition)); if (_currentHost != null || _currentHost != newHost) { //is mouse still inside current overlay window host? if ((_currentHost != null && !_currentHost.HitTest(dragPosition)) || _currentHost != newHost) { //esit drop target if (_currentDropTarget != null) _currentWindow.DragLeave(_currentDropTarget); _currentDropTarget = null; //exit area _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a)); _currentWindowAreas.Clear(); //hide current overlay window if (_currentWindow != null) _currentWindow.DragLeave(_floatingWindow); if (_currentHost != null) _currentHost.HideOverlayWindow(); _currentHost = null; } if (_currentHost != newHost) { _currentHost = newHost; _currentWindow = _currentHost.ShowOverlayWindow(_floatingWindow); _currentWindow.DragEnter(_floatingWindow); } } if (_currentHost == null) return; if (_currentDropTarget != null && !_currentDropTarget.HitTest(dragPosition)) { _currentWindow.DragLeave(_currentDropTarget); _currentDropTarget = null; } List<IDropArea> areasToRemove = new List<IDropArea>(); _currentWindowAreas.ForEach(a => { //is mouse still inside this area? if (!a.DetectionRect.Contains(dragPosition)) { _currentWindow.DragLeave(a); areasToRemove.Add(a); } }); areasToRemove.ForEach(a => _currentWindowAreas.Remove(a)); var areasToAdd = _currentHost.GetDropAreas(_floatingWindow).Where(cw => !_currentWindowAreas.Contains(cw) && cw.DetectionRect.Contains(dragPosition)).ToList(); _currentWindowAreas.AddRange(areasToAdd); areasToAdd.ForEach(a => _currentWindow.DragEnter(a)); if (_currentDropTarget == null) { _currentWindowAreas.ForEach(wa => { if (_currentDropTarget != null) return; _currentDropTarget = _currentWindow.GetTargets().FirstOrDefault(dt => dt.HitTest(dragPosition)); if (_currentDropTarget != null) { _currentWindow.DragEnter(_currentDropTarget); return; } }); } }
internal void Abort() { var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow; _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a)); if (_currentDropTarget != null) _currentWindow.DragLeave(_currentDropTarget); if (_currentWindow != null) _currentWindow.DragLeave(_floatingWindow); _currentWindow = null; if (_currentHost != null) _currentHost.HideOverlayWindow(); _currentHost = null; }
internal OverlayArea(IOverlayWindow overlayWindow) { _overlayWindow = overlayWindow; }
public void UpdateMouseLocation(Point dragPosition) { var floatingWindowModel = _floatingWindow.Model as LayoutFloatingWindow; var newHost = _overlayWindowHosts.FirstOrDefault(oh => oh.HitTest(dragPosition)); if (_currentHost != null || _currentHost != newHost) { //is mouse still inside current overlay window host? if ((_currentHost != null && !_currentHost.HitTest(dragPosition)) || _currentHost != newHost) { //esit drop target if (_currentDropTarget != null) { _currentWindow.DragLeave(_currentDropTarget); } _currentDropTarget = null; //exit area _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a)); _currentWindowAreas.Clear(); //hide current overlay window if (_currentWindow != null) { _currentWindow.DragLeave(_floatingWindow); } if (_currentHost != null) { _currentHost.HideOverlayWindow(); } _currentHost = null; } if (_currentHost != newHost) { _currentHost = newHost; _currentWindow = _currentHost.ShowOverlayWindow(_floatingWindow); _currentWindow.DragEnter(_floatingWindow); } } if (_currentHost == null) { return; } if (_currentDropTarget != null && !_currentDropTarget.HitTest(dragPosition)) { _currentWindow.DragLeave(_currentDropTarget); _currentDropTarget = null; } List <IDropArea> areasToRemove = new List <IDropArea>(); _currentWindowAreas.ForEach(a => { //is mouse still inside this area? if (!a.DetectionRect.Contains(dragPosition)) { _currentWindow.DragLeave(a); areasToRemove.Add(a); } }); areasToRemove.ForEach(a => _currentWindowAreas.Remove(a)); var areasToAdd = _currentHost.GetDropAreas(_floatingWindow).Where(cw => !_currentWindowAreas.Contains(cw) && cw.DetectionRect.Contains(dragPosition)).ToList(); _currentWindowAreas.AddRange(areasToAdd); areasToAdd.ForEach(a => _currentWindow.DragEnter(a)); if (_currentDropTarget == null) { _currentWindowAreas.ForEach(wa => { if (_currentDropTarget != null) { return; } _currentDropTarget = _currentWindow.GetTargets().FirstOrDefault(dt => dt.HitTest(dragPosition)); if (_currentDropTarget != null) { _currentWindow.DragEnter(_currentDropTarget); return; } }); } }
internal OverlayArea(IOverlayWindow overlayWindow) { }
public void UpdateMouseLocation(Point dragPosition) { Func <IDropTarget, bool> func2 = null; ILayoutElement model = this._floatingWindow.Model; IOverlayWindowHost overlayWindowHost = this._overlayWindowHosts.FirstOrDefault <IOverlayWindowHost>((IOverlayWindowHost oh) => oh.HitTest(dragPosition)); if (this._currentHost != null || this._currentHost != overlayWindowHost) { if (this._currentHost != null && !this._currentHost.HitTest(dragPosition) || this._currentHost != overlayWindowHost) { if (this._currentDropTarget != null) { this._currentWindow.DragLeave(this._currentDropTarget); } this._currentDropTarget = null; this._currentWindowAreas.ForEach((IDropArea a) => this._currentWindow.DragLeave(a)); this._currentWindowAreas.Clear(); if (this._currentWindow != null) { this._currentWindow.DragLeave(this._floatingWindow); } if (this._currentHost != null) { this._currentHost.HideOverlayWindow(); } this._currentHost = null; } if (this._currentHost != overlayWindowHost) { this._currentHost = overlayWindowHost; this._currentWindow = this._currentHost.ShowOverlayWindow(this._floatingWindow); this._currentWindow.DragEnter(this._floatingWindow); } } if (this._currentHost == null) { return; } if (this._currentDropTarget != null && !this._currentDropTarget.HitTest(dragPosition)) { this._currentWindow.DragLeave(this._currentDropTarget); this._currentDropTarget = null; } List <IDropArea> dropAreas = new List <IDropArea>(); this._currentWindowAreas.ForEach((IDropArea a) => { if (!a.DetectionRect.Contains(dragPosition)) { this._currentWindow.DragLeave(a); dropAreas.Add(a); } }); dropAreas.ForEach((IDropArea a) => this._currentWindowAreas.Remove(a)); List <IDropArea> list = this._currentHost.GetDropAreas(this._floatingWindow).Where <IDropArea>((IDropArea cw) => { if (this._currentWindowAreas.Contains(cw)) { return(false); } return(cw.DetectionRect.Contains(dragPosition)); }).ToList <IDropArea>(); this._currentWindowAreas.AddRange(list); list.ForEach((IDropArea a) => this._currentWindow.DragEnter(a)); if (this._currentDropTarget == null) { this._currentWindowAreas.ForEach((IDropArea wa) => { if (this._currentDropTarget != null) { return; } DragService u003cu003e4_this = this; IEnumerable <IDropTarget> targets = this._currentWindow.GetTargets(); Func <IDropTarget, bool> u003cu003e9_7 = func2; if (u003cu003e9_7 == null) { Func <IDropTarget, bool> func = (IDropTarget dt) => dt.HitTest(dragPosition); Func <IDropTarget, bool> func1 = func; func2 = func; u003cu003e9_7 = func1; } u003cu003e4_this._currentDropTarget = targets.FirstOrDefault <IDropTarget>(u003cu003e9_7); if (this._currentDropTarget == null) { return; } this._currentWindow.DragEnter(this._currentDropTarget); }); } }
internal void Abort() { _currentWindowAreas.ForEach(a => _currentWindow.DragLeave(a)); if (_currentDropTarget != null) _currentWindow.DragLeave(_currentDropTarget); _currentWindow?.DragLeave(_floatingWindow); _currentWindow = null; _currentHost?.HideOverlayWindow(); _currentHost = null; }