Author: paullanders
Date: Fri Sep 12 18:13:48 2014
New Revision: 38078

URL: http://svn.gna.org/viewcvs/gnustep?rev=38078&view=rev
Log:
Open recent menu to clear items that have been deleted whenever it reloads. 

Modified:
    libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m

Modified: 
libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m?rev=38078&r1=38077&r2=38078&view=diff
==============================================================================
--- libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m    
(original)
+++ libs/gui/branches/gnustep_testplant_branch/Source/NSDocumentController.m    
Fri Sep 12 18:13:48 2014
@@ -1648,6 +1648,8 @@
 - (void) _updateRecentDocumentsMenu
 {
   NSMenu *recentMenu;
+  BOOL listUpdated;
+  NSMutableArray *a;
   int i;
 
   recentMenu = [self _recentDocumentsMenu];
@@ -1660,6 +1662,35 @@
   [recentMenu setAutoenablesItems: NO];
   [recentMenu setMenuChangedMessagesEnabled: NO];
 
+  // remove from list all deleted or otherwise inaccessable files
+  listUpdated = NO;
+  for (i = [_recent_documents count] - 1; i >= 0; i--)
+    {
+      NSURL *u = [_recent_documents objectAtIndex: i];
+      NSError *error;
+      //  if resource has been deleted
+      if (![u checkResourceIsReachableAndReturnError:&error])
+        {
+          [_recent_documents removeObjectAtIndex:i];
+          listUpdated = YES;
+          continue;
+        }
+    }
+  if ( listUpdated ) 
+    {
+      // Save the changed list
+      a = [_recent_documents mutableCopy];
+      i = [a count];
+      while (i-- > 0)
+        {
+          [a replaceObjectAtIndex: i withObject:
+           [[a objectAtIndex: i] absoluteString]];
+        }
+      [[NSUserDefaults standardUserDefaults]
+        setObject: a forKey: NSRecentDocuments];
+      RELEASE(a);
+    }
+    
   while ([recentMenu numberOfItems] > 0)
     {
       [recentMenu removeItemAtIndex: 0];       // remove them all
@@ -1738,7 +1769,10 @@
 
   [self openDocumentWithContentsOfURL: url display: YES error: &err];
   if (err)
+  {
     [self presentError: err];
+    [self _updateRecentDocumentsMenu];
+  }
 }
 
 @end


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to