Trying out a workaround for the Slack issue, the capture form will be resized back to the desired size.

This commit is contained in:
Robin Krom 2022-01-24 23:32:30 +01:00
commit d57fe900e5
No known key found for this signature in database
GPG key ID: BCC01364F1371490

View file

@ -153,12 +153,9 @@ namespace Greenshot.Forms
_currentForm = this; _currentForm = this;
// Enable the AnimatingForm
EnableAnimation = true;
// clean up // clean up
FormClosed += ClosedHandler; FormClosed += ClosedHandler;
Resize += CaptureForm_Resize;
_capture = capture; _capture = capture;
_windows = windows; _windows = windows;
_captureMode = capture.CaptureDetails.CaptureMode; _captureMode = capture.CaptureDetails.CaptureMode;
@ -171,6 +168,8 @@ namespace Greenshot.Forms
DoubleBuffered = !IsTerminalServerSession; DoubleBuffered = !IsTerminalServerSession;
Text = @"Greenshot capture form"; Text = @"Greenshot capture form";
SetSize();
// Make sure we never capture the capture-form // Make sure we never capture the capture-form
WindowDetails.RegisterIgnoreHandle(Handle); WindowDetails.RegisterIgnoreHandle(Handle);
// Un-register at close // Un-register at close
@ -188,9 +187,27 @@ namespace Greenshot.Forms
// Set the zoomer animation // Set the zoomer animation
InitializeZoomer(Conf.ZoomerEnabled); InitializeZoomer(Conf.ZoomerEnabled);
Log.DebugFormat("Opening CaptureForm with dimensions {0}", capture.ScreenBounds); // Enable the AnimatingForm
EnableAnimation = true;
}
private void CaptureForm_Resize(object sender, EventArgs e)
{
Log.DebugFormat("Resize was called, new size: {0}", this.Bounds);
if (Bounds.Equals(_capture.ScreenBounds))
{
// We have the correct size
return;
}
// Initiate resize
SetSize();
}
private void SetSize()
{
Log.DebugFormat("Setting CaptureForm with dimensions {0}", _capture.ScreenBounds);
SuspendLayout(); SuspendLayout();
Bounds = capture.ScreenBounds; Bounds = _capture.ScreenBounds;
ResumeLayout(); ResumeLayout();
// Fix missing focus // Fix missing focus
@ -203,15 +220,16 @@ namespace Greenshot.Forms
/// </summary> /// </summary>
private void InitializeZoomer(bool isOn) private void InitializeZoomer(bool isOn)
{ {
var startingPosition = new Rectangle(_cursorPos, Size.Empty);
if (isOn) if (isOn)
{ {
// Initialize the zoom with a invalid position // Initialize the zoom with a invalid position
_zoomAnimator = new RectangleAnimator(Rectangle.Empty, new Rectangle(int.MaxValue, int.MaxValue, 0, 0), FramesForMillis(1000), EasingType.Quintic, EasingMode.EaseOut); _zoomAnimator = new RectangleAnimator( startingPosition , new Rectangle(int.MaxValue, int.MaxValue, 0, 0), FramesForMillis(1000), EasingType.Quintic, EasingMode.EaseOut);
VerifyZoomAnimation(_cursorPos, false); VerifyZoomAnimation(_cursorPos, false);
} }
else else
{ {
_zoomAnimator?.ChangeDestination(new Rectangle(Point.Empty, Size.Empty), FramesForMillis(1000)); _zoomAnimator?.ChangeDestination(startingPosition, FramesForMillis(1000));
} }
} }