public void OnBoundsChanged(WidgetBoundsChangedArgs args) { if (!args.Final) { return; } var screens = new ScreenList(); if (_props.DestinationMonitor > screens.Count) { return; } args.Bounds = screens[_props.DestinationMonitor - 1].Bounds; }
public void OnBoundsChanged(WidgetBoundsChangedArgs args) { if (!args.Final) { return; } // Snap the bounds to the size of a full monitor. var center = new Point(args.Bounds.Left + args.Bounds.Right / 2, args.Bounds.Top + args.Bounds.Bottom / 2); var screen = (from s in args.Screens orderby PointDist(center, RectCenter(s.Bounds)) select s).FirstOrDefault(); if (!screen.Bounds.IsEmpty) { args.Bounds = screen.Bounds; } }
public void OnBoundsChanged(WidgetBoundsChangedArgs args) { // The size must remain a perfect square. if (args.Bounds.Width != args.Bounds.Height) { if (args.Bounds.Width != args.OldBounds.Width) { args.Bounds = new Rectangle(args.Bounds.Location, new Size(args.Bounds.Width, args.Bounds.Width)); } else { args.Bounds = new Rectangle(args.Bounds.Location, new Size(args.Bounds.Height, args.Bounds.Height)); } } }
public bool ChangeBoundsSafe(Rectangle newBounds, bool dragFinished) { var screens = new ScreenList(); if (newBounds.Width <= 0 || newBounds.Height <= 0) { return(false); } var envelope = screens.Select(s => s.Bounds).ToArray().GetEnvelope(); if (!envelope.Contains(newBounds.TopLeft()) && !envelope.Contains(newBounds.TopRight()) && !envelope.Contains(newBounds.BottomLeft()) && !envelope.Contains(newBounds.BottomRight())) { return(false); } var args = new WidgetBoundsChangedArgs(_config, newBounds, _bounds, new ScreenList(), dragFinished); _widget.OnBoundsChanged(args); _bounds = args.Bounds; return(true); }
public void OnBoundsChanged(WidgetBoundsChangedArgs args) { }