Added LockCursorToWindow method

This commit is contained in:
Jaex 2022-02-23 14:46:11 +03:00
parent a7fca59d1e
commit 61ced16d45
4 changed files with 15 additions and 36 deletions

View file

@ -1705,5 +1705,11 @@ public static bool SendFileToRecycleBin(string filePath)
return false;
}
public static void LockCursorToWindow(Form form)
{
form.Activated += (sender, e) => Cursor.Clip = form.Bounds;
form.Deactivate += (sender, e) => Cursor.Clip = Rectangle.Empty;
}
}
}

View file

@ -199,6 +199,8 @@ private void InitializeComponent()
if (Options.ActiveMonitorMode)
{
Bounds = CaptureHelpers.GetActiveScreenBounds();
Helpers.LockCursorToWindow(this);
}
else
{
@ -262,11 +264,10 @@ private void InitializeComponent()
KeyDown += RegionCaptureForm_KeyDown;
MouseDown += RegionCaptureForm_MouseDown;
MouseWheel += RegionCaptureForm_MouseWheel;
MouseEnter += RegionCaptureForm_MouseEnter;
Resize += RegionCaptureForm_Resize;
LocationChanged += RegionCaptureForm_LocationChanged;
LostFocus += RegionCaptureForm_LostFocus;
GotFocus += RegionCaptureForm_GotFocus;
LostFocus += RegionCaptureForm_LostFocus;
FormClosing += RegionCaptureForm_FormClosing;
ResumeLayout(false);
@ -687,14 +688,6 @@ private void RegionCaptureForm_MouseDown(object sender, MouseEventArgs e)
}
}
private void RegionCaptureForm_MouseEnter(object sender, EventArgs e)
{
if (IsFullscreen && Options.ActiveMonitorMode)
{
Cursor.Clip = Bounds;
}
}
private void RegionCaptureForm_MouseWheel(object sender, MouseEventArgs e)
{
if (IsEditorMode && ModifierKeys == Keys.Control)

View file

@ -44,7 +44,6 @@ public sealed class RegionCaptureLightForm : Form
public Rectangle SelectionRectangle { get; private set; }
public Rectangle SelectionRectangle0Based => new Rectangle(SelectionRectangle.X - ScreenRectangle.X, SelectionRectangle.Y - ScreenRectangle.Y,
SelectionRectangle.Width, SelectionRectangle.Height);
public bool ActiveMonitorMode { get; private set; }
private Timer timer;
private Bitmap backgroundImage;
@ -63,11 +62,11 @@ public RegionCaptureLightForm(Screenshot screenshot, bool activeMonitorMode = fa
borderDotPen2.DashPattern = new float[] { 5, 5 };
penTimer = Stopwatch.StartNew();
ActiveMonitorMode = activeMonitorMode;
if (ActiveMonitorMode)
if (activeMonitorMode)
{
ScreenRectangle = CaptureHelpers.GetActiveScreenBounds();
Helpers.LockCursorToWindow(this);
}
else
{
@ -113,7 +112,6 @@ private void InitializeComponent()
KeyUp += RectangleLight_KeyUp;
MouseDown += RectangleLight_MouseDown;
MouseUp += RectangleLight_MouseUp;
MouseEnter += RegionLight_MouseEnter;
ResumeLayout(false);
}
@ -171,14 +169,6 @@ private void RectangleLight_MouseUp(object sender, MouseEventArgs e)
}
}
private void RegionLight_MouseEnter(object sender, EventArgs e)
{
if (ActiveMonitorMode)
{
Cursor.Clip = Bounds;
}
}
public Bitmap GetAreaImage()
{
Rectangle rect = SelectionRectangle0Based;

View file

@ -47,7 +47,6 @@ public sealed class RegionCaptureTransparentForm : LayeredForm
private Rectangle PreviousSelectionRectangle { get; set; }
private Rectangle PreviousSelectionRectangle0Based => new Rectangle(PreviousSelectionRectangle.X - ScreenRectangle.X,
PreviousSelectionRectangle.Y - ScreenRectangle.Y, PreviousSelectionRectangle.Width, PreviousSelectionRectangle.Height);
public bool ActiveMonitorMode { get; private set; }
private Timer timer;
private Bitmap backgroundImage;
@ -65,11 +64,11 @@ public RegionCaptureTransparentForm(bool activeMonitorMode = false)
borderDotPen2.DashPattern = new float[] { 5, 5 };
penTimer = Stopwatch.StartNew();
ActiveMonitorMode = activeMonitorMode;
if (ActiveMonitorMode)
if (activeMonitorMode)
{
ScreenRectangle = CaptureHelpers.GetActiveScreenBounds();
Helpers.LockCursorToWindow(this);
}
else
{
@ -94,7 +93,6 @@ public RegionCaptureTransparentForm(bool activeMonitorMode = false)
KeyUp += RectangleTransparent_KeyUp;
MouseDown += RectangleTransparent_MouseDown;
MouseUp += RectangleTransparent_MouseUp;
MouseEnter += RectangleTransparent_MouseEnter;
timer = new Timer { Interval = 10 };
timer.Tick += timer_Tick;
@ -165,14 +163,6 @@ private void RectangleTransparent_MouseUp(object sender, MouseEventArgs e)
}
}
private void RectangleTransparent_MouseEnter(object sender, EventArgs e)
{
if (ActiveMonitorMode)
{
Cursor.Clip = Bounds;
}
}
public Bitmap GetAreaImage(Screenshot screenshot)
{
Rectangle rect = SelectionRectangle0Based;