diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-09-30 01:00:19 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-09-30 01:00:19 +0200 |
commit | 07e92611050f78dae93bcd362112efd8efa7b41e (patch) | |
tree | 6951f77a6344436150c4f83f407e09d946f2c6c3 /src | |
parent | 69e68218e5082166d5c4ab1903fbacde00418a1c (diff) | |
parent | caa598c843eb27fd0c645e62723fd2d4e3e12f60 (diff) |
Merge remote-tracking branch 'origin/5.11' into 5.12
Change-Id: Iaa438d14357be1bf75bb645cb8d3245947c055b8
Diffstat (limited to 'src')
23 files changed, 90 insertions, 109 deletions
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp index 9f47b8eb98..a9c5d17aad 100644 --- a/src/corelib/global/qlogging.cpp +++ b/src/corelib/global/qlogging.cpp @@ -1672,9 +1672,7 @@ static bool android_default_message_handler(QtMsgType type, case QtFatalMsg: priority = ANDROID_LOG_FATAL; break; }; - __android_log_print(priority, qPrintable(QCoreApplication::applicationName()), - "%s:%d (%s): %s\n", context.file, context.line, - context.function, qPrintable(formattedMessage)); + __android_log_print(priority, qPrintable(QCoreApplication::applicationName()), "%s\n", qPrintable(formattedMessage)); return true; // Prevent further output to stderr } diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index d138ab2f00..c6a5407e51 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -38,9 +38,6 @@ HEADERS += \ io/qsettings_p.h \ io/qfsfileengine_p.h \ io/qfsfileengine_iterator_p.h \ - io/qfilesystemwatcher.h \ - io/qfilesystemwatcher_p.h \ - io/qfilesystemwatcher_polling_p.h \ io/qfilesystementry_p.h \ io/qfilesystemengine_p.h \ io/qfilesystemmetadata_p.h \ @@ -79,14 +76,38 @@ SOURCES += \ io/qsettings.cpp \ io/qfsfileengine.cpp \ io/qfsfileengine_iterator.cpp \ - io/qfilesystemwatcher.cpp \ - io/qfilesystemwatcher_polling.cpp \ io/qfilesystementry.cpp \ io/qfilesystemengine.cpp \ io/qfileselector.cpp \ io/qloggingcategory.cpp \ io/qloggingregistry.cpp +qtConfig(filesystemwatcher) { + HEADERS += \ + io/qfilesystemwatcher.h \ + io/qfilesystemwatcher_p.h \ + io/qfilesystemwatcher_polling_p.h + SOURCES += \ + io/qfilesystemwatcher.cpp \ + io/qfilesystemwatcher_polling.cpp + + win32 { + SOURCES += io/qfilesystemwatcher_win.cpp + HEADERS += io/qfilesystemwatcher_win_p.h + } else:macos { + OBJECTIVE_SOURCES += io/qfilesystemwatcher_fsevents.mm + HEADERS += io/qfilesystemwatcher_fsevents_p.h + } else:qtConfig(inotify) { + SOURCES += io/qfilesystemwatcher_inotify.cpp + HEADERS += io/qfilesystemwatcher_inotify_p.h + } else { + freebsd|darwin|openbsd|netbsd { + SOURCES += io/qfilesystemwatcher_kqueue.cpp + HEADERS += io/qfilesystemwatcher_kqueue_p.h + } + } +} + qtConfig(processenvironment) { SOURCES += \ io/qprocess.cpp @@ -103,9 +124,6 @@ qtConfig(processenvironment) { win32 { SOURCES += io/qfsfileengine_win.cpp SOURCES += io/qlockfile_win.cpp - - SOURCES += io/qfilesystemwatcher_win.cpp - HEADERS += io/qfilesystemwatcher_win_p.h SOURCES += io/qfilesystemengine_win.cpp qtConfig(filesystemiterator) { @@ -153,8 +171,6 @@ win32 { OBJECTIVE_SOURCES += io/qprocess_darwin.mm OBJECTIVE_SOURCES += io/qstandardpaths_mac.mm osx { - OBJECTIVE_SOURCES += io/qfilesystemwatcher_fsevents.mm - HEADERS += io/qfilesystemwatcher_fsevents_p.h LIBS += -framework DiskArbitration -framework IOKit } else { LIBS += -framework MobileCoreServices @@ -173,17 +189,5 @@ win32 { io/qstandardpaths_unix.cpp \ io/qstorageinfo_unix.cpp } - - linux|if(qnx:qtConfig(inotify)) { - SOURCES += io/qfilesystemwatcher_inotify.cpp - HEADERS += io/qfilesystemwatcher_inotify_p.h - } - - !nacl { - freebsd-*|mac|darwin-*|openbsd-*|netbsd-*:{ - SOURCES += io/qfilesystemwatcher_kqueue.cpp - HEADERS += io/qfilesystemwatcher_kqueue_p.h - } - } } diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp index ed597c415b..f40e166d9f 100644 --- a/src/corelib/io/qfilesystemwatcher.cpp +++ b/src/corelib/io/qfilesystemwatcher.cpp @@ -40,8 +40,6 @@ #include "qfilesystemwatcher.h" #include "qfilesystemwatcher_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER - #include <qdatetime.h> #include <qdebug.h> #include <qdir.h> @@ -499,5 +497,3 @@ QT_END_NAMESPACE #include "moc_qfilesystemwatcher.cpp" #include "moc_qfilesystemwatcher_p.cpp" -#endif // QT_NO_FILESYSTEMWATCHER - diff --git a/src/corelib/io/qfilesystemwatcher.h b/src/corelib/io/qfilesystemwatcher.h index 057a20672c..cd64115f8f 100644 --- a/src/corelib/io/qfilesystemwatcher.h +++ b/src/corelib/io/qfilesystemwatcher.h @@ -42,7 +42,7 @@ #include <QtCore/qobject.h> -#ifndef QT_NO_FILESYSTEMWATCHER +QT_REQUIRE_CONFIG(filesystemwatcher); QT_BEGIN_NAMESPACE @@ -78,5 +78,4 @@ private: QT_END_NAMESPACE -#endif // QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_H diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm index f68fb67d79..f594fad803 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents.mm +++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm @@ -45,8 +45,6 @@ #include "private/qcore_unix_p.h" #include "kernel/qcore_mac_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER - #include <qdebug.h> #include <qdir.h> #include <qfile.h> @@ -585,6 +583,4 @@ bool QFseventsFileSystemWatcherEngine::derefPath(const QString &watchedPath) return false; } -#endif //QT_NO_FILESYSTEMWATCHER - QT_END_NAMESPACE diff --git a/src/corelib/io/qfilesystemwatcher_fsevents_p.h b/src/corelib/io/qfilesystemwatcher_fsevents_p.h index 1b0b8ae15c..6e8e7d4567 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents_p.h +++ b/src/corelib/io/qfilesystemwatcher_fsevents_p.h @@ -62,7 +62,7 @@ #include <dispatch/dispatch.h> #include <CoreServices/CoreServices.h> -#ifndef QT_NO_FILESYSTEMWATCHER +QT_REQUIRE_CONFIG(filesystemwatcher); QT_BEGIN_NAMESPACE @@ -150,5 +150,4 @@ private: QT_END_NAMESPACE -#endif //QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_FSEVENTS_P_H diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp index c0c5f9d744..3b7135e582 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify.cpp +++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp @@ -40,8 +40,6 @@ #include "qfilesystemwatcher.h" #include "qfilesystemwatcher_inotify_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER - #include "private/qcore_unix_p.h" #include "private/qsystemerror_p.h" @@ -427,5 +425,3 @@ QString QInotifyFileSystemWatcherEngine::getPathFromID(int id) const QT_END_NAMESPACE #include "moc_qfilesystemwatcher_inotify_p.cpp" - -#endif // QT_NO_FILESYSTEMWATCHER diff --git a/src/corelib/io/qfilesystemwatcher_inotify_p.h b/src/corelib/io/qfilesystemwatcher_inotify_p.h index 0c873466c8..b63729cde4 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify_p.h +++ b/src/corelib/io/qfilesystemwatcher_inotify_p.h @@ -53,7 +53,7 @@ #include "qfilesystemwatcher_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER +QT_REQUIRE_CONFIG(filesystemwatcher); #include <QtCore/qhash.h> #include <QtCore/qmutex.h> @@ -89,5 +89,4 @@ private: QT_END_NAMESPACE -#endif // QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_INOTIFY_P_H diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp index c33fba2d1f..423b88cb7f 100644 --- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp +++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp @@ -43,8 +43,6 @@ #include "qfilesystemwatcher_kqueue_p.h" #include "private/qcore_unix_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER - #include <qdebug.h> #include <qfile.h> #include <qsocketnotifier.h> @@ -254,6 +252,4 @@ void QKqueueFileSystemWatcherEngine::readFromKqueue() } } -#endif //QT_NO_FILESYSTEMWATCHER - QT_END_NAMESPACE diff --git a/src/corelib/io/qfilesystemwatcher_kqueue_p.h b/src/corelib/io/qfilesystemwatcher_kqueue_p.h index 9d4b6d1fe6..8e11e4b7da 100644 --- a/src/corelib/io/qfilesystemwatcher_kqueue_p.h +++ b/src/corelib/io/qfilesystemwatcher_kqueue_p.h @@ -59,7 +59,7 @@ #include <QtCore/qvector.h> #include <QtCore/qsocketnotifier.h> -#ifndef QT_NO_FILESYSTEMWATCHER +QT_REQUIRE_CONFIG(filesystemwatcher); struct kevent; QT_BEGIN_NAMESPACE @@ -90,5 +90,4 @@ private: QT_END_NAMESPACE -#endif //QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_KQUEUE_P_H diff --git a/src/corelib/io/qfilesystemwatcher_p.h b/src/corelib/io/qfilesystemwatcher_p.h index 4220c1db28..1997ff6c86 100644 --- a/src/corelib/io/qfilesystemwatcher_p.h +++ b/src/corelib/io/qfilesystemwatcher_p.h @@ -53,7 +53,7 @@ #include "qfilesystemwatcher.h" -#ifndef QT_NO_FILESYSTEMWATCHER +QT_REQUIRE_CONFIG(filesystemwatcher); #include <private/qobject_p.h> @@ -120,5 +120,4 @@ private: QT_END_NAMESPACE -#endif // QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_P_H diff --git a/src/corelib/io/qfilesystemwatcher_polling.cpp b/src/corelib/io/qfilesystemwatcher_polling.cpp index 5bef8127f7..903c15f4a9 100644 --- a/src/corelib/io/qfilesystemwatcher_polling.cpp +++ b/src/corelib/io/qfilesystemwatcher_polling.cpp @@ -40,8 +40,6 @@ #include "qfilesystemwatcher_polling_p.h" #include <QtCore/qtimer.h> -#ifndef QT_NO_FILESYSTEMWATCHER - QT_BEGIN_NAMESPACE QPollingFileSystemWatcherEngine::QPollingFileSystemWatcherEngine(QObject *parent) @@ -153,5 +151,3 @@ void QPollingFileSystemWatcherEngine::timeout() QT_END_NAMESPACE #include "moc_qfilesystemwatcher_polling_p.cpp" - -#endif // !QT_NO_FILESYSTEMWATCHER diff --git a/src/corelib/io/qfilesystemwatcher_polling_p.h b/src/corelib/io/qfilesystemwatcher_polling_p.h index 4c46633fdf..e60132381b 100644 --- a/src/corelib/io/qfilesystemwatcher_polling_p.h +++ b/src/corelib/io/qfilesystemwatcher_polling_p.h @@ -60,7 +60,7 @@ #include "qfilesystemwatcher_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER +QT_REQUIRE_CONFIG(filesystemwatcher); QT_BEGIN_NAMESPACE enum { PollingInterval = 1000 }; @@ -121,6 +121,5 @@ private: }; QT_END_NAMESPACE -#endif // !QT_NO_FILESYSTEMWATCHER #endif // QFILESYSTEMWATCHER_POLLING_P_H diff --git a/src/corelib/io/qfilesystemwatcher_win.cpp b/src/corelib/io/qfilesystemwatcher_win.cpp index 91d0f7a228..66985f8982 100644 --- a/src/corelib/io/qfilesystemwatcher_win.cpp +++ b/src/corelib/io/qfilesystemwatcher_win.cpp @@ -40,8 +40,6 @@ #include "qfilesystemwatcher.h" #include "qfilesystemwatcher_win_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER - #include <qdebug.h> #include <qfileinfo.h> #include <qstringlist.h> @@ -760,5 +758,3 @@ QT_END_NAMESPACE #ifndef Q_OS_WINRT # include "qfilesystemwatcher_win.moc" #endif - -#endif // QT_NO_FILESYSTEMWATCHER diff --git a/src/corelib/io/qfilesystemwatcher_win_p.h b/src/corelib/io/qfilesystemwatcher_win_p.h index 8322fc170a..1d3224614c 100644 --- a/src/corelib/io/qfilesystemwatcher_win_p.h +++ b/src/corelib/io/qfilesystemwatcher_win_p.h @@ -53,8 +53,6 @@ #include "qfilesystemwatcher_p.h" -#ifndef QT_NO_FILESYSTEMWATCHER - #include <QtCore/qdatetime.h> #include <QtCore/qthread.h> #include <QtCore/qfile.h> @@ -175,6 +173,4 @@ Q_SIGNALS: QT_END_NAMESPACE -#endif // QT_NO_FILESYSTEMWATCHER - #endif // QFILESYSTEMWATCHER_WIN_P_H diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index e531505877..15785b48e0 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -3726,37 +3726,37 @@ bool QUrl::matches(const QUrl &url, FormattingOptions options) const if (isLocalFile()) mask &= ~QUrlPrivate::Host; - if (options & QUrl::RemoveScheme) + if (options.testFlag(QUrl::RemoveScheme)) mask &= ~QUrlPrivate::Scheme; else if (d->scheme != url.d->scheme) return false; - if (options & QUrl::RemovePassword) + if (options.testFlag(QUrl::RemovePassword)) mask &= ~QUrlPrivate::Password; else if (d->password != url.d->password) return false; - if (options & QUrl::RemoveUserInfo) + if (options.testFlag(QUrl::RemoveUserInfo)) mask &= ~QUrlPrivate::UserName; else if (d->userName != url.d->userName) return false; - if (options & QUrl::RemovePort) + if (options.testFlag(QUrl::RemovePort)) mask &= ~QUrlPrivate::Port; else if (d->port != url.d->port) return false; - if (options & QUrl::RemoveAuthority) + if (options.testFlag(QUrl::RemoveAuthority)) mask &= ~QUrlPrivate::Host; else if (d->host != url.d->host) return false; - if (options & QUrl::RemoveQuery) + if (options.testFlag(QUrl::RemoveQuery)) mask &= ~QUrlPrivate::Query; else if (d->query != url.d->query) return false; - if (options & QUrl::RemoveFragment) + if (options.testFlag(QUrl::RemoveFragment)) mask &= ~QUrlPrivate::Fragment; else if (d->fragment != url.d->fragment) return false; @@ -3764,7 +3764,7 @@ bool QUrl::matches(const QUrl &url, FormattingOptions options) const if ((d->sectionIsPresent & mask) != (url.d->sectionIsPresent & mask)) return false; - if (options & QUrl::RemovePath) + if (options.testFlag(QUrl::RemovePath)) return true; // Compare paths, after applying path-related options diff --git a/src/corelib/tools/qcommandlineparser.cpp b/src/corelib/tools/qcommandlineparser.cpp index 4c55880915..279d6565da 100644 --- a/src/corelib/tools/qcommandlineparser.cpp +++ b/src/corelib/tools/qcommandlineparser.cpp @@ -1049,7 +1049,11 @@ QString QCommandLineParser::helpText() const static QString wrapText(const QString &names, int longestOptionNameString, const QString &description) { const QLatin1Char nl('\n'); - QString text = QLatin1String(" ") + names.leftJustified(longestOptionNameString) + QLatin1Char(' '); + const QLatin1String indentation(" "); + if (description.isEmpty()) + return indentation + names + nl; + + QString text = indentation + names.leftJustified(longestOptionNameString) + QLatin1Char(' '); const int indent = text.length(); int lineStart = 0; int lastBreakable = -1; diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index ba02d13863..64501a75e8 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -712,7 +712,8 @@ void QSslSocketBackendPrivate::transmit() // Check if we've got any data to be written to the socket. QVarLengthArray<char, 4096> data; int pendingBytes; - while (plainSocket->isValid() && (pendingBytes = q_BIO_pending(writeBio)) > 0) { + while (plainSocket->isValid() && (pendingBytes = q_BIO_pending(writeBio)) > 0 + && plainSocket->openMode() != QIODevice::NotOpen) { // Read encrypted data from the write BIO into a buffer. data.resize(pendingBytes); int encryptedBytesRead = q_BIO_read(writeBio, data.data(), pendingBytes); @@ -799,6 +800,10 @@ void QSslSocketBackendPrivate::transmit() int readBytes = 0; const int bytesToRead = 4096; do { + if (readChannelCount == 0) { + // The read buffer is deallocated, don't try resize or write to it. + break; + } // Don't use SSL_pending(). It's very unreliable. readBytes = q_SSL_read(ssl, buffer.reserve(bytesToRead), bytesToRead); if (readBytes > 0) { diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp index 0e587965ca..3a54f33832 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp @@ -112,7 +112,7 @@ QIBusPlatformInputContext::QIBusPlatformInputContext () QString socketPath = QIBusPlatformInputContextPrivate::getSocketPath(); QFile file(socketPath); if (file.open(QFile::ReadOnly)) { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) qCDebug(qtQpaInputMethods) << "socketWatcher.addPath" << socketPath; // If KDE session save is used or restart ibus-daemon, // the applications could run before ibus-daemon runs. @@ -564,7 +564,7 @@ void QIBusPlatformInputContext::connectToBus() d->initBus(); connectToContextSignals(); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) if (!d->usePortal && m_socketWatcher.files().size() == 0) m_socketWatcher.addPath(QIBusPlatformInputContextPrivate::getSocketPath()); #endif diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h index f37552b937..d4daea2eb3 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h @@ -44,7 +44,9 @@ #include <QtCore/qpointer.h> #include <QtCore/QLocale> #include <QtDBus/qdbuspendingreply.h> +#if QT_CONFIG(filesystemwatcher) #include <QFileSystemWatcher> +#endif #include <QTimer> #include <QWindow> @@ -116,7 +118,7 @@ public Q_SLOTS: private: QIBusPlatformInputContextPrivate *d; bool m_eventFilterUseSynchronousMode; -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) QFileSystemWatcher m_socketWatcher; #endif QTimer m_timer; diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp index aef13a563f..1e03ad8b06 100644 --- a/src/widgets/dialogs/qfileinfogatherer.cpp +++ b/src/widgets/dialogs/qfileinfogatherer.cpp @@ -80,7 +80,7 @@ static QString translateDriveName(const QFileInfo &drive) */ QFileInfoGatherer::QFileInfoGatherer(QObject *parent) : QThread(parent), abort(false), -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) watcher(0), #endif #ifdef Q_OS_WIN @@ -88,7 +88,7 @@ QFileInfoGatherer::QFileInfoGatherer(QObject *parent) #endif m_iconProvider(&defaultProvider) { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) watcher = new QFileSystemWatcher(this); connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(list(QString))); connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(updateFile(QString))); @@ -179,7 +179,7 @@ void QFileInfoGatherer::fetchExtendedInformation(const QString &path, const QStr this->files.push(files); condition.wakeAll(); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) if (files.isEmpty() && !path.isEmpty() && !path.startsWith(QLatin1String("//")) /*don't watch UNC path*/) { @@ -208,7 +208,7 @@ void QFileInfoGatherer::updateFile(const QString &filePath) */ void QFileInfoGatherer::clear() { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) QMutexLocker locker(&mutex); watcher->removePaths(watcher->files()); watcher->removePaths(watcher->directories()); @@ -222,7 +222,7 @@ void QFileInfoGatherer::clear() */ void QFileInfoGatherer::removePath(const QString &path) { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) QMutexLocker locker(&mutex); watcher->removePath(path); #else @@ -266,7 +266,7 @@ QExtendedInformation QFileInfoGatherer::getInfo(const QFileInfo &fileInfo) const QExtendedInformation info(fileInfo); info.icon = m_iconProvider->icon(fileInfo); info.displayType = m_iconProvider->type(fileInfo); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) // ### Not ready to listen all modifications by default static const bool watchFiles = qEnvironmentVariableIsSet("QT_FILESYSTEMMODEL_WATCH_FILES"); if (watchFiles) { @@ -280,7 +280,7 @@ QExtendedInformation QFileInfoGatherer::getInfo(const QFileInfo &fileInfo) const } } } -#endif +#endif // filesystemwatcher #ifdef Q_OS_WIN if (m_resolveSymlinks && info.isSymLink(/* ignoreNtfsSymLinks = */ true)) { diff --git a/src/widgets/dialogs/qfileinfogatherer_p.h b/src/widgets/dialogs/qfileinfogatherer_p.h index cc82f42850..134a14b7ce 100644 --- a/src/widgets/dialogs/qfileinfogatherer_p.h +++ b/src/widgets/dialogs/qfileinfogatherer_p.h @@ -56,7 +56,9 @@ #include <qthread.h> #include <qmutex.h> #include <qwaitcondition.h> +#if QT_CONFIG(filesystemwatcher) #include <qfilesystemwatcher.h> +#endif #include <qfileiconprovider.h> #include <qpair.h> #include <qstack.h> @@ -207,7 +209,7 @@ private: // end protected by mutex QAtomicInt abort; -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) QFileSystemWatcher *watcher; #endif #ifdef Q_OS_WIN diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index e54fdc97d4..8b3549c3f5 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -475,7 +475,7 @@ QFileSystemModelPrivate::QFileSystemNode *QFileSystemModelPrivate::node(const QS return const_cast<QFileSystemModelPrivate::QFileSystemNode*>(&root); QFileSystemModelPrivate *p = const_cast<QFileSystemModelPrivate*>(this); node = p->addNode(parent, element,info); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) node->populate(fileInfoGatherer.getInfo(info)); #endif } else { @@ -513,7 +513,7 @@ void QFileSystemModel::timerEvent(QTimerEvent *event) Q_D(QFileSystemModel); if (event->timerId() == d->fetchingTimer.timerId()) { d->fetchingTimer.stop(); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) for (int i = 0; i < d->toFetch.count(); ++i) { const QFileSystemModelPrivate::QFileSystemNode *node = d->toFetch.at(i).node; if (!node->hasInformation()) { @@ -661,7 +661,7 @@ void QFileSystemModel::fetchMore(const QModelIndex &parent) if (indexNode->populatedChildren) return; indexNode->populatedChildren = true; -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) d->fileInfoGatherer.list(filePath(parent)); #endif } @@ -697,13 +697,13 @@ int QFileSystemModel::columnCount(const QModelIndex &parent) const */ QVariant QFileSystemModel::myComputer(int role) const { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) Q_D(const QFileSystemModel); #endif switch (role) { case Qt::DisplayRole: return QFileSystemModelPrivate::myComputer(); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) case Qt::DecorationRole: return d->fileInfoGatherer.iconProvider()->icon(QFileIconProvider::Computer); #endif @@ -740,14 +740,14 @@ QVariant QFileSystemModel::data(const QModelIndex &index, int role) const case Qt::DecorationRole: if (index.column() == 0) { QIcon icon = d->icon(index); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) if (icon.isNull()) { if (d->node(index)->isDir()) icon = d->fileInfoGatherer.iconProvider()->icon(QFileIconProvider::Folder); else icon = d->fileInfoGatherer.iconProvider()->icon(QFileIconProvider::File); } -#endif // QT_NO_FILESYSTEMWATCHER +#endif // filesystemwatcher return icon; } break; @@ -824,7 +824,7 @@ QString QFileSystemModelPrivate::name(const QModelIndex &index) const return QString(); QFileSystemNode *dirNode = node(index); if ( -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) fileInfoGatherer.resolveSymlinks() && #endif !resolvedSymLinks.isEmpty() && dirNode->isSymLink(/* ignoreNtfsSymLinks = */ true)) { @@ -926,7 +926,7 @@ bool QFileSystemModel::setData(const QModelIndex &idx, const QVariant &value, in QScopedPointer<QFileSystemModelPrivate::QFileSystemNode> nodeToRename(parentNode->children.take(oldName)); nodeToRename->fileName = newName; nodeToRename->parent = parentNode; -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) nodeToRename->populate(d->fileInfoGatherer.getInfo(QFileInfo(parentPath, newName))); #endif nodeToRename->isVisible = true; @@ -1277,7 +1277,7 @@ QString QFileSystemModel::filePath(const QModelIndex &index) const QString fullPath = d->filePath(index); QFileSystemModelPrivate::QFileSystemNode *dirNode = d->node(index); if (dirNode->isSymLink() -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) && d->fileInfoGatherer.resolveSymlinks() #endif && d->resolvedSymLinks.contains(fullPath) @@ -1333,7 +1333,7 @@ QModelIndex QFileSystemModel::mkdir(const QModelIndex &parent, const QString &na d->addNode(parentNode, name, QFileInfo()); Q_ASSERT(parentNode->children.contains(name)); QFileSystemModelPrivate::QFileSystemNode *node = parentNode->children[name]; -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) node->populate(d->fileInfoGatherer.getInfo(QFileInfo(dir.absolutePath() + QDir::separator() + name))); #endif d->addVisibleFiles(parentNode, QStringList(name)); @@ -1397,7 +1397,7 @@ QModelIndex QFileSystemModel::setRootPath(const QString &newPath) //We remove the watcher on the previous path if (!rootPath().isEmpty() && rootPath() != QLatin1String(".")) { //This remove the watcher for the old rootPath -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) d->fileInfoGatherer.removePath(rootPath()); #endif //This line "marks" the node as dirty, so the next fetchMore @@ -1453,7 +1453,7 @@ QDir QFileSystemModel::rootDirectory() const void QFileSystemModel::setIconProvider(QFileIconProvider *provider) { Q_D(QFileSystemModel); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) d->fileInfoGatherer.setIconProvider(provider); #endif d->root.updateIcon(provider, QString()); @@ -1464,7 +1464,7 @@ void QFileSystemModel::setIconProvider(QFileIconProvider *provider) */ QFileIconProvider *QFileSystemModel::iconProvider() const { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) Q_D(const QFileSystemModel); return d->fileInfoGatherer.iconProvider(); #else @@ -1516,7 +1516,7 @@ QDir::Filters QFileSystemModel::filter() const */ void QFileSystemModel::setResolveSymlinks(bool enable) { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) Q_D(QFileSystemModel); d->fileInfoGatherer.setResolveSymlinks(enable); #else @@ -1526,7 +1526,7 @@ void QFileSystemModel::setResolveSymlinks(bool enable) bool QFileSystemModel::resolveSymlinks() const { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) Q_D(const QFileSystemModel); return d->fileInfoGatherer.resolveSymlinks(); #else @@ -1628,7 +1628,7 @@ QStringList QFileSystemModel::nameFilters() const */ bool QFileSystemModel::event(QEvent *event) { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) Q_D(QFileSystemModel); if (event->type() == QEvent::LanguageChange) { d->root.retranslateStrings(d->fileInfoGatherer.iconProvider(), QString()); @@ -1642,7 +1642,7 @@ bool QFileSystemModel::rmdir(const QModelIndex &aindex) { QString path = filePath(aindex); const bool success = QDir().rmdir(path); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) if (success) { QFileSystemModelPrivate * d = const_cast<QFileSystemModelPrivate*>(d_func()); d->fileInfoGatherer.removePath(path); @@ -1685,7 +1685,7 @@ QFileSystemModelPrivate::QFileSystemNode* QFileSystemModelPrivate::addNode(QFile { // In the common case, itemLocation == count() so check there first QFileSystemModelPrivate::QFileSystemNode *node = new QFileSystemModelPrivate::QFileSystemNode(fileName, parentNode); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) node->populate(info); #else Q_UNUSED(info) @@ -1793,7 +1793,7 @@ void QFileSystemModelPrivate::removeVisibleFile(QFileSystemNode *parentNode, int */ void QFileSystemModelPrivate::_q_fileSystemChanged(const QString &path, const QVector<QPair<QString, QFileInfo> > &updates) { -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) Q_Q(QFileSystemModel); QVector<QString> rowsToUpdate; QStringList newFiles; @@ -1889,7 +1889,7 @@ void QFileSystemModelPrivate::_q_fileSystemChanged(const QString &path, const QV #else Q_UNUSED(path) Q_UNUSED(updates) -#endif // !QT_NO_FILESYSTEMWATCHER +#endif // filesystemwatcher } /*! @@ -1947,7 +1947,7 @@ void QFileSystemModelPrivate::init() { Q_Q(QFileSystemModel); qRegisterMetaType<QVector<QPair<QString,QFileInfo> > >(); -#ifndef QT_NO_FILESYSTEMWATCHER +#if QT_CONFIG(filesystemwatcher) q->connect(&fileInfoGatherer, SIGNAL(newListOfFiles(QString,QStringList)), q, SLOT(_q_directoryChanged(QString,QStringList))); q->connect(&fileInfoGatherer, SIGNAL(updates(QString,QVector<QPair<QString,QFileInfo> >)), @@ -1956,7 +1956,7 @@ void QFileSystemModelPrivate::init() q, SLOT(_q_resolvedName(QString,QString))); q->connect(&fileInfoGatherer, SIGNAL(directoryLoaded(QString)), q, SIGNAL(directoryLoaded(QString))); -#endif // !QT_NO_FILESYSTEMWATCHER +#endif // filesystemwatcher q->connect(&delayedSortTimer, SIGNAL(timeout()), q, SLOT(_q_performDelayedSort()), Qt::QueuedConnection); roleNames.insertMulti(QFileSystemModel::FileIconRole, QByteArrayLiteral("fileIcon")); // == Qt::decoration |