diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 1976195c91f36156e1d43b05f206d15ae75f989f..9f1e7a8bef547ce924d146a0f479ac408da1dfe1 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -832,6 +832,15 @@ void CPPEditor::mouseReleaseEvent(QMouseEvent *e)
     TextEditor::BaseTextEditor::mouseReleaseEvent(e);
 }
 
+void CPPEditor::keyReleaseEvent(QKeyEvent *e)
+{
+    // Clear link emulation when Ctrl is released
+    if (e->key() == Qt::Key_Control) {
+        setExtraSelections(OtherSelection, QList<QTextEdit::ExtraSelection>());
+        viewport()->setCursor(Qt::IBeamCursor);
+    }
+}
+
 QList<int> CPPEditorEditable::context() const
 {
     return m_context;
diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h
index c54b33a0cb083e39c731d16717da06749fcf5bb6..3414d79f1c68fc63bbfacb391cbf6b9a312cf117 100644
--- a/src/plugins/cppeditor/cppeditor.h
+++ b/src/plugins/cppeditor/cppeditor.h
@@ -96,9 +96,10 @@ public slots:
     void deleteEndOfToken();
 
 protected:
-    void contextMenuEvent(QContextMenuEvent *e);
-    void mouseMoveEvent(QMouseEvent *e);
-    void mouseReleaseEvent(QMouseEvent *e);
+    void contextMenuEvent(QContextMenuEvent *);
+    void mouseMoveEvent(QMouseEvent *);
+    void mouseReleaseEvent(QMouseEvent *);
+    void keyReleaseEvent(QKeyEvent *);
 
     TextEditor::BaseTextEditorEditable *createEditableInterface();