@@ -253,26 +253,38 @@ internal class OpenWindowListHandler : CommandHandler
253
253
protected override void Update ( CommandArrayInfo info )
254
254
{
255
255
foreach ( Components . Window window in IdeApp . CommandService . TopLevelWindowStack ) {
256
+
257
+ string title = null ;
258
+ bool hasTopLevel = false ;
259
+
260
+ try {
261
+ title = window . Title ;
262
+ hasTopLevel = window . HasTopLevelFocus ;
256
263
#if ! WINDOWS
257
- //we don't want include hidden windows
258
- if ( ! window . IsRealized || ! window . IsVisible || Components . Mac . GtkMacInterop . IsGdkQuartzWindow ( window ) )
259
- continue ;
264
+ //we don't want include hidden windows
265
+ if ( ! window . IsRealized || ! window . IsVisible || Components . Mac . GtkMacInterop . IsGdkQuartzWindow ( window ) )
266
+ continue ;
260
267
#endif
268
+ } catch ( System . ObjectDisposedException ) {
269
+ //this means the window was closed while the loop then we want continue to next element
270
+ continue ;
271
+ }
272
+
261
273
262
274
//Create CommandInfo object
263
275
var commandInfo = new CommandInfo ( ) ;
264
- commandInfo . Text = window . Title . Replace ( "_" , "__" ) . Replace ( "-" , "\u2013 " ) . Replace ( " \u2013 " + BrandingService . ApplicationName , "" ) ;
276
+ commandInfo . Text = title . Replace ( "_" , "__" ) . Replace ( "-" , "\u2013 " ) . Replace ( " \u2013 " + BrandingService . ApplicationName , "" ) ;
265
277
266
278
if ( string . IsNullOrEmpty ( commandInfo . Text ) ) {
267
279
commandInfo . Text = GettextCatalog . GetString ( "No description" ) ;
268
280
}
269
281
270
- if ( window . HasTopLevelFocus )
282
+ if ( hasTopLevel )
271
283
commandInfo . Checked = true ;
272
284
commandInfo . Description = GettextCatalog . GetString ( "Activate window '{0}'" , commandInfo . Text ) ;
273
285
274
286
//Add menu item
275
- info . Add ( commandInfo , window . Title ) ;
287
+ info . Add ( commandInfo , title ) ;
276
288
}
277
289
}
278
290
0 commit comments