diff options
| -rw-r--r-- | src/kitemviews/private/kitemlistrubberband.cpp | 16 | ||||
| -rw-r--r-- | src/views/renamedialog.cpp | 26 | ||||
| -rw-r--r-- | src/views/renamedialog.h | 1 |
3 files changed, 39 insertions, 4 deletions
diff --git a/src/kitemviews/private/kitemlistrubberband.cpp b/src/kitemviews/private/kitemlistrubberband.cpp index ae023d2aa..58567c460 100644 --- a/src/kitemviews/private/kitemlistrubberband.cpp +++ b/src/kitemviews/private/kitemlistrubberband.cpp @@ -50,6 +50,22 @@ void KItemListRubberBand::setEndPosition(const QPointF& pos) if (m_endPos != pos) { const QPointF previous = m_endPos; m_endPos = pos; + + if (m_startPos.x() == m_endPos.x()) { + if (previous.x() < m_startPos.x()) { + m_endPos.rx() = m_startPos.x() - 1.0; + } else { + m_endPos.rx() = m_startPos.x() + 1.0; + } + } + if (m_startPos.y() == m_endPos.y()) { + if (previous.y() < m_startPos.y()) { + m_endPos.ry() = m_startPos.y() - 1.0; + } else { + m_endPos.ry() = m_startPos.y() + 1.0; + } + } + emit endPositionChanged(m_endPos, previous); } } diff --git a/src/views/renamedialog.cpp b/src/views/renamedialog.cpp index a16bb953c..abb37b897 100644 --- a/src/views/renamedialog.cpp +++ b/src/views/renamedialog.cpp @@ -45,6 +45,7 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : m_newName(), m_lineEdit(0), m_items(items), + m_allExtensionsDifferent(true), m_spinBox(0) { const QSize minSize = minimumSize(); @@ -107,6 +108,18 @@ RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : topLayout->addWidget(m_lineEdit); if (!m_renameOneItem) { + QSet<QString> extensions; + foreach (const KFileItem& item, m_items) { + const QString extension = KMimeType::extractKnownExtension(item.url().prettyUrl().toLower()); + + if (extensions.contains(extension)) { + m_allExtensionsDifferent = false; + break; + } + + extensions.insert(extension); + } + QLabel* infoLabel = new QLabel(i18nc("@info", "# will be replaced by ascending numbers starting with:"), page); m_spinBox = new KIntSpinBox(0, 10000, 1, 1, page, 10); @@ -146,11 +159,16 @@ void RenameDialog::slotTextChanged(const QString& newName) { bool enable = !newName.isEmpty() && (newName != QLatin1String("..")) && (newName != QLatin1String(".")); if (enable && !m_renameOneItem) { - // Assure that the new name contains exactly one # (or a connected sequence of #'s) const int count = newName.count(QLatin1Char('#')); - const int first = newName.indexOf(QLatin1Char('#')); - const int last = newName.lastIndexOf(QLatin1Char('#')); - enable = (last - first + 1 == count); + if (count == 0) { + // Renaming multiple files without '#' will only work if all extensions are different. + enable = m_allExtensionsDifferent; + } else { + // Assure that the new name contains exactly one # (or a connected sequence of #'s) + const int first = newName.indexOf(QLatin1Char('#')); + const int last = newName.lastIndexOf(QLatin1Char('#')); + enable = (last - first + 1 == count); + } } enableButtonOk(enable); } diff --git a/src/views/renamedialog.h b/src/views/renamedialog.h index 18dca3617..29ef8bdf1 100644 --- a/src/views/renamedialog.h +++ b/src/views/renamedialog.h @@ -64,6 +64,7 @@ private: QString m_newName; KLineEdit* m_lineEdit; KFileItemList m_items; + bool m_allExtensionsDifferent; KIntSpinBox* m_spinBox; }; |
