diff --git a/apps/opencs/view/world/dialoguesubview.cpp b/apps/opencs/view/world/dialoguesubview.cpp
index ee78feac4d..88d7b81ce4 100644
--- a/apps/opencs/view/world/dialoguesubview.cpp
+++ b/apps/opencs/view/world/dialoguesubview.cpp
@@ -345,6 +345,11 @@ CSVWorld::IdContextMenu::IdContextMenu(QWidget *widget, CSMWorld::ColumnBase::Di
     }
 }
 
+void CSVWorld::IdContextMenu::excludeId(const std::string &id)
+{
+    mExcludedIds.insert(id);
+}
+
 QString CSVWorld::IdContextMenu::getWidgetValue() const
 {
     QLineEdit *lineEdit = qobject_cast<QLineEdit *>(mWidget);   
@@ -397,7 +402,8 @@ void CSVWorld::IdContextMenu::removeEditIdActionFromMenu()
 void CSVWorld::IdContextMenu::showContextMenu(const QPoint &pos)
 {
     QString value = getWidgetValue();
-    if (!value.isEmpty())
+    bool isExcludedId = mExcludedIds.find(value.toUtf8().constData()) != mExcludedIds.end();
+    if (!value.isEmpty() && !isExcludedId)
     {
         addEditIdActionToMenu("Edit '" + value + "'");
     }
@@ -597,7 +603,12 @@ void CSVWorld::EditWidget::remake(int row)
 
                     if (CSMWorld::ColumnBase::isId(display))
                     {
+                        int idColumn = mTable->findColumnIndex(CSMWorld::Columns::ColumnId_Id);
+                        QString id = mTable->data(mTable->index(row, idColumn)).toString();
+
                         IdContextMenu *menu = new IdContextMenu(editor, display);
+                        // Current ID is already opened, so no need to create Edit 'ID' action for it
+                        menu->excludeId(id.toUtf8().constData());
                         connect(menu,
                                 SIGNAL(editIdRequest(const CSMWorld::UniversalId &, const std::string &)),
                                 this,
diff --git a/apps/opencs/view/world/dialoguesubview.hpp b/apps/opencs/view/world/dialoguesubview.hpp
index b35f11eb8f..bdad39578d 100644
--- a/apps/opencs/view/world/dialoguesubview.hpp
+++ b/apps/opencs/view/world/dialoguesubview.hpp
@@ -1,6 +1,7 @@
 #ifndef CSV_WORLD_DIALOGUESUBVIEW_H
 #define CSV_WORLD_DIALOGUESUBVIEW_H
 
+#include <set>
 #include <map>
 #include <memory>
 
@@ -151,12 +152,15 @@ namespace CSVWorld
                                 CSMWorld::ColumnBase::Display display);
     };
 
+    /// A context menu with "Edit 'ID'" action for editors in the dialogue subview
     class IdContextMenu : public QObject
     {
             Q_OBJECT
 
             QWidget *mWidget;
             CSMWorld::UniversalId::Type mIdType;
+            std::set<std::string> mExcludedIds;
+            ///< A list of IDs that should not have the Edit 'ID' action.
 
             QMenu *mContextMenu;
             QAction *mEditIdAction;
@@ -168,6 +172,8 @@ namespace CSVWorld
         public:
             IdContextMenu(QWidget *widget, CSMWorld::ColumnBase::Display display);
 
+            void excludeId(const std::string &id);
+
         private slots:
             void showContextMenu(const QPoint &pos);
             void editIdRequest();