┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-06-08 22:43:43 +0200
committerPeter Penz <[email protected]>2012-06-08 22:51:01 +0200
commit1ddd9c4032870f97fd2e578b246a923cce72088e (patch)
tree510dc53763e946bead94426abf2ea77918172234 /src
parentba6b4a663232dd7e2d6e9110eff5857434d78c4b (diff)
Inline renaming: Improve focus handling
Fix issue that cancelling the inline-renaming by clicking on the other split view applies the wrong focus. Thanks to Frank Reininghaus for the initial patch and noticing this issue. CCBUG: 301252
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp17
-rw-r--r--src/kitemviews/kstandarditemlistwidget.h6
-rw-r--r--src/views/dolphinview.cpp11
-rw-r--r--src/views/dolphinview.h1
4 files changed, 19 insertions, 16 deletions
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index 4a0ad07f9..69f818c4e 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -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);
diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h
index 76b0d143c..222d7b5f4 100644
--- a/src/kitemviews/kstandarditemlistwidget.h
+++ b/src/kitemviews/kstandarditemlistwidget.h
@@ -165,6 +165,12 @@ private:
QRectF roleEditingRect(const QByteArray &role) const;
+ /**
+ * Closes the role editor and returns the focus back
+ * to the KItemListContainer.
+ */
+ void closeRoleEditor();
+
static QPixmap pixmapForIcon(const QString& name, int size);
/**
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 53f9b45bf..e06aad6f2 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -168,8 +168,6 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
this, SLOT(slotSortRoleChangedByHeader(QByteArray,QByteArray)));
connect(m_view, SIGNAL(visibleRolesChanged(QList<QByteArray>,QList<QByteArray>)),
this, SLOT(slotVisibleRolesChangedByHeader(QList<QByteArray>,QList<QByteArray>)));
- connect(m_view, SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)),
- this, SLOT(slotRoleEditingCanceled(int,QByteArray,QVariant)));
connect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)),
this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant)));
connect(m_view->header(), SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)),
@@ -1320,14 +1318,6 @@ void DolphinView::slotVisibleRolesChangedByHeader(const QList<QByteArray>& curre
emit visibleRolesChanged(m_visibleRoles, previousVisibleRoles);
}
-void DolphinView::slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value)
-{
- Q_UNUSED(index);
- Q_UNUSED(role);
- Q_UNUSED(value);
- setFocus();
-}
-
void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value)
{
if (role == "text") {
@@ -1343,7 +1333,6 @@ void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, con
KonqOperations::rename(this, oldUrl, newName);
}
}
- setFocus();
}
void DolphinView::loadDirectory(const KUrl& url, bool reload)
diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h
index f4b008236..b2c4121a0 100644
--- a/src/views/dolphinview.h
+++ b/src/views/dolphinview.h
@@ -628,7 +628,6 @@ private slots:
void slotVisibleRolesChangedByHeader(const QList<QByteArray>& current,
const QList<QByteArray>& previous);
- void slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value);
void slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value);
/**