diff --git a/src/plugins/help/docsettingspage.cpp b/src/plugins/help/docsettingspage.cpp
index 7a911e3e5da70f661bc07db996d1e6c2c333210e..084b516c6b0c616ea9fb16192779fc59914358d0 100644
--- a/src/plugins/help/docsettingspage.cpp
+++ b/src/plugins/help/docsettingspage.cpp
@@ -30,9 +30,12 @@
 #include "docsettingspage.h"
 #include "helpconstants.h"
 
+#include <QtCore/QCoreApplication>
+
 #include <QtGui/QFileDialog>
+#include <QtGui/QKeyEvent>
 #include <QtGui/QMessageBox>
-#include <QtCore/QCoreApplication>
+
 #include <QtHelp/QHelpEngine>
 
 using namespace Help::Internal;
@@ -73,6 +76,7 @@ QWidget *DocSettingsPage::createPage(QWidget *parent)
     connect(m_ui.removeButton, SIGNAL(clicked()),
             this, SLOT(removeDocumentation()));
 
+    m_ui.docsListWidget->installEventFilter(this);
     m_ui.docsListWidget->addItems(m_helpEngine->registeredDocumentations());
     m_registeredDocs = false;
     m_removeDocs.clear();
@@ -108,19 +112,7 @@ void DocSettingsPage::addDocumentation()
 
 void DocSettingsPage::removeDocumentation()
 {
-    QListWidgetItem *item = m_ui.docsListWidget->currentItem();
-    if (!item)
-        return;
-
-    m_removeDocs.append(item->text());
-    int row = m_ui.docsListWidget->currentRow();
-    m_ui.docsListWidget->takeItem(row);
-    if (row > 0)
-        --row;
-    if (m_ui.docsListWidget->count())
-        m_ui.docsListWidget->setCurrentRow(row);
-
-    delete item;
+    removeDocumentation(m_ui.docsListWidget->selectedItems());
 }
 
 void DocSettingsPage::apply()
@@ -153,3 +145,37 @@ bool DocSettingsPage::applyChanges()
 
     return success;
 }
+
+bool DocSettingsPage::eventFilter(QObject *object, QEvent *event)
+{
+    if (object != m_ui.docsListWidget)
+        return Core::IOptionsPage::eventFilter(object, event);
+
+    if (event->type() == QEvent::KeyPress) {
+        QKeyEvent *ke = static_cast<QKeyEvent*>(event);
+        switch (ke->key()) {
+            case Qt::Key_Delete:
+                removeDocumentation(m_ui.docsListWidget->selectedItems());
+            break;
+            default: break;
+        }
+    }
+
+    return Core::IOptionsPage::eventFilter(object, event);
+}
+
+void DocSettingsPage::removeDocumentation(const QList<QListWidgetItem*> items)
+{
+    if (items.isEmpty())
+        return;
+
+    int row = 0;
+    foreach (QListWidgetItem* item, items) {
+        m_removeDocs.append(item->text());
+        row = m_ui.docsListWidget->row(item);
+        delete m_ui.docsListWidget->takeItem(row);
+    }
+
+    m_ui.docsListWidget->setCurrentRow(qMax(row - 1, 0),
+        QItemSelectionModel::ClearAndSelect);
+}
diff --git a/src/plugins/help/docsettingspage.h b/src/plugins/help/docsettingspage.h
index d744faf0c1786af80d9bc15dd0b4d4479ea32e70..eccd42747b10f89a6c7c166ebf500cbb8f5c428f 100644
--- a/src/plugins/help/docsettingspage.h
+++ b/src/plugins/help/docsettingspage.h
@@ -68,6 +68,10 @@ private slots:
     void addDocumentation();
     void removeDocumentation();
 
+private:
+    bool eventFilter(QObject *object, QEvent *event);
+    void removeDocumentation(const QList<QListWidgetItem*> items);
+
 private:
     QHelpEngine *m_helpEngine;
     bool m_registeredDocs;
diff --git a/src/plugins/help/docsettingspage.ui b/src/plugins/help/docsettingspage.ui
index 8429ce9a1fa83454481450df2386987634cf3768..7f7905d8fb341b166b0a0d52bdcc8a650a82e284 100644
--- a/src/plugins/help/docsettingspage.ui
+++ b/src/plugins/help/docsettingspage.ui
@@ -18,7 +18,11 @@
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout">
       <item>
-       <widget class="QListWidget" name="docsListWidget"/>
+       <widget class="QListWidget" name="docsListWidget">
+        <property name="selectionMode">
+         <enum>QAbstractItemView::ContiguousSelection</enum>
+        </property>
+       </widget>
       </item>
       <item>
        <layout class="QVBoxLayout" name="_4">