]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kstandarditemlistwidget.cpp
Inline renaming: Improve focus handling
[dolphin.git] / src / kitemviews / kstandarditemlistwidget.cpp
index 4a0ad07f949ad494c4affe4f8d697c4ecf851d5a..69f818c4e87bee0a71b3701488ce19989580f8a1 100644 (file)
@@ -688,8 +688,7 @@ void KStandardItemListWidget::slotRoleEditingCanceled(int index,
                                                   const QByteArray& role,
                                                   const QVariant& value)
 {
-    m_roleEditor->deleteLater();
-    m_roleEditor = 0;
+    closeRoleEditor();
     emit roleEditingCanceled(index, role, value);
     setEditedRole(QByteArray());
 }
@@ -698,8 +697,7 @@ void KStandardItemListWidget::slotRoleEditingFinished(int index,
                                                   const QByteArray& role,
                                                   const QVariant& value)
 {
-    m_roleEditor->deleteLater();
-    m_roleEditor = 0;
+    closeRoleEditor();
     emit roleEditingFinished(index, role, value);
     setEditedRole(QByteArray());
 }
@@ -1241,6 +1239,17 @@ QRectF KStandardItemListWidget::roleEditingRect(const QByteArray& role) const
     return rect;
 }
 
+void KStandardItemListWidget::closeRoleEditor()
+{
+    if (m_roleEditor->hasFocus()) {
+        // If the editing was not ended by a FocusOut event, we have
+        // to transfer the keyboard focus back to the KItemListContainer.
+        scene()->views()[0]->parentWidget()->setFocus();
+    }
+    m_roleEditor->deleteLater();
+    m_roleEditor = 0;
+}
+
 QPixmap KStandardItemListWidget::pixmapForIcon(const QString& name, int size)
 {
     const KIcon icon(name);