protected void StopMagic() { if (_strokeWindow != null) { _strokeWindow.Close(); _strokeWindow = null; } _activewindowhook.Unhook(); }
void StrokeWindowMouseMove(object sender, MouseEventArgs e) { Views.Test.TestWindow.AddMessage("Stroke: Mouse Move"); if (!_magicArrowIsShown && !_isInZone && StrokeWindow.PositionIsOk(_movedOutSide, Cursor.Position.X, WpfScreen.MostLeftX - 2, WpfScreen.MostRightX)) { _isInZone = true; Point p = e.GetPosition(_strokeWindow); var screen = WpfScreen.GetScreenFrom(p); ShowMagicArrow(p.Y + screen.WorkingArea.Top, _movedOutSide); } _mouseWasOver = true; }
protected void StartMagic() { var screen = GetScreenFromSide(_movedOutSide); _strokeWindow = new StrokeWindow(screen.WorkingArea.Height, _movedOutSide == Side.Left ? WpfScreen.MostLeftX : WpfScreen.MostRightX, screen.WorkingArea.Top, _movedOutSide); _strokeWindow.Show(); _strokeWindow.MouseMove += StrokeWindowMouseMove; _strokeWindow.MouseLeave += StrokeWindowMouseLeave; _strokeWindow.MouseDown += StrokeWindowMouseDown; _activewindowhook.Hook(); _activewindowhook.RaiseOne(); //If the current window is fullscreen, the event wouldn't be raised (because nothing changed) _mouseWasOver = false; }
void MagicWindow_MouseLeave(object sender, MouseEventArgs e) { Views.Test.TestWindow.AddMessage("Magic Arrow: Mouse Leave"); if (StrokeWindow.PositionIsOk(_movedOutSide, Cursor.Position.X, 2 - WpfScreen.MostLeftX, WpfScreen.MostRightX)) { if (_strokeWindow != null) { _strokeWindow.SetLeft(_movedOutSide == Side.Left ? WpfScreen.MostLeftX : WpfScreen.MostRightX - 1, _movedOutSide); } HideMagicArrow(); } else { _strokeWindow.SetLeft(_movedOutSide == Side.Left ? WpfScreen.MostLeftX : WpfScreen.MostRightX - 1, _movedOutSide); } }