diff --git a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs index b9b5c4de0..2af518888 100644 --- a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs @@ -82,6 +82,7 @@ public Color CurrentColor internal ShapeManager ShapeManager { get; private set; } internal List DrawableObjects { get; private set; } + internal bool Closing { get; private set; } internal IContainer components = null; internal OpacityAnimation toolbarAnimation; @@ -89,7 +90,6 @@ public Color CurrentColor private InputManager InputManager => ShapeManager.InputManager; - private FormWindowState lastWindowState = FormWindowState.Minimized; private TextureBrush backgroundBrush, backgroundHighlightBrush; private GraphicsPath regionFillPath, regionDrawPath; private Pen borderPen, borderDotPen, borderDotStaticPen, textOuterBorderPen, textInnerBorderPen, markerPen; @@ -146,7 +146,7 @@ private void InitializeComponent() Icon = ShareXResources.Icon; SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); - if (!IsEditorMode) + if (!IsEditorMode || Config.EditorModeFullscreen) { Text = "ShareX - " + Resources.BaseRegionForm_InitializeComponent_Region_capture; StartPosition = FormStartPosition.Manual; @@ -280,11 +280,6 @@ private void OnMoved() { UpdateCoordinates(); - if (IsEditorMode && WindowState != lastWindowState) - { - lastWindowState = WindowState; - } - if (IsAnnotationMode && ShapeManager.ToolbarCreated) { ShapeManager.UpdateMenuPosition(); @@ -373,6 +368,8 @@ private void RegionCaptureForm_LocationChanged(object sender, EventArgs e) private void RegionCaptureForm_FormClosing(object sender, FormClosingEventArgs e) { + Closing = true; + if (IsEditorMode && Config.EditorModeRememberWindowState) { Config.EditorModeWindowState.UpdateFormState(this); diff --git a/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs b/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs index d47ac3116..36f5ba690 100644 --- a/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs +++ b/ShareX.ScreenCaptureLib/RegionCaptureOptions.cs @@ -80,5 +80,6 @@ public class RegionCaptureOptions public bool EditorModeStartMaximized = true; public bool EditorModeRememberWindowState = false; public WindowState EditorModeWindowState = new WindowState(); + public bool EditorModeFullscreen = false; } } \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs index 9db17ba7e..7ea7b132e 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManagerMenu.cs @@ -729,6 +729,12 @@ internal void CreateToolbar() tsmiEditorModeRememberWindowState.Click += (sender, e) => Config.EditorModeRememberWindowState = tsmiEditorModeRememberWindowState.Checked; tsddbOptions.DropDownItems.Add(tsmiEditorModeRememberWindowState); + ToolStripMenuItem tsmiEditorModeFullscreen = new ToolStripMenuItem("Fullscreen editor mode"); + tsmiEditorModeFullscreen.Checked = Config.EditorModeFullscreen; + tsmiEditorModeFullscreen.CheckOnClick = true; + tsmiEditorModeFullscreen.Click += (sender, e) => Config.EditorModeFullscreen = tsmiEditorModeFullscreen.Checked; + tsddbOptions.DropDownItems.Add(tsmiEditorModeFullscreen); + tsddbOptions.DropDownItems.Add(new ToolStripSeparator()); } @@ -1059,7 +1065,7 @@ private void SetMenuCollapsed(bool isCollapsed) private void UpdateMenu() { - if (menuForm == null) return; + if (form.Closing || menuForm == null || menuForm.IsDisposed) return; ShapeType shapeType = CurrentShapeType;