+ // Check if the id is in the range assigned to MRU list entries.
+ const int id = event.GetId();
+ if ( id >= wxID_FILE1 &&
+ id < wxID_FILE1 + static_cast<int>(m_fileHistory->GetCount()) )
+ {
+ DoOpenMRUFile(id - wxID_FILE1);
+ }
+ else
+ {
+ event.Skip();
+ }
+}
+
+void wxDocManager::DoOpenMRUFile(unsigned n)
+{
+ wxString filename(GetHistoryFile(n));
+ if ( filename.empty() )
+ return;
+
+ wxString errMsg; // must contain exactly one "%s" if non-empty
+ if ( wxFile::Exists(filename) )
+ {
+ // try to open it
+ if ( CreateDocument(filename, wxDOC_SILENT) )
+ return;
+
+ errMsg = _("The file '%s' couldn't be opened.");
+ }
+ else // file doesn't exist
+ {
+ errMsg = _("The file '%s' doesn't exist and couldn't be opened.");
+ }
+
+
+ wxASSERT_MSG( !errMsg.empty(), "should have an error message" );
+
+ // remove the file which we can't open from the MRU list
+ RemoveFileFromHistory(n);
+
+ // and tell the user about it
+ wxLogError(errMsg + '\n' +
+ _("It has been removed from the most recently used files list."),
+ filename);
+}
+