Skip to content

Commit

Permalink
Use WinForms API to check for minimized (#10088)
Browse files Browse the repository at this point in the history
  • Loading branch information
gerhardol committed Jul 27, 2022
1 parent 02173f3 commit 35e75c5
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 30 deletions.
22 changes: 4 additions & 18 deletions GitUI/CommandsDialogs/BrowseDialog/GitStatusMonitor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public sealed class GitStatusMonitor : IDisposable
private string? _submodulesPath;
private readonly CancellationTokenSequence _statusSequence = new();
private readonly GetAllChangedFilesOutputParser _getAllChangedFilesOutputParser;
private readonly Func<bool> _isMinimized;

// Timestamps to schedule status updates, limit the update interval dynamically
// Note that TickCount wraps after 25 days uptime, always compare diff
Expand Down Expand Up @@ -79,8 +80,9 @@ public bool Active
/// </summary>
public event EventHandler<GitWorkingDirectoryStatusEventArgs?>? GitWorkingDirectoryStatusChanged;

public GitStatusMonitor(IGitUICommandsSource commandsSource)
public GitStatusMonitor(IGitUICommandsSource commandsSource, Func<bool> isMinimized)
{
_isMinimized = isMinimized;
_timerRefresh = new System.Windows.Forms.Timer
{
Enabled = true,
Expand Down Expand Up @@ -354,22 +356,6 @@ private void StartWatchingChanges(string workTreePath, string gitDirPath)
}
}

private static bool IsMinimized()
{
if (!EnvUtils.RunningOnWindows())
{
return false;
}

var currentProcess = Process.GetCurrentProcess();
if (currentProcess is null)
{
return false;
}

return NativeMethods.IsIconic(currentProcess.MainWindowHandle).IsTrue();
}

private void Update()
{
ThreadHelper.AssertOnUIThread();
Expand All @@ -383,7 +369,7 @@ private void Update()
Validates.NotNull(UICommandsSource);
Validates.NotNull(Module);

if (IsMinimized() || UICommandsSource.UICommands.RepoChangedNotifier.IsLocked)
if (_isMinimized() || UICommandsSource.UICommands.RepoChangedNotifier.IsLocked)
{
// No run for minimized,
// don't update status while repository is being modified by GitExt,
Expand Down
4 changes: 3 additions & 1 deletion GitUI/CommandsDialogs/FormBrowse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ void InitCountArtificial(out GitStatusMonitor gitStatusMonitor)
{
Brush? lastBrush = null;

gitStatusMonitor = new GitStatusMonitor(this);
gitStatusMonitor = new GitStatusMonitor(this, () => IsMinimized());
if (!NeedsGitStatusMonitor())
{
gitStatusMonitor.Active = false;
Expand Down Expand Up @@ -417,6 +417,8 @@ void InitCountArtificial(out GitStatusMonitor gitStatusMonitor)
};
}

bool IsMinimized() => WindowState == FormWindowState.Minimized;

void WorkaroundPaddingIncreaseBug()
{
MainSplitContainer.Panel1.Padding = new Padding(1);
Expand Down
11 changes: 0 additions & 11 deletions GitUI/Interops/User32/IsIconic.cs

This file was deleted.

0 comments on commit 35e75c5

Please sign in to comment.