diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp
index b93543a6e2091b064c31ee15930e6b77c93cfed9..8cee8b6a6a6567ba1dddc336bb99f410353967cf 100644
--- a/Common/OpenFile.cpp
+++ b/Common/OpenFile.cpp
@@ -685,19 +685,22 @@ void OpenProject(const std::string &fileName, bool setWindowTitle)
   ResetTemporaryBoundingBox();
 
   // merge the file
-  if(MergeFile(fileName, false, setWindowTitle)) {
-    if(std::find(CTX::instance()->recentFiles.begin(),
-                 CTX::instance()->recentFiles.end(), fileName) ==
-       CTX::instance()->recentFiles.end())
-      CTX::instance()->recentFiles.insert
-        (CTX::instance()->recentFiles.begin(), fileName);
-    if(CTX::instance()->recentFiles.size() > 10)
-      CTX::instance()->recentFiles.resize(10);
+  MergeFile(fileName, false, setWindowTitle);
+
+  // fill recent opened file list
+  std::vector<std::string> tmp = CTX::instance()->recentFiles;
+  CTX::instance()->recentFiles.clear();
+  CTX::instance()->recentFiles.push_back(fileName);
+  for(unsigned int i = 0; i < tmp.size(); i++){
+    if(tmp[i] != fileName)
+      CTX::instance()->recentFiles.push_back(tmp[i]);
+  }
+  if(CTX::instance()->recentFiles.size() > 10)
+    CTX::instance()->recentFiles.resize(10);
 #if defined(HAVE_FLTK)
-    if(FlGui::available())
-      FlGui::instance()->graph[0]->fillRecentHistoryMenu();
+  if(FlGui::available())
+    FlGui::instance()->graph[0]->fillRecentHistoryMenu();
 #endif
-  }
 
   // close the files that might have been left open by ParseFile
   if(openedFiles.size()){