From a70fd061243d4e321b207bc6a3139e2c89825494 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Thu, 2 May 2013 19:23:19 +0200 Subject: [PATCH 1/3] Rename multiple files: Determine correctly if the name pattern is valid The "Rename" button in the dialog should be enabled if and only if the "new name" pattern is valid. This is the case if the pattern contains exactly one sequence of '#', which will be replaced by digits. This patch fixes the problem that (a) A pattern that contains a single '#' is not considered valid, and (b) A pattern without any '#' at all is not recognized as invalid. BUG: 318942 FIXED-IN: 4.10.3 REVIEW: 110223 --- src/views/renamedialog.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/views/renamedialog.cpp b/src/views/renamedialog.cpp index 07add113a4..a16bb953cb 100644 --- a/src/views/renamedialog.cpp +++ b/src/views/renamedialog.cpp @@ -147,16 +147,10 @@ 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 minSplitCount = 1; - int maxSplitCount = 2; - if (newName.startsWith(QLatin1Char('#'))) { - --maxSplitCount; - } - if (newName.endsWith(QLatin1Char('#'))) { - --maxSplitCount; - } - const int splitCount = newName.split(QLatin1Char('#'), QString::SkipEmptyParts).count(); - enable = enable && (splitCount >= minSplitCount) && (splitCount <= maxSplitCount); + const int count = newName.count(QLatin1Char('#')); + const int first = newName.indexOf(QLatin1Char('#')); + const int last = newName.lastIndexOf(QLatin1Char('#')); + enable = (last - first + 1 == count); } enableButtonOk(enable); } From 9480a1ee44e285d2ab4eb1abf98e6e0386fc0c1e Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Thu, 2 May 2013 19:27:47 +0200 Subject: [PATCH 2/3] Use the same text color for selected hidden and non-hidden items This fixes the problem that the names of selected hidden items are unreadable with some color schemes. BUG: 305734 FIXED-IN: 4.10.3 REVIEW: 110164 --- src/kitemviews/kstandarditemlistwidget.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index d36265f567..f0394dfdab 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -294,7 +294,7 @@ void KStandardItemListWidget::paint(QPainter* painter, const QStyleOptionGraphic } painter->setFont(m_customizedFont); - painter->setPen(m_isHidden ? m_additionalInfoTextColor : textColor()); + painter->setPen(textColor()); const TextInfo* textInfo = m_textInfo.value("text"); if (!textInfo) { @@ -523,8 +523,12 @@ void KStandardItemListWidget::setTextColor(const QColor& color) QColor KStandardItemListWidget::textColor() const { - if (m_customTextColor.isValid() && !isSelected()) { - return m_customTextColor; + if (!isSelected()) { + if (m_isHidden) { + return m_additionalInfoTextColor; + } else if (m_customTextColor.isValid()) { + return m_customTextColor; + } } const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive; From ff3b009e68f485a1a65a7535b01eeeb7128463d2 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Thu, 2 May 2013 19:38:01 +0200 Subject: [PATCH 3/3] Do not change the view URL if it is a symlink to the current directory BUG: 302037 FIXED-IN: 4.10.3 REVIEW: 110233 --- src/panels/terminal/terminalpanel.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp index 28c6a9383f..bfd3002f0b 100644 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@ -31,6 +31,7 @@ #include #include +#include #include TerminalPanel::TerminalPanel(QWidget* parent) : @@ -183,8 +184,12 @@ void TerminalPanel::slotKonsolePartCurrentDirectoryChanged(const QString& dir) { m_konsolePartCurrentDirectory = dir; + // Only change the view URL if 'dir' is different from the current view URL. + // Note that the current view URL could also be a symbolic link to 'dir' + // -> use QDir::canonicalPath() to check that. + const KUrl oldUrl(url()); const KUrl newUrl(dir); - if (newUrl != url()) { + if (newUrl != oldUrl && dir != QDir(oldUrl.path()).canonicalPath()) { emit changeUrl(newUrl); } }