From: Frank Reininghaus Date: Sun, 9 Jun 2013 10:14:26 +0000 (+0200) Subject: Do not rename files unexpectedly when changing the URL X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/9cf54dcc025073f29e6a1f55c83c4edcec6a5ea3?hp=-c Do not rename files unexpectedly when changing the URL This is the real fix now - note that the last commit 4de9a233642a62ee96bac6031340d3eea21f14f9 was actually the fix for bug 320823. Somehow, I have messed up the local branches in my git respository clone - sorry for the confusion! BUG: 319912 FIXED-IN: 4.10.5 REVIEW: 110908 --- 9cf54dcc025073f29e6a1f55c83c4edcec6a5ea3 diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 502ffd428..d69d664af 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -174,8 +174,8 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : this, SLOT(slotSortRoleChangedByHeader(QByteArray,QByteArray))); connect(m_view, SIGNAL(visibleRolesChanged(QList,QList)), this, SLOT(slotVisibleRolesChangedByHeader(QList,QList))); - connect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), - this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + connect(m_view, SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)), + this, SLOT(slotRoleEditingCanceled(int,QByteArray,QVariant))); connect(m_view->header(), SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)), this, SLOT(slotHeaderColumnWidthChanged(QByteArray,qreal,qreal))); @@ -609,6 +609,9 @@ void DolphinView::setUrl(const KUrl& url) hideToolTip(); + disconnect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), + this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + // It is important to clear the items from the model before // applying the view properties, otherwise expensive operations // might be done on the existing items although they get cleared @@ -648,6 +651,9 @@ void DolphinView::renameSelectedItems() if (items.count() == 1 && GeneralSettings::renameInline()) { const int index = m_model->index(items.first()); m_view->editRole(index, "text"); + + connect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), + this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); } else { RenameDialog* dialog = new RenameDialog(this, items); dialog->setAttribute(Qt::WA_DeleteOnClose); @@ -1366,8 +1372,17 @@ void DolphinView::slotVisibleRolesChangedByHeader(const QList& curre emit visibleRolesChanged(m_visibleRoles, previousVisibleRoles); } +void DolphinView::slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value) +{ + disconnect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), + this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); +} + void DolphinView::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value) { + disconnect(m_view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), + this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + if (index < 0 || index >= m_model->count()) { return; } diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index a2fe9f62a..62b5df7c7 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -655,6 +655,7 @@ private slots: void slotVisibleRolesChangedByHeader(const QList& current, const QList& previous); + void slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value); void slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value); /**