diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.cpp b/src/plugins/genericprojectmanager/genericprojectmanager.cpp
index 0ad966a7306d3e735fcba8d6f7b41d0e9243abf7..5f5737bf65e069ceb7354af657c0186590e12cf7 100644
--- a/src/plugins/genericprojectmanager/genericprojectmanager.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectmanager.cpp
@@ -32,8 +32,11 @@
 #include "genericproject.h"
 
 #include <coreplugin/icore.h>
+#include <coreplugin/messagemanager.h>
 #include <coreplugin/uniqueidmanager.h>
+#include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/session.h>
 
 #include <QtDebug>
 
@@ -60,14 +63,21 @@ QString Manager::mimeType() const
 
 ProjectExplorer::Project *Manager::openProject(const QString &fileName)
 {
-    QFileInfo fileInfo(fileName);
+    if (!QFileInfo(fileName).isFile())
+        return 0;
 
-    if (fileInfo.isFile()) {
-        GenericProject *project = new GenericProject(this, fileName);
-        return project;
+    ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance();
+    foreach (ProjectExplorer::Project *pi, projectExplorer->session()->projects()) {
+        if (fileName == pi->file()->fileName()) {
+            Core::MessageManager *messageManager = Core::ICore::instance()->messageManager();
+            messageManager->printToOutputPanePopup(tr("Failed opening project '%1': Project already open")
+                                                   .arg(QDir::toNativeSeparators(fileName)));
+            return 0;
+        }
     }
 
-    return 0;
+    GenericProject *project = new GenericProject(this, fileName);
+    return project;
 }
 
 void Manager::registerProject(GenericProject *project)
diff --git a/src/plugins/genericprojectmanager/genericprojectmanager.h b/src/plugins/genericprojectmanager/genericprojectmanager.h
index 6e213afc77d274835af10790da6f6eb683b24b64..1b99f008d1770c20a4d3d4f38f6a4b6e9da7e92b 100644
--- a/src/plugins/genericprojectmanager/genericprojectmanager.h
+++ b/src/plugins/genericprojectmanager/genericprojectmanager.h
@@ -37,7 +37,7 @@ namespace Internal {
 
 class GenericProject;
 
-class Manager: public ProjectExplorer::IProjectManager
+class Manager : public ProjectExplorer::IProjectManager
 {
     Q_OBJECT
 
diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.cpp b/src/plugins/qt4projectmanager/qt4projectmanager.cpp
index 1ec86aa4eac1a75915a6709a87b05e57f18142f7..d3342b30e918e5a697073a9ada693d74eec6dc3b 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanager.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectmanager.cpp
@@ -181,7 +181,7 @@ QString Qt4Manager::mimeType() const
     return QLatin1String(Qt4ProjectManager::Constants::PROFILE_MIMETYPE);
 }
 
-ProjectExplorer::Project* Qt4Manager::openProject(const QString &fileName)
+ProjectExplorer::Project *Qt4Manager::openProject(const QString &fileName)
 {
     Core::MessageManager *messageManager = Core::ICore::instance()->messageManager();
 
diff --git a/src/plugins/qt4projectmanager/qt4projectmanager.h b/src/plugins/qt4projectmanager/qt4projectmanager.h
index 199c4b98ee2b42a310c92f1f6194d26b51413f6d..2235a17f536d62aac98ebe28d5a0625360afbb23 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanager.h
+++ b/src/plugins/qt4projectmanager/qt4projectmanager.h
@@ -79,7 +79,7 @@ public:
     int projectLanguage() const;
 
     virtual QString mimeType() const;
-    ProjectExplorer::Project* openProject(const QString &fileName);
+    ProjectExplorer::Project *openProject(const QString &fileName);
 
     // Context information used in the slot implementations
     ProjectExplorer::Node *contextNode() const;