Skip to content
This repository has been archived by the owner on Oct 4, 2021. It is now read-only.

Commit

Permalink
Handles disposed windows when they are closed while the windows loop
Browse files Browse the repository at this point in the history
  • Loading branch information
netonjm authored and monojenkins committed Jan 7, 2020
1 parent d60a842 commit f9d633f
Showing 1 changed file with 19 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -253,26 +253,39 @@ internal class OpenWindowListHandler : CommandHandler
protected override void Update (CommandArrayInfo info)
{
foreach (Components.Window window in IdeApp.CommandService.TopLevelWindowStack) {

string title = null;
bool hasTopLevel = false;

try {
title = window.Title;
hasTopLevel = window.HasTopLevelFocus;
#if !WINDOWS
//we don't want include hidden windows
if (!window.IsRealized || !window.IsVisible || Components.Mac.GtkMacInterop.IsGdkQuartzWindow (window))
continue;
//we don't want include hidden windows
if (!window.IsRealized || !window.IsVisible || Components.Mac.GtkMacInterop.IsGdkQuartzWindow (window))
continue;
#endif
} catch (System.ObjectDisposedException ex) {
LoggingService.LogInternalError (ex);
//we log the issue
continue;
}


//Create CommandInfo object
var commandInfo = new CommandInfo ();
commandInfo.Text = window.Title.Replace ("_", "__").Replace ("-", "\u2013").Replace (" \u2013 " + BrandingService.ApplicationName, "");
commandInfo.Text = title.Replace ("_", "__").Replace ("-", "\u2013").Replace (" \u2013 " + BrandingService.ApplicationName, "");

if (string.IsNullOrEmpty (commandInfo.Text)) {
commandInfo.Text = GettextCatalog.GetString ("No description");
}

if (window.HasTopLevelFocus)
if (hasTopLevel)
commandInfo.Checked = true;
commandInfo.Description = GettextCatalog.GetString ("Activate window '{0}'", commandInfo.Text);

//Add menu item
info.Add (commandInfo, window.Title);
info.Add (commandInfo, title);
}
}

Expand Down

0 comments on commit f9d633f

Please sign in to comment.