┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kitemlistview.cpp16
-rw-r--r--src/kitemviews/kitemlistview.h1
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp7
-rw-r--r--src/kitemviews/kstandarditemlistwidget.h1
4 files changed, 19 insertions, 6 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp
index b780e3ff4..e828b6967 100644
--- a/src/kitemviews/kitemlistview.cpp
+++ b/src/kitemviews/kitemlistview.cpp
@@ -117,6 +117,7 @@ KItemListView::KItemListView(QGraphicsWidget *parent)
m_animation = new KItemListViewAnimation(this);
connect(m_animation, &KItemListViewAnimation::finished, this, &KItemListView::slotAnimationFinished);
+ connect(m_animation, &KItemListViewAnimation::start, this, &KItemListView::slotAnimationStarted);
m_rubberBand = new KItemListRubberBand(this);
connect(m_rubberBand, &KItemListRubberBand::activationChanged, this, &KItemListView::slotRubberBandActivationChanged);
@@ -758,8 +759,7 @@ void KItemListView::editRole(int index, const QByteArray &role)
if (!widget) {
return;
}
- if (m_editingRole || m_animation->isStarted(widget)) {
- Q_EMIT widget->roleEditingCanceled(index, role, QVariant());
+ if (widget->editedRole() == role) {
return;
}
@@ -1577,6 +1577,13 @@ void KItemListView::slotSelectionChanged(const KItemSet &current, const KItemSet
#endif
}
+void KItemListView::slotAnimationStarted(QGraphicsWidget *widget, KItemListViewAnimation::AnimationType /* type */, const QVariant & /* endValue */)
+{
+ KStandardItemListWidget *listWidget = qobject_cast<KStandardItemListWidget *>(widget);
+ Q_ASSERT(widget);
+ listWidget->cancelRoleEditing();
+}
+
void KItemListView::slotAnimationFinished(QGraphicsWidget *widget, KItemListViewAnimation::AnimationType type)
{
KItemListWidget *itemListWidget = qobject_cast<KItemListWidget *>(widget);
@@ -1926,9 +1933,6 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha
if (animate) {
if (m_animation->isStarted(widget, KItemListViewAnimation::MovingAnimation)) {
- if (m_editingRole) {
- Q_EMIT widget->roleEditingCanceled(widget->index(), QByteArray(), QVariant());
- }
m_animation->start(widget, KItemListViewAnimation::MovingAnimation, newPos);
applyNewPos = false;
}
@@ -2804,7 +2808,7 @@ bool KItemListView::hasSiblingSuccessor(int index) const
void KItemListView::disconnectRoleEditingSignals(int index)
{
- KStandardItemListWidget *widget = qobject_cast<KStandardItemListWidget *>(m_visibleItems.value(index));
+ KItemListWidget *widget = m_visibleItems.value(index);
if (!widget) {
return;
}
diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h
index 415710e02..c8ab796a9 100644
--- a/src/kitemviews/kitemlistview.h
+++ b/src/kitemviews/kitemlistview.h
@@ -446,6 +446,7 @@ protected Q_SLOTS:
private Q_SLOTS:
void slotAnimationFinished(QGraphicsWidget *widget, KItemListViewAnimation::AnimationType type);
+ void slotAnimationStarted(QGraphicsWidget *widget, KItemListViewAnimation::AnimationType type, const QVariant &endValue);
void slotRubberBandPosChanged();
void slotRubberBandActivationChanged(bool active);
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index 494473c62..9195f4e77 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -964,6 +964,13 @@ void KStandardItemListWidget::finishRoleEditing()
}
}
+void KStandardItemListWidget::cancelRoleEditing()
+{
+ if (!editedRole().isEmpty() && m_roleEditor) {
+ slotRoleEditingCanceled(editedRole(), KIO::encodeFileName(m_roleEditor->toPlainText()));
+ }
+}
+
void KStandardItemListWidget::slotCutItemsChanged()
{
const QUrl itemUrl = data().value("url").toUrl();
diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h
index 9e6fff935..992d41aa1 100644
--- a/src/kitemviews/kstandarditemlistwidget.h
+++ b/src/kitemviews/kstandarditemlistwidget.h
@@ -196,6 +196,7 @@ protected:
public Q_SLOTS:
void finishRoleEditing();
+ void cancelRoleEditing();
private Q_SLOTS:
void slotCutItemsChanged();