protected virtual SnapDirection ResizeToScreen(Point mousePosition, ref Rectangle bounds) { //TODO: Use only WPF frameworks. var screen = global::System.Windows.Forms.Screen.FromHandle(this.Handle); var result = SnappingHelper.Snap(ref bounds, screen.WorkingArea, false); return(result); }
protected virtual SnapDirection ResizeToWindows(Point mousePosition, ref Rectangle bounds) { var direction = SnapDirection.None; foreach (var snappingWindow in Active) { if (object.ReferenceEquals(snappingWindow, this)) { continue; } if (!snappingWindow.Adapter.IsVisible) { continue; } direction |= SnappingHelper.Snap(ref bounds, snappingWindow.Adapter.Bounds, true); } return(direction); }
protected virtual SnapDirection SnapToWindows(Point mousePosition, ref Rectangle bounds, bool resize) { var direction = SnapDirection.None; foreach (var snappingWindow in Active) { if (object.ReferenceEquals(snappingWindow, this)) { continue; } if (!snappingWindow.Adapter.IsVisible) { continue; } var to = snappingWindow.Adapter.Bounds; if (this.StickyWindows.ContainsKey(snappingWindow)) { if (resize) { if (this.IsStuck(snappingWindow, this.StickyWindows[snappingWindow])) { continue; } } else { if (!this.IsSticky && SnappingHelper.IsSnapped(bounds, to) == SnapDirection.None) { this.StickyWindows.Remove(snappingWindow); snappingWindow.StickyWindows.Remove(this); Logger.Write(this, LogLevel.Debug, "Unstick."); } continue; } } direction |= SnappingHelper.Snap(ref bounds, to, resize); } return(direction); }