Hello community,

here is the log from the commit of package kdeutils4 for openSUSE:Factory
checked in at Wed Jun 8 17:31:05 CEST 2011.



--------
--- KDE/kdeutils4/kdeutils4.changes     2011-05-10 13:03:47.000000000 +0200
+++ /mounts/work_src_done/STABLE/kdeutils4/kdeutils4.changes    2011-06-03 
15:38:54.000000000 +0200
@@ -1,0 +2,8 @@
+Fri Jun  3 15:38:53 CEST 2011 - dmuel...@suse.de
+
+- update to 4.6.4
+  * Bugfixes over KDE 4.6.3
+  *  see http://kde.org/announcements/changelogs/changelog4_6_3to4_6_4.php for 
details
+  
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


Old:
----
  4_5_BRANCH.diff
  ark-use-libarchive-r1230916.diff
  kdeutils-4.6.3.tar.bz2

New:
----
  4_6_BRANCH.diff
  kdeutils-4.6.4.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdeutils4.spec ++++++
--- /var/tmp/diff_new_pack.dpgr26/_old  2011-06-08 17:30:45.000000000 +0200
+++ /var/tmp/diff_new_pack.dpgr26/_new  2011-06-08 17:30:45.000000000 +0200
@@ -30,16 +30,15 @@
 Group:          Productivity/Other
 Summary:        Base Package of KDE Utility Programs
 Url:            http://www.kde.org
-Version:        4.6.3
+Version:        4.6.4
 Release:        1
 BuildRequires:  gmp-devel kdebase4-workspace-devel >= %version 
libqimageblitz-devel net-snmp-devel pcsc-lite python-devel
 BuildRequires:  libkdepimlibs4-devel libkonq-devel libqca2-devel libzip-devel 
oxygen-icon-theme-large
 BuildRequires:  libarchive-devel libknotificationitem-devel libqjson-devel 
xz-devel
 Source0:        kdeutils-%version.tar.bz2
-Patch:          4_5_BRANCH.diff
+Patch:          4_6_BRANCH.diff
 Patch1:         desktop-files.diff
 Patch2:         kgpg-autostart.diff
-Patch3:         ark-use-libarchive-r1230916.diff
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 %kde4_runtime_requires
 Suggests:       ark
@@ -74,7 +73,6 @@
 %patch
 %patch1
 %patch2
-%patch3
 
 %build
   %cmake_kde4 -d build

++++++ 4_5_BRANCH.diff -> 4_6_BRANCH.diff ++++++

++++++ kdeutils-4.6.3.tar.bz2 -> kdeutils-4.6.4.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/CMakeLists.txt 
new/kdeutils-4.6.4/ark/CMakeLists.txt
--- old/kdeutils-4.6.3/ark/CMakeLists.txt       2011-01-18 22:25:04.000000000 
+0100
+++ new/kdeutils-4.6.4/ark/CMakeLists.txt       2011-06-02 12:04:31.000000000 
+0200
@@ -1,5 +1,8 @@
 project(ark)
 
+macro_optional_find_package(LibArchive)
+macro_log_feature(LIBARCHIVE_FOUND "LibArchive" "A library for dealing with a 
wide variety of archive file formats" "http://code.google.com/p/libarchive/"; 
FALSE "" "Required for among others tar, tar.gz, tar.bz2 formats in Ark.")
+
 configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
 
 add_subdirectory(part)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/app/batchextract.cpp 
new/kdeutils-4.6.4/ark/app/batchextract.cpp
--- old/kdeutils-4.6.3/ark/app/batchextract.cpp 2011-01-18 22:25:03.000000000 
+0100
+++ new/kdeutils-4.6.4/ark/app/batchextract.cpp 2011-06-02 12:04:29.000000000 
+0200
@@ -47,9 +47,10 @@
 #include <QWeakPointer>
 
 BatchExtract::BatchExtract()
-        : m_autoSubfolder(false),
-        m_preservePaths(true),
-        m_openDestinationAfterExtraction(false)
+    : KCompositeJob(0),
+      m_autoSubfolder(false),
+      m_preservePaths(true),
+      m_openDestinationAfterExtraction(false)
 {
     setCapabilities(KJob::Killable);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/CMakeLists.txt 
new/kdeutils-4.6.4/ark/kerfuffle/CMakeLists.txt
--- old/kdeutils-4.6.3/ark/kerfuffle/CMakeLists.txt     2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/CMakeLists.txt     2011-06-02 
12:04:31.000000000 +0200
@@ -27,6 +27,9 @@
 kde4_add_library(kerfuffle SHARED ${kerfuffle_SRCS})
 
 target_link_libraries(kerfuffle ${KDE4_KFILE_LIBS} ${KDE4_KPARTS_LIBS})
+if (NOT WIN32)
+  target_link_libraries(kerfuffle ${KDE4_KPTY_LIBS})
+endif (NOT WIN32)
 
 set_target_properties(kerfuffle PROPERTIES VERSION ${GENERIC_LIB_VERSION} 
SOVERSION ${GENERIC_LIB_SOVERSION})
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/adddialog.cpp 
new/kdeutils-4.6.4/ark/kerfuffle/adddialog.cpp
--- old/kdeutils-4.6.3/ark/kerfuffle/adddialog.cpp      2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/adddialog.cpp      2011-06-02 
12:04:31.000000000 +0200
@@ -2,7 +2,7 @@
  * ark -- archiver for the KDE project
  *
  * Copyright (C) 2008 Harald Hvaal <haral...@stud.ntnu.no>
- * Copyright (C) 2009 Raphael Kubo da Costa <kub...@gmail.com>
+ * Copyright (C) 2009,2011 Raphael Kubo da Costa <kub...@gmail.com>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -58,6 +58,7 @@
 {
     setOperationMode(KFileDialog::Saving);
     setMode(KFile::File | KFile::LocalOnly);
+    setConfirmOverwrite(true);
     setCaption(i18n("Compress to Archive"));
 
     loadConfiguration();
@@ -71,7 +72,11 @@
 
     // Set up a default name if there's only one file to compress
     if (itemsToAdd.size() == 1) {
-        setSelection(QFileInfo(itemsToAdd.first()).baseName());
+        // #272914: Add an extension when it is present, otherwise KFileDialog
+        // will not automatically add it as baseFileName is a file which
+        // already exists.
+        const QString baseFileName = QFileInfo(itemsToAdd.first()).baseName();
+        setSelection(baseFileName + currentFilterMimeType()->mainExtension());
     }
 
     //These extra options will be implemented in a 4.2+ version of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/archivebase.cpp 
new/kdeutils-4.6.4/ark/kerfuffle/archivebase.cpp
--- old/kdeutils-4.6.3/ark/kerfuffle/archivebase.cpp    2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/archivebase.cpp    2011-06-02 
12:04:31.000000000 +0200
@@ -156,6 +156,9 @@
     if (!m_hasBeenListed) {
         KJob *job = list();
 
+        connect(job, SIGNAL(userQuery(Kerfuffle::Query*)),
+                SLOT(onUserQuery(Kerfuffle::Query*)));
+
         QEventLoop loop(this);
 
         connect(job, SIGNAL(result(KJob*)),
@@ -165,6 +168,11 @@
     }
 }
 
+void ArchiveBase::onUserQuery(Query* query)
+{
+    query->execute();
+}
+
 bool ArchiveBase::isSingleFolderArchive()
 {
     listIfNotListed();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/archivebase.h 
new/kdeutils-4.6.4/ark/kerfuffle/archivebase.h
--- old/kdeutils-4.6.3/ark/kerfuffle/archivebase.h      2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/archivebase.h      2011-06-02 
12:04:31.000000000 +0200
@@ -65,6 +65,7 @@
 private slots:
     void onListFinished(KJob*);
     void onAddFinished(KJob*);
+    void onUserQuery(Kerfuffle::Query*);
 
 private:
     void listIfNotListed();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.cpp 
new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.cpp
--- old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.cpp   2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.cpp   2011-06-02 
12:04:31.000000000 +0200
@@ -28,7 +28,13 @@
 #include "cliinterface.h"
 #include "queries.h"
 
-#include <KProcess>
+#ifdef Q_OS_WIN
+# include <KProcess>
+#else
+# include <KPtyDevice>
+# include <KPtyProcess>
+#endif
+
 #include <KStandardDirs>
 #include <KDebug>
 #include <KLocale>
@@ -38,6 +44,7 @@
 #include <QDir>
 #include <QEventLoop>
 #include <QFile>
+#include <QProcess>
 #include <QThread>
 #include <QTimer>
 
@@ -49,6 +56,10 @@
 {
     //because this interface uses the event loop
     setWaitForFinishedSignal(true);
+
+    if (QMetaType::type("QProcess::ExitStatus") == 0) {
+        qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
+    }
 }
 
 void CliInterface::cacheParameterList()
@@ -63,8 +74,7 @@
 
 CliInterface::~CliInterface()
 {
-    delete m_process;
-    m_process = 0;
+    Q_ASSERT(!m_process);
 }
 
 bool CliInterface::list()
@@ -72,15 +82,13 @@
     cacheParameterList();
     m_operationMode = List;
 
-    if (!findProgramAndCreateProcess(m_param.value(ListProgram).toString())) {
-        failOperation();
-        return false;
-    }
-
     QStringList args = m_param.value(ListArgs).toStringList();
     substituteListVariables(args);
 
-    executeProcess(m_program, args);
+    if (!runProcess(m_param.value(ListProgram).toString(), args)) {
+        failOperation();
+        return false;
+    }
 
     return true;
 }
@@ -92,11 +100,6 @@
 
     m_operationMode = Copy;
 
-    if 
(!findProgramAndCreateProcess(m_param.value(ExtractProgram).toString())) {
-        failOperation();
-        return false;
-    }
-
     //start preparing the argument list
     QStringList args = m_param.value(ExtractArgs).toStringList();
 
@@ -221,7 +224,10 @@
     kDebug() << "Setting current dir to " << destinationDirectory;
     QDir::setCurrent(destinationDirectory);
 
-    executeProcess(m_program, args);
+    if (!runProcess(m_param.value(ExtractProgram).toString(), args)) {
+        failOperation();
+        return false;
+    }
 
     return true;
 }
@@ -232,11 +238,6 @@
 
     m_operationMode = Add;
 
-    if (!findProgramAndCreateProcess(m_param.value(AddProgram).toString())) {
-        failOperation();
-        return false;
-    }
-
     const QString globalWorkDir = options.value(QLatin1String( "GlobalWorkDir" 
)).toString();
     const QDir workDir = globalWorkDir.isEmpty() ? QDir::current() : 
QDir(globalWorkDir);
     if (!globalWorkDir.isEmpty()) {
@@ -273,7 +274,10 @@
         }
     }
 
-    executeProcess(m_program, args);
+    if (!runProcess(m_param.value(AddProgram).toString(), args)) {
+        failOperation();
+        return false;
+    }
 
     return true;
 }
@@ -283,11 +287,6 @@
     cacheParameterList();
     m_operationMode = Delete;
 
-    if (!findProgramAndCreateProcess(m_param.value(DeleteProgram).toString())) 
{
-        failOperation();
-        return false;
-    }
-
     //start preparing the argument list
     QStringList args = m_param.value(DeleteArgs).toStringList();
 
@@ -310,47 +309,57 @@
 
     m_removedFiles = files;
 
-    executeProcess(m_program, args);
+    if (!runProcess(m_param.value(DeleteProgram).toString(), args)) {
+        failOperation();
+        return false;
+    }
 
     return true;
 }
 
-bool CliInterface::createProcess()
+bool CliInterface::runProcess(const QString& programName, const QStringList& 
arguments)
 {
-    kDebug();
-
-    if (m_process) {
-        delete m_process;
-        m_process = 0;
+    const QString programPath(KStandardDirs::findExe(programName));
+    if (programPath.isEmpty()) {
+        error(i18nc("@info", "Failed to locate program <filename>%1</filename> 
in PATH.", programName));
+        return false;
     }
 
-    m_stdOutData.clear();
+    Q_ASSERT(!m_process);
+
+    kDebug() << "Executing" << programPath << arguments;
 
+#ifdef Q_OS_WIN
     m_process = new KProcess();
+#else
+    m_process = new KPtyProcess();
+    m_process->setPtyChannels(KPtyProcess::StdinChannel);
+#endif
+
     m_process->setTextModeEnabled(true);
     m_process->setOutputChannelMode(KProcess::MergedChannels);
-
-    if (QMetaType::type("QProcess::ExitStatus") == 0) {
-        qRegisterMetaType<QProcess::ExitStatus>("QProcess::ExitStatus");
-    }
+    m_process->setNextOpenMode(QIODevice::ReadWrite | QIODevice::Unbuffered);
+    m_process->setProgram(programPath, arguments);
 
     connect(m_process, SIGNAL(started()), SLOT(started()), 
Qt::DirectConnection);
     connect(m_process, SIGNAL(readyReadStandardOutput()), SLOT(readStdout()), 
Qt::DirectConnection);
     connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), 
SLOT(processFinished(int, QProcess::ExitStatus)), Qt::DirectConnection);
 
-    return true;
-}
-
-bool CliInterface::executeProcess(const QString& path, const QStringList & 
args)
-{
-    kDebug() << "Executing " << path << args;
-    Q_ASSERT(!path.isEmpty());
+    m_stdOutData.clear();
 
-    m_process->setProgram(path, args);
-    m_process->setNextOpenMode(QIODevice::ReadWrite | QIODevice::Unbuffered);
     m_process->start();
 
-    return true;
+#ifdef Q_OS_WIN
+    bool ret = m_process->waitForFinished(-1);
+#else
+    QEventLoop loop;
+    bool ret = (loop.exec(QEventLoop::WaitForMoreEvents | 
QEventLoop::ExcludeUserInputEvents) == 0);
+#endif
+
+    delete m_process;
+    m_process = 0;
+
+    return ret;
 }
 
 void CliInterface::started()
@@ -435,6 +444,7 @@
     bool foundErrorMessage =
         (checkForErrorMessage(QLatin1String( lines.last() ), 
WrongPasswordPatterns) ||
          checkForErrorMessage(QLatin1String( lines.last() ), 
ExtractionFailedPatterns) ||
+         checkForPasswordPromptMessage(QLatin1String(lines.last())) ||
          checkForFileExistsMessage(QLatin1String( lines.last() )));
 
     if (foundErrorMessage) {
@@ -482,7 +492,6 @@
         if (checkForErrorMessage(line, WrongPasswordPatterns)) {
             kDebug() << "Wrong password!";
             error(i18n("Incorrect password."));
-            setPassword(QString());
             failOperation();
             return;
         }
@@ -500,10 +509,29 @@
     }
 
     if (m_operationMode == List) {
+        if (checkForPasswordPromptMessage(line)) {
+            kDebug() << "Found a password prompt";
+
+            Kerfuffle::PasswordNeededQuery query(filename());
+            userQuery(&query);
+            query.waitForResponse();
+
+            if (query.responseCancelled()) {
+                failOperation();
+                return;
+            }
+
+            setPassword(query.password());
+
+            const QString response(password() + QLatin1Char('\n'));
+            writeToProcess(response.toLocal8Bit());
+
+            return;
+        }
+
         if (checkForErrorMessage(line, WrongPasswordPatterns)) {
             kDebug() << "Wrong password!";
             error(i18n("Incorrect password."));
-            setPassword(QString());
             failOperation();
             return;
         }
@@ -524,21 +552,22 @@
     }
 }
 
-bool CliInterface::findProgramAndCreateProcess(const QString& program)
+bool CliInterface::checkForPasswordPromptMessage(const QString& line)
 {
-    m_program = KStandardDirs::findExe(program);
+    const QString 
passwordPromptPattern(m_param.value(PasswordPromptPattern).toString());
 
-    if (m_program.isEmpty()) {
-        error(i18nc("@info", "Failed to locate program <filename>%1</filename> 
in PATH.", program));
+    if (passwordPromptPattern.isEmpty())
         return false;
+
+    if (m_passwordPromptPattern.isEmpty()) {
+        
m_passwordPromptPattern.setPattern(m_param.value(PasswordPromptPattern).toString());
     }
 
-    if (!createProcess()) {
-        error(i18nc("@info", "Found program <filename>%1</filename>, but 
failed to initialize the process.", program));
-        return false;
+    if (m_passwordPromptPattern.indexIn(line) != -1) {
+        return true;
     }
 
-    return true;
+    return false;
 }
 
 bool CliInterface::checkForFileExistsMessage(const QString& line)
@@ -589,9 +618,7 @@
 
     responseToProcess += QLatin1Char( '\n' );
 
-    kDebug() << "Writing " << responseToProcess;
-
-    m_process->write(responseToProcess.toLocal8Bit());
+    writeToProcess(responseToProcess.toLocal8Bit());
 
     return true;
 }
@@ -625,14 +652,11 @@
 bool CliInterface::doKill()
 {
     if (m_process) {
-        m_process->terminate();
-
-        if (!m_process->waitForFinished()) {
+        // Give some time for the application to finish gracefully
+        if (!m_process->waitForFinished(5)) {
             m_process->kill();
         }
 
-        m_process->waitForFinished();
-
         return true;
     }
 
@@ -660,32 +684,23 @@
     }
 }
 
-QString CliInterface::escapedCharacters()
-{
-    return m_escapedCharacters;
-}
-
-void CliInterface::setEscapedCharacters(const QString& characters)
+QString CliInterface::escapeFileName(const QString& fileName) const
 {
-    m_escapedCharacters = characters;
+    return fileName;
 }
 
-QString CliInterface::escapeFileName(const QString& fileName)
+void CliInterface::writeToProcess(const QByteArray& data)
 {
-    QString quoted;
-    const int len = fileName.length();
-    const QLatin1Char backslash('\\');
-    quoted.reserve(len * 2);
-
-    for (int i = 0; i < len; ++i) {
-        if (m_escapedCharacters.contains(fileName.at(i))) {
-            quoted.append(backslash);
-        }
+    Q_ASSERT(m_process);
+    Q_ASSERT(!data.isNull());
 
-        quoted.append(fileName.at(i));
-    }
+    kDebug() << "Writing" << data << "to the process";
 
-    return quoted;
+#ifdef Q_OS_WIN
+    m_process->write(data);
+#else
+    m_process->pty()->write(data);
+#endif
 }
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.h 
new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.h
--- old/kdeutils-4.6.3/ark/kerfuffle/cliinterface.h     2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/kerfuffle/cliinterface.h     2011-06-02 
12:04:31.000000000 +0200
@@ -33,6 +33,7 @@
 #include <QtCore/QRegExp>
 
 class KProcess;
+class KPtyProcess;
 
 namespace Kerfuffle
 {
@@ -48,6 +49,13 @@
      */
     CaptureProgress = 0,
 
+    /**
+     * QString
+     * Default: empty
+     * A regexp pattern that matches the program's password prompt.
+     */
+    PasswordPromptPattern,
+
     ///////////////[ LIST ]/////////////
 
     /**
@@ -255,12 +263,24 @@
     void setEscapedCharacters(const QString& characters);
 
 private:
-    bool findProgramAndCreateProcess(const QString& program);
     void substituteListVariables(QStringList& params);
 
-    bool createProcess();
-    bool executeProcess(const QString& path, const QStringList & args);
     void cacheParameterList();
+
+    /**
+     * Checks whether a line of the program's output is a password prompt.
+     *
+     * It uses the regular expression in the @c PasswordPromptPattern parameter
+     * for the check.
+     *
+     * @param line A line of the program's output.
+     *
+     * @return @c true if the given @p line is a password prompt, @c false
+     * otherwise.
+     */
+
+    bool checkForPasswordPromptMessage(const QString& line);
+
     bool checkForFileExistsMessage(const QString& line);
     bool handleFileExistsMessage(const QString& filename);
     bool checkForErrorMessage(const QString& line, int parameterIndex);
@@ -269,24 +289,47 @@
     void failOperation();
 
     /**
-     * Precedes the characters returned by escapedCharacters() with a
-     * backslash in @p fileName.
+     * Run @p programName with the given @p arguments.
+     * The method waits until @p programName is finished to exit.
+     *
+     * @param programName The program that will be run (not the whole path).
+     * @param arguments A list of arguments that will be passed to the program.
+     *
+     * @return @c true if the program was found and the process ran correctly,
+     *         @c false otherwise.
+     */
+    bool runProcess(const QString& programName, const QStringList& arguments);
+
+    /**
+     * Performs any additional escaping and processing on @p fileName
+     * before passing it to the underlying process.
+     *
+     * The default implementation returns @p fileName unchanged.
      *
      * @param fileName String to escape.
      */
-    QString escapeFileName(const QString& fileName);
+    virtual QString escapeFileName(const QString &fileName) const;
+
+    /**
+     * Wrapper around KProcess::write() or KPtyDevice::write(), depending on
+     * the platform.
+     */
+    void writeToProcess(const QByteArray& data);
 
     QByteArray m_stdOutData;
     bool m_userCancelled;
     QRegExp m_existsPattern;
+    QRegExp m_passwordPromptPattern;
 
+#ifdef Q_OS_WIN
     KProcess *m_process;
-    QString m_program;
+#else
+    KPtyProcess *m_process;
+#endif
+
     ParameterList m_param;
     QVariantList m_removedFiles;
 
-    QString m_escapedCharacters;
-
 private slots:
     void started();
     void readStdout(bool handleAll = false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/part/archivemodel.cpp 
new/kdeutils-4.6.4/ark/part/archivemodel.cpp
--- old/kdeutils-4.6.3/ark/part/archivemodel.cpp        2011-01-18 
22:25:04.000000000 +0100
+++ new/kdeutils-4.6.4/ark/part/archivemodel.cpp        2011-06-02 
12:04:31.000000000 +0200
@@ -60,8 +60,10 @@
 
     static bool compareAscending(const QPair<ArchiveNode*,int> &a, const 
QPair<ArchiveNode*,int> &b) {
         // #234373: sort folders before files
-        if (a.first->isDir() != b.first->isDir()) {
-            return a.first->isDir();
+        if ((a.first->isDir()) && (!b.first->isDir())) {
+            return true;
+        } else if ((!a.first->isDir()) && (b.first->isDir())) {
+            return false;
         }
 
         if (currentSortColumn == FileName) {
@@ -76,8 +78,10 @@
 
     static bool compareDescending(const QPair<ArchiveNode*,int> &a, const 
QPair<ArchiveNode*,int> &b) {
         // #234373: sort folders before files
-        if (a.first->isDir() != b.first->isDir()) {
-            return !(a.first->isDir());
+        if ((a.first->isDir()) && (!b.first->isDir())) {
+            return true;
+        } else if ((!a.first->isDir()) && (b.first->isDir())) {
+            return false;
         }
 
         if (currentSortColumn == FileName) {
@@ -435,9 +439,9 @@
         }
 
         if (order == Qt::AscendingOrder) {
-            qSort(sorting.begin(), sorting.end(), 
ArchiveNode::compareAscending);
+            qStableSort(sorting.begin(), sorting.end(), 
ArchiveNode::compareAscending);
         } else {
-            qSort(sorting.begin(), sorting.end(), 
ArchiveNode::compareDescending);
+            qStableSort(sorting.begin(), sorting.end(), 
ArchiveNode::compareDescending);
         }
 
         QModelIndexList fromIndexes;
@@ -480,28 +484,15 @@
 QMimeData * ArchiveModel::mimeData(const QModelIndexList & indexes) const
 {
     kDebug();
-    //prepare the fallback kio_slave filenames
     QStringList files;
-    bool noFallback = false;
 
     QString archiveName = m_archive->fileName();
-    QString ext = QFileInfo(archiveName).suffix().toUpper();
-    if (ext == QLatin1String( "TAR" )) {
-        archiveName.prepend(QLatin1String( "tar:" ));
-    } else if (ext == QLatin1String( "ZIP" )) {
-        archiveName.prepend(QLatin1String( "zip:" ));
-    } else if (archiveName.right(6).toUpper() == QLatin1String( "TAR.GZ" )) {
-        archiveName.prepend(QLatin1String( "tar:" ));
-    } else
-        noFallback = true;
-
-    if (!archiveName.endsWith(QLatin1Char( '/' ))) {
-        archiveName.append(QLatin1Char( '/' ));
+    if (!archiveName.endsWith(QLatin1Char('/'))) {
+        archiveName.append(QLatin1Char('/'));
     }
 
     //Populate the internal list of files
     foreach(const QModelIndex &index, indexes) {
-
         //to limit only one index per row
         if (index.column() != 0) {
             continue;
@@ -511,18 +502,12 @@
         files << file;
     }
 
-    KUrl::List kiolist(files);
-
     //prepare the dbus-based drag/drop mimedata
     QMimeData *data = new QMimeData();
-    data->setData(QLatin1String( "application/x-kde-dndextract" ),
+    data->setData(QLatin1String("application/x-kde-dndextract"),
                   QDBusConnection::sessionBus().baseService().toUtf8()
                  );
 
-
-    if (!noFallback) {
-        kiolist.populateMimeData(data);
-    }
     return data;
 }
 
@@ -568,16 +553,14 @@
 // For a rationale, see bugs #194241 and #241967
 QString ArchiveModel::cleanFileName(const QString& fileName)
 {
-    QString cleanName(fileName);
-
-    if ((cleanName == QLatin1String("/")) ||
-        (cleanName == QLatin1String("."))) { // "." is present in ISO files
-        cleanName.clear();
-    } else if (cleanName.startsWith(QLatin1String("./"))) {
-        cleanName.remove(0, 2);
+    if ((fileName == QLatin1String("/")) ||
+        (fileName == QLatin1String("."))) { // "." is present in ISO files
+        return QString();
+    } else if (fileName.startsWith(QLatin1String("./"))) {
+        return fileName.mid(2);
     }
 
-    return cleanName;
+    return fileName;
 }
 
 ArchiveDirNode* ArchiveModel::parentFor(const ArchiveEntry& entry)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/part/part.cpp 
new/kdeutils-4.6.4/ark/part/part.cpp
--- old/kdeutils-4.6.3/ark/part/part.cpp        2011-02-25 22:47:49.000000000 
+0100
+++ new/kdeutils-4.6.4/ark/part/part.cpp        2011-06-02 12:04:31.000000000 
+0200
@@ -88,8 +88,11 @@
     m_splitter = new QSplitter(Qt::Horizontal, parentWidget);
     setWidget(m_splitter);
 
-    m_view = new ArchiveView(m_splitter);
-    m_infoPanel = new InfoPanel(m_model, m_splitter);
+    m_view = new ArchiveView;
+    m_infoPanel = new InfoPanel(m_model);
+
+    m_splitter->addWidget(m_view);
+    m_splitter->addWidget(m_infoPanel);
 
     QList<int> splitterSizes = ArkSettings::splitterSizes();
     if (splitterSizes.isEmpty()) {
@@ -148,6 +151,9 @@
     connect(job, SIGNAL(result(KJob*)), this, SIGNAL(ready()));
 }
 
+// TODO: One should construct a KUrl out of localPath in order to be able to 
handle
+//       non-local destinations (ie. trash:/ or a remote location)
+//       See bugs #189322 and #204323.
 void Part::extractSelectedFilesTo(const QString& localPath)
 {
     kDebug() << "Extract to " << localPath;
@@ -749,7 +755,20 @@
 void Part::slotAddFiles()
 {
     kDebug();
-    const QStringList filesToAdd = 
KFileDialog::getOpenFileNames(KUrl("kfiledialog:///ArkAddFiles"), QString(), 
widget(), i18nc("@title:window", "Add Files"));
+
+    // #264819: passing widget() as the parent will not work as expected.
+    //          KFileDialog will create a KFileWidget, which runs an internal
+    //          event loop to stat the given directory. This, in turn, leads to
+    //          events being delivered to widget(), which is a QSplitter, which
+    //          in turn reimplements childEvent() and will end up calling
+    //          QWidget::show() on the KFileDialog (thus showing it in a
+    //          non-modal state).
+    //          When KFileDialog::exec() is called, the widget is already shown
+    //          and nothing happens.
+    const QStringList filesToAdd =
+        KFileDialog::getOpenFileNames(KUrl("kfiledialog:///ArkAddFiles"),
+                                      QString(), widget()->parentWidget(),
+                                      i18nc("@title:window", "Add Files"));
 
     slotAddFiles(filesToAdd);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/CMakeLists.txt 
new/kdeutils-4.6.4/ark/plugins/CMakeLists.txt
--- old/kdeutils-4.6.3/ark/plugins/CMakeLists.txt       2011-01-18 
22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/CMakeLists.txt       2011-06-02 
12:04:31.000000000 +0200
@@ -1,5 +1,3 @@
-macro_optional_find_package(LibArchive)
-
 if (LIBARCHIVE_FOUND)
     if( HAVE_LIBARCHIVE_READ_DISK_API )
         if( NOT HAVE_LIBARCHIVE_LZMA_SUPPORT OR NOT HAVE_LIBARCHIVE_XZ_SUPPORT 
)
@@ -15,8 +13,6 @@
     endif( HAVE_LIBARCHIVE_READ_DISK_API )
 endif (LIBARCHIVE_FOUND)
 
-macro_log_feature(LIBARCHIVE_FOUND "LibArchive" "A library for dealing with a 
wide variety of archive file formats" "http://code.google.com/p/libarchive/"; 
FALSE "" "Required for among others tar, tar.gz, tar.bz2 formats in Ark.")
-
 add_subdirectory( clirarplugin )
 add_subdirectory( cli7zplugin )
 add_subdirectory( clizipplugin )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/cli7zplugin/cliplugin.cpp 
new/kdeutils-4.6.4/ark/plugins/cli7zplugin/cliplugin.cpp
--- old/kdeutils-4.6.3/ark/plugins/cli7zplugin/cliplugin.cpp    2011-01-18 
22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/cli7zplugin/cliplugin.cpp    2011-06-02 
12:04:30.000000000 +0200
@@ -69,6 +69,8 @@
                              << QLatin1String( "S" ) //autoskip
                              << QLatin1String( "Q" ) //cancel
                              ;
+
+        p[PasswordPromptPattern] = QLatin1String("Enter password \\(will not 
be echoed\\) :");
     }
 
     return p;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.cpp 
new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.cpp
--- old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.cpp   2011-02-25 
22:47:49.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.cpp   2011-06-02 
12:04:31.000000000 +0200
@@ -45,6 +45,18 @@
 {
 }
 
+// #272281: the proprietary unrar program does not like trailing '/'s
+//          in directories passed to it when extracting only part of
+//          the files in an archive.
+QString CliPlugin::escapeFileName(const QString &fileName) const
+{
+    if (fileName.endsWith(QLatin1Char('/'))) {
+        return fileName.left(fileName.length() - 1);
+    }
+
+    return fileName;
+}
+
 ParameterList CliPlugin::parameterList() const
 {
     static ParameterList p;
@@ -78,6 +90,8 @@
 
         p[AddArgs] = QStringList() << QLatin1String( "a" ) << QLatin1String( 
"$Archive" ) << QLatin1String( "$Files" );
 
+        p[PasswordPromptPattern] = QLatin1String("Enter password \\(will not 
be echoed\\) for");
+
         p[WrongPasswordPatterns] = QStringList() << QLatin1String("password 
incorrect") << QLatin1String("wrong password");
         p[ExtractionFailedPatterns] = QStringList() << QLatin1String( "CRC 
failed" ) << QLatin1String( "Cannot find volume" );
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.h 
new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.h
--- old/kdeutils-4.6.3/ark/plugins/clirarplugin/cliplugin.h     2011-01-18 
22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clirarplugin/cliplugin.h     2011-06-02 
12:04:31.000000000 +0200
@@ -34,6 +34,8 @@
 
     virtual ~CliPlugin();
 
+    virtual QString escapeFileName(const QString &fileName) const;
+
     virtual Kerfuffle::ParameterList parameterList() const;
 
     virtual bool readListLine(const QString &line);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.cpp 
new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.cpp
--- old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.cpp   2011-01-18 
22:25:03.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.cpp   2011-06-02 
12:04:30.000000000 +0200
@@ -2,6 +2,7 @@
  * ark -- archiver for the KDE project
  *
  * Copyright (C) 2009 Harald Hvaal <haral...@stud.ntnu.no>
+ * Copyright (C) 2009-2011 Raphael Kubo da Costa <kub...@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -16,9 +17,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA.
- *
  */
 
+#include "cliplugin.h"
 #include "kerfuffle/cliinterface.h"
 #include "kerfuffle/kerfuffle_export.h"
 
@@ -33,96 +34,106 @@
 
 using namespace Kerfuffle;
 
-class CliPlugin: public CliInterface
+CliPlugin::CliPlugin(QObject *parent, const QVariantList & args)
+    : CliInterface(parent, args)
+    , m_status(Header)
 {
-public:
-    explicit CliPlugin(QObject *parent, const QVariantList & args)
-            : CliInterface(parent, args),
-            m_status(Header) {
-        // #208091: infozip applies special meanings to some characters
-        //          see match.c in infozip's source code
-        setEscapedCharacters(QLatin1String("[]*?^-\\!"));
-    }
+}
 
-    virtual ~CliPlugin() {
-    }
-
-    virtual ParameterList parameterList() const {
-        static ParameterList p;
-        if (p.isEmpty()) {
-            p[CaptureProgress] = false;
-            p[ListProgram] = QLatin1String( "zipinfo" );
-            p[ExtractProgram] = QLatin1String( "unzip" );
-            p[DeleteProgram] = p[AddProgram] = QLatin1String( "zip" );
-
-            p[ListArgs] = QStringList() << QLatin1String( "-l" ) << 
QLatin1String( "-T" ) << QLatin1String( "$Archive" );
-            p[ExtractArgs] = QStringList() << QLatin1String( 
"$PreservePathSwitch" ) << QLatin1String( "$PasswordSwitch" ) << QLatin1String( 
"$Archive" ) << QLatin1String( "$Files" );
-            p[PreservePathSwitch] = QStringList() << QLatin1String( "" ) << 
QLatin1String( "-j" );
-            p[PasswordSwitch] = QStringList() << QLatin1String( "-P$Password" 
);
-
-            p[DeleteArgs] = QStringList() << QLatin1String( "-d" ) << 
QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
-
-            p[FileExistsExpression] = QLatin1String( "^replace (.+)\\?" );
-            p[FileExistsInput] = QStringList()
-                                 << QLatin1String( "y" ) //overwrite
-                                 << QLatin1String( "n" ) //skip
-                                 << QLatin1String( "A" ) //overwrite all
-                                 << QLatin1String( "N" ) //autoskip
-                                 << QLatin1String( "N" ) //cancel
-                                 ;
+CliPlugin::~CliPlugin()
+{
+}
 
-            p[AddArgs] = QStringList() << QLatin1String( "-r" ) << 
QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+// #208091: infozip applies special meanings to some characters, so we
+//          need to escape them with backslashes.see match.c in
+//          infozip's source code
+QString CliPlugin::escapeFileName(const QString &fileName) const
+{
+    const QString escapedCharacters(QLatin1String("[]*?^-\\!"));
 
-            p[WrongPasswordPatterns] = QStringList() << QLatin1String( 
"incorrect password" );
-            //p[ExtractionFailedPatterns] = QStringList() << "CRC failed";
+    QString quoted;
+    const int len = fileName.length();
+    const QLatin1Char backslash('\\');
+    quoted.reserve(len * 2);
+
+    for (int i = 0; i < len; ++i) {
+        if (escapedCharacters.contains(fileName.at(i))) {
+            quoted.append(backslash);
         }
-        return p;
+
+        quoted.append(fileName.at(i));
     }
 
-    QString m_entryFilename, m_internalId;
-    ArchiveEntry m_currentEntry;
+    return quoted;
+}
+
+ParameterList CliPlugin::parameterList() const
+{
+    static ParameterList p;
 
-    enum ReadStatus {
-        Header = 0,
-        Entry
-    };
-
-    ReadStatus m_status;
-
-    bool readListLine(const QString &line) {
-        static QRegExp entryPattern(QLatin1String(
-            
"^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\d{8}).(\\d{6})\\s+(.+)$")
 );
-
-        int i;
-        switch (m_status) {
-        case Header:
-            m_status = Entry;
-            break;
-        case Entry:
-            i = entryPattern.indexIn(line);
-            if (i != -1) {
-                ArchiveEntry e;
-                e[Permissions] = entryPattern.cap(1);
-                e[IsDirectory] = (entryPattern.cap(1).at(0) == QLatin1Char( 
'd' ));
-                e[Size] = entryPattern.cap(4).toInt();
-                QString status = entryPattern.cap(5);
-                if (status[0].isUpper()) {
-                    e[IsPasswordProtected] = true;
-                }
-                e[CompressedSize] = entryPattern.cap(6).toInt();
-
-                const QDateTime ts(QDate::fromString(entryPattern.cap(8), 
QLatin1String( "yyyyMMdd" )),
-                                   QTime::fromString(entryPattern.cap(9), 
QLatin1String( "hhmmss" )));
-                e[Timestamp] = ts;
+    if (p.isEmpty()) {
+        p[CaptureProgress] = false;
+        p[ListProgram] = QLatin1String( "zipinfo" );
+        p[ExtractProgram] = QLatin1String( "unzip" );
+        p[DeleteProgram] = p[AddProgram] = QLatin1String( "zip" );
+
+        p[ListArgs] = QStringList() << QLatin1String( "-l" ) << QLatin1String( 
"-T" ) << QLatin1String( "$Archive" );
+        p[ExtractArgs] = QStringList() << QLatin1String( "$PreservePathSwitch" 
) << QLatin1String( "$PasswordSwitch" ) << QLatin1String( "$Archive" ) << 
QLatin1String( "$Files" );
+        p[PreservePathSwitch] = QStringList() << QLatin1String( "" ) << 
QLatin1String( "-j" );
+        p[PasswordSwitch] = QStringList() << QLatin1String( "-P$Password" );
+
+        p[DeleteArgs] = QStringList() << QLatin1String( "-d" ) << 
QLatin1String( "$Archive" ) << QLatin1String( "$Files" );
+
+        p[FileExistsExpression] = QLatin1String( "^replace (.+)\\?" );
+        p[FileExistsInput] = QStringList()
+                             << QLatin1String( "y" ) //overwrite
+                             << QLatin1String( "n" ) //skip
+                             << QLatin1String( "A" ) //overwrite all
+                             << QLatin1String( "N" ) //autoskip
+                             << QLatin1String( "N" ) //cancel
+                             ;
 
-                e[FileName] = e[InternalID] = entryPattern.cap(10);
-                entry(e);
+        p[AddArgs] = QStringList() << QLatin1String( "-r" ) << QLatin1String( 
"$Archive" ) << QLatin1String( "$Files" );
+
+        p[WrongPasswordPatterns] = QStringList() << QLatin1String( "incorrect 
password" );
+        //p[ExtractionFailedPatterns] = QStringList() << "CRC failed";
+    }
+    return p;
+}
+
+bool CliPlugin::readListLine(const QString &line)
+{
+    static const QRegExp entryPattern(QLatin1String(
+        
"^(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\d{8}).(\\d{6})\\s+(.+)$")
 );
+
+    switch (m_status) {
+    case Header:
+        m_status = Entry;
+        break;
+    case Entry:
+        if (entryPattern.indexIn(line) != -1) {
+            ArchiveEntry e;
+            e[Permissions] = entryPattern.cap(1);
+            e[IsDirectory] = (entryPattern.cap(1).at(0) == QLatin1Char( 'd' ));
+            e[Size] = entryPattern.cap(4).toInt();
+            QString status = entryPattern.cap(5);
+            if (status[0].isUpper()) {
+                e[IsPasswordProtected] = true;
             }
-            break;
+            e[CompressedSize] = entryPattern.cap(6).toInt();
+
+            const QDateTime ts(QDate::fromString(entryPattern.cap(8), 
QLatin1String( "yyyyMMdd" )),
+                               QTime::fromString(entryPattern.cap(9), 
QLatin1String( "hhmmss" )));
+            e[Timestamp] = ts;
+
+            e[FileName] = e[InternalID] = entryPattern.cap(10);
+            entry(e);
         }
-        return true;
+        break;
     }
-};
+
+    return true;
+}
 
 KERFUFFLE_EXPORT_PLUGIN(CliPlugin)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.h 
new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.h
--- old/kdeutils-4.6.3/ark/plugins/clizipplugin/cliplugin.h     1970-01-01 
01:00:00.000000000 +0100
+++ new/kdeutils-4.6.4/ark/plugins/clizipplugin/cliplugin.h     2011-06-02 
12:04:30.000000000 +0200
@@ -0,0 +1,47 @@
+/*
+ * ark -- archiver for the KDE project
+ *
+ * Copyright (C) 2011 Raphael Kubo da Costa <kub...@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA.
+ */
+
+#ifndef CLIPLUGIN_H
+#define CLIPLUGIN_H
+
+#include "kerfuffle/cliinterface.h"
+
+class CliPlugin : public Kerfuffle::CliInterface
+{
+    Q_OBJECT
+
+public:
+    explicit CliPlugin(QObject *parent, const QVariantList &args);
+    virtual ~CliPlugin();
+
+    virtual QString escapeFileName(const QString &fileName) const;
+
+    virtual Kerfuffle::ParameterList parameterList() const;
+
+    virtual bool readListLine(const QString &line);
+
+private:
+    enum {
+        Header = 0,
+        Entry
+    } m_status;
+};
+
+#endif // CLIPLUGIN_H
Files old/kdeutils-4.6.3/doc/ark/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/ark/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/filelight/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/filelight/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcalc/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kcalc/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcharselect/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kcharselect/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcontrol/blockdevices/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kcontrol/blockdevices/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kcontrol/kremotecontrol/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kcontrol/kremotecontrol/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kdf/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kdf/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kfloppy/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kfloppy/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kgpg/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kgpg/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/ktimer/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/ktimer/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/kwallet/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/kwallet/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/printer-applet/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/printer-applet/index.cache.bz2 differ
Files old/kdeutils-4.6.3/doc/sweeper/index.cache.bz2 and 
new/kdeutils-4.6.4/doc/sweeper/index.cache.bz2 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/filelight/misc/filelight.desktop 
new/kdeutils-4.6.4/filelight/misc/filelight.desktop
--- old/kdeutils-4.6.3/filelight/misc/filelight.desktop 2011-04-01 
13:00:15.000000000 +0200
+++ new/kdeutils-4.6.4/filelight/misc/filelight.desktop 2011-06-02 
12:04:28.000000000 +0200
@@ -12,6 +12,7 @@
 Name[eu]=Filelight
 Name[fi]=Filelight
 Name[fr]=Filelight
+Name[hu]=Filelight
 Name[it]=Filelight
 Name[kk]=Filelight
 Name[km]=Filelight
@@ -23,6 +24,7 @@
 Name[pa]=ਫਾਇਲਲਾਈਟ
 Name[pt]=Filelight
 Name[pt_BR]=Filelight
+Name[ro]=Filelight
 Name[ru]=Filelight
 Name[sk]=Filelight
 Name[sl]=Filelight
@@ -52,6 +54,7 @@
 GenericName[eu]=Diskoen erabilerari buruzko estatistikak
 GenericName[fi]=Levynkäyttötilastot
 GenericName[fr]=Statistiques d'utilisation de disque
+GenericName[hu]=Lemezhasználati statisztika
 GenericName[it]=Statistiche uso del disco
 GenericName[kk]=Дискінің статистикасы
 GenericName[km]=ស្ថិតិ​ប្រើប្រាស់​ថាស
@@ -63,6 +66,7 @@
 GenericName[pa]=ਡਿਸਕ ਵਰਤੋਂ ਅੰਕੜੇ
 GenericName[pt]=Estatísticas de Utilização do Disco
 GenericName[pt_BR]=Estatísticas do uso do disco
+GenericName[ro]=Statistici utilizare disc
 GenericName[ru]=Использование дисков
 GenericName[sk]=Štatistiky využitia disku
 GenericName[sl]=Statistika porabe diska
@@ -93,6 +97,7 @@
 Comment[eu]=Erakutsi diskoen erabilerari buruzko informazioa
 Comment[fi]=Näytä levynkäyttö
 Comment[fr]=Afficher l'information d'utilisation de disque
+Comment[hu]=Lemezhasználati információk megjelenítése
 Comment[it]=Mostra l'uso del disco
 Comment[kk]=Дискідегі орынды көрсету
 Comment[km]=មើល​ព័ត៌មាន​អំពី​ការ​ប្រើប្រាស់​ថាស
@@ -104,6 +109,7 @@
 Comment[pa]=ਡਿਸਕ ਵਰਤੋਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋ
 Comment[pt]=Ver a informação de utilização do disco
 Comment[pt_BR]=Exibe as informações de utilização do disco
+Comment[ro]=Vezi informații despre utilizarea discului
 Comment[ru]=Наглядное представление файловой системы
 Comment[sk]=Zobrazenie informácií o využití disku
 Comment[sl]=Oglejte si statistiko porabe diska
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/filelight/misc/filelightpart.desktop 
new/kdeutils-4.6.4/filelight/misc/filelightpart.desktop
--- old/kdeutils-4.6.3/filelight/misc/filelightpart.desktop     2011-04-01 
13:00:15.000000000 +0200
+++ new/kdeutils-4.6.4/filelight/misc/filelightpart.desktop     2011-06-02 
12:04:28.000000000 +0200
@@ -22,6 +22,7 @@
 Name[pa]=ਰੇਡੀਅਨ ਮੈਪ
 Name[pt]=Mapa Radial
 Name[pt_BR]=Mapa radial
+Name[ro]=Hartă radială
 Name[ru]=Радиальная карта
 Name[sk]=Radiálna mapa
 Name[sl]=Krožen prikaz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kdeutils-version.h 
new/kdeutils-4.6.4/kdeutils-version.h
--- old/kdeutils-4.6.3/kdeutils-version.h       2011-04-01 13:00:16.000000000 
+0200
+++ new/kdeutils-4.6.4/kdeutils-version.h       2011-06-02 12:04:31.000000000 
+0200
@@ -58,6 +58,6 @@
     3.2 alpha1
 */
 
-#define KDEUTILS_VERSION_STRING "4.6.2"
+#define KDEUTILS_VERSION_STRING "4.6.4"
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/Messages.sh 
new/kdeutils-4.6.4/kgpg/Messages.sh
--- old/kdeutils-4.6.3/kgpg/Messages.sh 2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/Messages.sh 2011-06-02 12:04:28.000000000 +0200
@@ -1,5 +1,5 @@
 #! /bin/sh
 $PREPARETIPS > tips.cpp
 $EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` >> rc.cpp
-$XGETTEXT *.cpp core/*.cpp editor/*.cpp model/*.cpp transactions/*.cpp -o 
$podir/kgpg.pot
+$XGETTEXT *.h *.cpp core/*.cpp editor/*.cpp model/*.cpp transactions/*.cpp -o 
$podir/kgpg.pot
 rm -f tips.cpp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.cpp 
new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.cpp
--- old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.cpp       2011-02-25 
22:47:49.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.cpp       2011-06-02 
12:04:28.000000000 +0200
@@ -169,7 +169,7 @@
     KStandardAction::find(this, SLOT(slotFind()), actionCollection());
     KStandardAction::findNext(this, SLOT(slotFindNext()), actionCollection());
     KStandardAction::findPrev(this, SLOT(slotFindPrev()), actionCollection());
-    actionCollection()->addAction(KStandardAction::Preferences, QLatin1String( 
"kgpg_config" ),
+    actionCollection()->addAction(KStandardAction::Preferences, QLatin1String( 
"options_configure" ),
                                   this, SLOT(slotOptions()));
 
     m_editundo = KStandardAction::undo(this, SLOT(slotundo()), 
actionCollection());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.rc 
new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.rc
--- old/kdeutils-4.6.3/kgpg/editor/kgpgeditor.rc        2011-01-18 
22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/editor/kgpgeditor.rc        2011-06-02 
12:04:28.000000000 +0200
@@ -20,11 +20,6 @@
         <Action name="sign_verify"/>
         <Action name="sign_check"/>
     </Menu>
-
-    <Menu name="settings">
-        <text>&amp;Settings</text>
-        <Action name="kgpg_config" />
-    </Menu>
 </MenuBar>
 <ToolBar name="gpgToolBar">
   <Action name="text_sign_verify"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/keysmanager.cpp 
new/kdeutils-4.6.4/kgpg/keysmanager.cpp
--- old/kdeutils-4.6.3/kgpg/keysmanager.cpp     2011-02-25 22:47:49.000000000 
+0100
+++ new/kdeutils-4.6.4/kgpg/keysmanager.cpp     2011-06-02 19:35:41.000000000 
+0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2002 Jean-Baptiste Mardelle <b...@altern.org>
- * Copyright (C) 2007,2008,2009,2010 Rolf Eike Beer <k...@opensource.sf-tec.de>
+ * Copyright (C) 2007,2008,2009,2010,2011 Rolf Eike Beer 
<k...@opensource.sf-tec.de>
  */
 
 /***************************************************************************
@@ -159,11 +159,7 @@
        if (showTipOfDay)
                installEventFilter(this);
 
-       KAction *action = 0;
-
-       action = actionCollection()->addAction( QLatin1String( "default" ) );
-       connect(action, SIGNAL(triggered(bool)), SLOT(slotDefaultAction()));
-       action->setShortcut(QKeySequence(Qt::Key_Return));
+       KAction *action;
 
        action =  actionCollection()->addAction( QLatin1String( "help_tipofday" 
));
        action->setIcon( KIcon( QLatin1String( "help-hint" )) );
@@ -248,6 +244,7 @@
        deleteKey->setIcon(KIcon( QLatin1String( "edit-delete" )));
        connect(deleteKey, SIGNAL(triggered(bool)), SLOT(confirmdeletekey()));
        deleteKey->setShortcut(QKeySequence(Qt::Key_Delete));
+       deleteKey->setEnabled(false);
 
        setDefaultKey = actionCollection()->addAction(QLatin1String( 
"key_default" ));
        setDefaultKey->setText(i18n("Set as De&fault Key"));
@@ -288,6 +285,7 @@
        delSignKey = actionCollection()->addAction(QLatin1String( "key_delsign" 
));
        delSignKey->setIcon(KIcon( QLatin1String( "edit-delete" )));
        connect(delSignKey, SIGNAL(triggered(bool)), SLOT(delsignkey()));
+       delSignKey->setEnabled(false);
 
        importAllSignKeys = actionCollection()->addAction(QLatin1String( 
"key_importallsign" ));
        importAllSignKeys->setIcon(KIcon( QLatin1String( "document-import" )));
@@ -361,6 +359,8 @@
        iview->setContextMenuPolicy(Qt::CustomContextMenu);
        connect(iview->selectionModel(), SIGNAL(selectionChanged(const 
QItemSelection &, const QItemSelection &)), this, SLOT(checkList()));
 
+       connect (iview, SIGNAL(returnPressed()), SLOT(slotDefaultAction()));
+
        int psize = KGpgSettings::photoProperties();
        photoProps->setCurrentItem(psize);
        slotSetPhotoSize(psize);
@@ -500,6 +500,7 @@
        connect(m_netnote, SIGNAL(shouldDisconnect()), SLOT(slotNetworkDown()));
 
        toggleNetworkActions(Solid::Networking::status() == 
Solid::Networking::Unknown || Solid::Networking::status() == 
Solid::Networking::Connected);
+       importSignatureKey->setEnabled(false);
 
        QTimer::singleShot(0, this, SLOT(refreshkey()));
 }
@@ -1337,6 +1338,9 @@
        createGroup->setText(i18np("&Create Group with Selected Key...", 
"&Create Group with Selected Keys...", cnt));
        signKey->setText(i18np("&Sign Key...", "&Sign Keys...", cnt));
        delUid->setText(i18np("&Delete User ID", "&Delete User IDs", cnt));
+       delSignKey->setText(i18np("Delete Sign&ature", "Delete Sign&atures", 
cnt));
+       importSignatureKey->setText(i18np("Import Key From Keyserver", "Import 
Keys From Keyserver", cnt));
+       deleteKey->setText(i18np("&Delete Key", "&Delete Keys", cnt));
 }
 
 void
@@ -1383,9 +1387,7 @@
                }
 
                importSignatureKey->setEnabled(allunksig && m_online);
-               importSignatureKey->setText(i18np("Import Key From Keyserver", 
"Import Keys From Keyserver", cnt));
                delSignKey->setEnabled( (cnt == 1) );
-               delSignKey->setText(i18np("Delete Sign&ature", "Delete 
Sign&atures", cnt));
                m_popupsig->exec(globpos);
        } else if (itype == ITYPE_UID) {
                if (cnt == 1) {
@@ -1407,7 +1409,6 @@
        } else if (!(itype & ~(ITYPE_PAIR | ITYPE_GROUP))) {
                signKey->setEnabled(!(itype & ITYPE_GROUP));
                deleteKey->setEnabled(!(itype & ITYPE_GROUP));
-               deleteKey->setText(i18np("&Delete Key", "&Delete Keys", cnt));
                setDefaultKey->setEnabled( (cnt == 1) );
                m_popuppub->exec(globpos);
        } else if (!(itype & ~(ITYPE_UID | ITYPE_PAIR | ITYPE_UAT))) {
@@ -2238,7 +2239,7 @@
        QStringList idlist;
 
        if (exportList.empty())
-       return;
+               return;
 
        foreach (const KGpgNode *nd, exportList)
                idlist << nd->getId();
@@ -2286,7 +2287,8 @@
 void KeysManager::delsignkey()
 {
        KGpgNode *nd = iview->selectedNode();
-       Q_ASSERT(nd != NULL);
+       if (nd == NULL)
+               return;
 
        QString uid;
        QString parentKey;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/keytreeview.cpp 
new/kdeutils-4.6.4/kgpg/keytreeview.cpp
--- old/kdeutils-4.6.3/kgpg/keytreeview.cpp     2011-01-18 22:24:55.000000000 
+0100
+++ new/kdeutils-4.6.4/kgpg/keytreeview.cpp     2011-06-02 19:35:41.000000000 
+0200
@@ -210,4 +210,16 @@
                resizeColumnToContents(i);
 }
 
+void
+KeyTreeView::keyPressEvent(QKeyEvent *event)
+{
+       if (event->key() == Qt::Key_Return) {
+               if (!event->isAutoRepeat())
+                       emit returnPressed();
+
+               return;
+       }
+       QTreeView::keyPressEvent(event);
+}
+
 #include "keytreeview.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/keytreeview.h 
new/kdeutils-4.6.4/kgpg/keytreeview.h
--- old/kdeutils-4.6.3/kgpg/keytreeview.h       2011-01-18 22:24:55.000000000 
+0100
+++ new/kdeutils-4.6.4/kgpg/keytreeview.h       2011-06-02 19:35:41.000000000 
+0200
@@ -49,6 +49,7 @@
 
 signals:
        void importDrop(const KUrl::List &urls);
+       void returnPressed();
 
 public slots:
        void selectNode(KGpgNode *nd);
@@ -58,6 +59,7 @@
        virtual void contentsDragMoveEvent(QDragMoveEvent *e);
        virtual void contentsDropEvent(QDropEvent *e);
        virtual void startDrag(Qt::DropActions);
+       virtual void keyPressEvent(QKeyEvent *event);
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/kgpg.h 
new/kdeutils-4.6.4/kgpg/kgpg.h
--- old/kdeutils-4.6.3/kgpg/kgpg.h      2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/kgpg.h      2011-06-02 12:04:28.000000000 +0200
@@ -21,12 +21,24 @@
 #include <KUniqueApplication>
 #include <KShortcut>
 #include <KUrl>
+#include <klocale.h>
 
 class KCmdLineArgs;
 class KeysManager;
 class KGpgExternalActions;
 class QString;
 
+static const char * const EMailTemplateText=I18N_NOOP(
+    "Hi,\n\nplease find attached the user id '%UIDNAME%' of your key %KEYID% 
signed by me. "
+    "This mail is encrypted with that key to make sure you control both the 
email address and the key.\n\n"
+    "If you have multiple user ids, I sent the signature for each user id 
separately to that user id's associated email address. "
+    "You can import the signatures by running each through `gpg --import` 
after you have decrypted them with `gpg --decrypt`.\n\n"
+    "If you are using KGpg store the attachment to disk and then import it. 
Just select `Import Key...` from `Keys` menu and open the file.\n\n"
+    "Note that I did not upload your key to any keyservers. If you want this 
new signature to be available to others, please upload it yourself. "
+    "With GnuPG this can be done using gpg --keyserver subkeys.pgp.net 
--send-key %KEYID%.\n\n" 
+    "With KGpg you can right click on the key once you imported all user ids 
and choose `Export Public Key...`.\n\n"
+    "If you have any questions, don't hesitate to ask.\n");
+
 class KGpgApp : public KUniqueApplication
 {
     Q_OBJECT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdeutils-4.6.3/kgpg/kgpg.kcfg 
new/kdeutils-4.6.4/kgpg/kgpg.kcfg
--- old/kdeutils-4.6.3/kgpg/kgpg.kcfg   2011-01-18 22:24:55.000000000 +0100
+++ new/kdeutils-4.6.4/kgpg/kgpg.kcfg   2011-06-02 12:04:28.000000000 +0200
@@ -5,6 +5,7 @@
       http://www.kde.org/standards/kcfg/1.0/kcfg.xsd"; >
 
     <include>kglobalsettings.h</include>
+    <include>kgpg.h</include>
     <kcfgfile name="kgpgrc"/>
 
     <group name="Decryption">
@@ -250,21 +251,7 @@
        <group name="Key Signing">
                <entry name="EmailTemplate" type="String" key="Email_Template">
                        <label>This is the text of the email sent by the "Sign 
and Mail User ID" action.</label>
-                       <default>Hi,
-
-please find attached the user id "%UIDNAME%" of your key %KEYID% signed by me. 
This mail is encrypted with that key to make sure you control both the email 
address and the key.
-
-If you have multiple user ids, I sent the signature for each user id 
separately to that user id's associated email address. You can import the 
signatures by running each through `gpg --import` after you have decrypted them 
with `gpg --decrypt`.
-
-If you are using KGpg store the attachment to disk and then import it. Just 
select `Import Key...` from `Keys` menu and open the file.
-
-Note that I did not upload your key to any keyservers. If you want this new 
signature to be available to others, please upload it yourself. With GnuPG this 
can be done using
-        gpg --keyserver subkeys.pgp.net --send-key %KEYID%
-
-With KGpg you can right click on the key once you imported all user ids and 
choose `Export Public Key...`.
-
-If you have any questions, don't hesitate to ask.
-</default>
+                       <default code="true">i18n(EMailTemplateText)</default>
                </entry>
                <entry name="MailUats" type="Enum" key="Mail_Uats">
                        <choices>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kdeutils-4.6.3/printer-applet/printer-applet.notifyrc 
new/kdeutils-4.6.4/printer-applet/printer-applet.notifyrc
--- old/kdeutils-4.6.3/printer-applet/printer-applet.notifyrc   2011-01-18 
22:24:59.000000000 +0100
+++ new/kdeutils-4.6.4/printer-applet/printer-applet.notifyrc   2011-06-02 
12:04:28.000000000 +0200
@@ -159,7 +159,7 @@
 Comment[ca@valencia]=S'està configurant la impressora nova
 Comment[cs]=Probíhá nastavení nové tiskárny
 Comment[da]=Indstilling af ny printer
-Comment[de]=Neuen Drucker einrichten
+Comment[de]=Neuer Drucker wird eingerichtet
 Comment[el]=Ρύθμιση νέου εκτυπωτή
 Comment[en_GB]=Configuring New Printer
 Comment[es]=Configuración de la nueva impresora


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to