Merge remote-tracking branch 'origin/5.6.2' into 5.6

Change-Id: I84acde3251893f2a7a776962b2ff970b90884b63
This commit is contained in:
Liang Qi 2016-09-16 08:56:12 +02:00
commit 59b275b284
8 changed files with 407 additions and 6 deletions

339
dist/changes-5.6.2 vendored Normal file
View File

@ -0,0 +1,339 @@
Qt 5.6.2 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 5.6.0.
For more details, refer to the online documentation included in this
distribution. The documentation is also available online:
http://doc.qt.io/qt-5/index.html
The Qt version 5.6 series is binary compatible with the 5.5.x series.
Applications compiled for 5.5 will continue to run with 5.6.
Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:
https://bugreports.qt.io/
Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.
******************************************************************************
* Important Behavior Changes *
******************************************************************************
- [QTBUG-45031] The NSURLConnection backend of QNetworkAccessManager has
been removed, since SecureTransport is the default SSL backend on iOS
and is enabled by default. This means that building with -no-openssl
-no-securetransport will no longer provide SSL capabilities on iOS.
- QUrl::resolved() no longer treats a URL with a scheme as a relative URL
if it matches this URL's scheme. For now it still treats "file:name.txt"
as relative for compatibility, but be warned that in Qt 5.8 it will no
longer consider those to be relative. Both isRelative() and RFC 3986 say
that such URLs are not relative, so starting from Qt 5.8, resolved() will
return them as is.
- [QTBUG-47815] QDateTime now uses QLocale to get the "AM" and "PM" strings
when parsing times, instead of strings obtained from the loaded
translations.
******************************************************************************
* Library *
******************************************************************************
QtCore
------
- Optimized toLatin1()/toUtf8() called on a QStringBuilder expression.
- [QTBUG-18729][QTBUG-32457] Fixed a bug that caused Windows to show
dialogs prompting the user to insert media when certain operations were
made with Qt I/O classes, particularly QStorageInfo::mountedVolumes().
- QCommandLineParser:
* The methods that exit() the application will now call cleanup routines
registered with qAddPostRoutine.
- QDataStream:
* Fixed compatibility of QTime serialization with Qt 3.
- QDebug:
* Fixed streaming of QChars.
- QJsonObject:
* Optimized equality operator.
- QJsonValue:
* Fixed use-after-free in assignment operator.
- QLockFile:
* Fixed permissions on lock files on Unix to allow for adjustments via
umask.
* [QTBUG-53392] Improved the robustness of detecting stale lock files on
Windows.
- QMutex:
* [QTBUG-54831] Fixed a bug that caused some applications to crash on
exit, depending on the order of creation of certain statics inside Qt.
- QObject:
* Fixed a crash when connecting a signal to a lambda or functor while
using Qt::UniqueConnection (note: the connection is still not unique).
- QStringListModel:
* Fixed dataChanged()'s 'roles' parameter to always contain both
Qt::EditRole and Qt::DisplayRole.
- QTemporaryFile:
* [QTBUG-54810] Fixed a bug that caused QTemporaryFile to fail when the
file name contained non-ASCII characters, on Windows.
- QTimeZone:
* [QTBUG-53071] Fixed a bug that caused QTimeZone to mis-parse time zones
whose names were not simple letter and digit combinations.
- QUrl:
* Made QUrl stricter in what it accepts for schemes, to comply with the
relevant standards. QUrl will no longer accept schemes starting with a
plus (+), a dash (-) or a dot (.).
- QVariant:
* [QTBUG-53384] Fixed QVariant::canConvert and conversion from integer
types to enumeration types.
* [QTBUG-54893] Fixed a bug that caused QVariants not to compare properly
if they contained QStringLists.
- QVector:
* [QTBUG-51758] Fixed a bug that would cause QVector to crash if one
called reserve(0).
- QXmlStreamReader:
* Fixed a bug in the XML parser that prevented to load XML that
contained invalid characters for XML 1.0.
- QXmlStreamWriter:
* Fixed a bug that prevented the generation of valid XML files when
using encoding with 8 bit per character but not ASCII compatible.
QXMLStreamWriter generated XML markup using always ASCII in this case.
QtGui
-----
- Fixed UBSan errors in
* QColor
* QGrayRaster
* QRasterizer
- Removed a total of 1610 relocations from the library.
- QGuiApplication:
* [QTBUG-51703] Fixed a bug that would cause QGuiApplication::sync() to
be left undefined for Qt builds without session management support.
- QIconLoaderEngine:
* Fixed theme lookup for scalable entries.
- Text:
* [QTBUG-42033] Fixed bug where a QTextLayout with
ShowLineAndParagraphSeparators would modify the layout's input string.
* [QTBUG-49452] Fixed a performance regression in Freetype engine that
was introduced in Qt 5.5.
* [QTBUG-54180] Fixed performance regression when rapidly switching
between a large set of fonts.
- Windows:
* [QTBUG-54494] Fixed stretch when combined with either no or vertical
hinting preference or a device pixel ratio different from 1.
* [QTBUG-51024] Fixed height of text bounding box when using no or
vertical hinting preference, or when the device pixel ratio is
different from 1.
QtNetwork
---------
- QAuthenticator:
* [QTBUG-53338] Fixed crash when comparing an initialized QAuthenticator
with an uninitialized QAuthenticator.
QtSql
-----
- [QTBUG-53969][QTBUG-53237] Fixed QSqlQuery::prepare value truncation
error when using UNSIGNED values in a MySQL database.
QtWidgets
---------
- Fixed UBSan/Coverity errors in:
* QAbstractItemView
* QDataWidgetMapper
* QTreeWidget
* QWidgetLineControl
- Removed a total of 167 relocations from the library.
- QAbstractItemDelegate:
* [QTBUG-16469] Show localized detailed tooltips and "What's this?"
texts.
- QAbstractItemView:
* [QTBUG-53541] Fixed a bug involving drawing the drop indicator
where it shouldn't be drawn.
* Fixed a bug in setSelectionModel() which could lead to model indexes
from a different model be reused on a new model.
- QAbstractSpinBox:
* [QTBUG-55249] Fixed a bug related to first key press.
- QColorDialog:
* Fixed ignored alpha channel in getRgb().
- QComboBox:
* [QTBUG-54191] Fixed a crash on setEditable(false) called from
editTextChanged().
- QCompleter:
* [QTBUG-54642] Fixed wrong completion role after a QFileSystemModel
has been used.
- QDesktopWidget:
* [QTBUG-52101] Fixed tracking of QScreens.
* [QTBUG-52606] Fixed a bug related to DPI-scaling in screenNumber().
- QDialog:
* [QTBUG-52735] Fixed a bug involving moves between screens with
different DPI-scaling factors.
- QDockWidget:
* [QTBUG-52107][QTBUG-53754] Fixed bugs related to floating group tab
window title.
* [QTBUG-52108] A QDockWidgetGroupWindow can now be dragged into one of
its QDockWidgets.
* [QTBUG-53808] Fixed a bug that caused an undocked dock widget to lose
its decoration.
* [QTBUG-54185] Unbroke drag-and-drop.
- QGraphicsProxyWidget:
* [QTBUG-55112] Fixed a bug that caused the widget to receive events
during construction.
- QLineEdit:
* [QTBUG-49374] Fixed icons being too small on a High DPI screen
without scaling.
* [QTBUG-52796] Fixed QKeySequence::MoveToStartOfLine shortcut
being ignored.
* [QTBUG-54425] Fixed missing clear button on macOS.
- QMainWindow:
* [QTBUG-50491] Fixed a bug related to restoring dock widgets with
GroupedDragging.
* [QTBUG-52108] Fixed a bug related to context menus in the presence of
floating tabs.
- QMenu:
* [QTBUG-53054] Submenus can now be opened on left mouse button
press, too.
- QMenuBar:
* [QTBUG-53205] Fixed bugs (incl. crashes) involving reparented
menu bars.
- QOpenGLWidget:
* [QTBUG-50818][QTBUG-51815][QTBUG-54241][QTBUG-52419] Fixed several
repainting bugs and other drawing artifacts.
- QSideBar:
* Fixed a nullptr dereference on platforms that do not support
QFileSystemWatcher.
- QSystemTrayIcon:
* [QTBUG-53591] Use large icon for balloon message on Windows systems.
- QTabBar:
* Fixed a performance problem involving font metrics.
- QTreeView:
* [QTBUG-52793] Fixed a key navigation bug when the columns were
reordered.
- QTreeWidget:
* [QTBUG-50207] Now handles device pixel ratio in animations correctly.
- QWidget:
* [QTBUG-39887] Restored documented behavior for the
WA_X11NetWmWindowType* attributes.
* [QTBUG-41135][QTBUG-50030][QTBUG-50136][QTBUG-52507] Fixed
mapTo/FromGlobal() in case of widget hierarchies embedded into
QGraphicsView with transformations.
* [QTBUG-45484] Fixed setWindowRole().
* [QTBUG-50796] Reduced paint-events when resizing native widgets.
* [QTBUG-52123] Fixed a bug by which opaque texture-based widgets
were not always shown.
* [QTBUG-53515] Added a workaround for render-to-texture widgets in
fullscreen windows.
* [QTBUG-54734] Worked around an issue with translucent GL windows
on Windows.
* [QTBUG-54906] Fixed a bug relaed to fullscreen handling on Windows.
- Styles:
* Fixed several cases of QStyleOptions being created with null
version.
* [QTBUG-51266] Fixed painting of small progress bars on Vista+.
* [QTBUG-54630] Fixed a crash in QMacStyle::styleHint().
* [QTBUG-49374] The Windows style now takes the monitor's differing
logical DPI into account when calculating native metrics.
******************************************************************************
* Platform-specific Changes *
******************************************************************************
Android
-------
- [QTBUG-50724] Added support for clang compiler.
- [QTBUG-53511] Fixed CJK font resolution on Android 7.
BSDs
----
- The freebsd-g++ mkspec was moved back and no longer requires the
"unsupported/" prefix, matching the FreeBSD ports tree, as FreeBSD 9.3
still defaults to using GCC. Users of GCC that did not previously use
the ports patch will need to adapt their build scripts and drop the
"unsupported/" prefix.
- Fixed a number of compilation issues on FreeBSD, NetBSD and OpenBSD. Qt
should now build out-of-the-box (no patches needed) on those systems.
Linux
-----
- [QTBUG-54733] It is now possible to opt out from installing signal
handlers when running with eglfs and linuxfb by setting the
QT_QPA_NO_SIGNAL_HANDLER environment variable to a non-zero value.
- Fixed the value of the 'defined' field in ATSPI GetAttributeValue
results.
macOS
-----
- [QTBUG-48953] Pasting text from Qt applications to Apple Mail now works.
- [QTBUG-48953] “text/vcard” is now required as the mime type when
placing vCards on the clipboard.
- OS X => macOS rename in Q_OS_ macros/docs, qmake scopes,
file selectors, etc.
- Add new QSysInfo values and MAC_OS_X / __MAC_ / __IPHONE_ values for
macOS 10.12 and iOS 9.1 through 10.0.
- Update prettyProductName with new macOS "Sierra" codename.
Windows
-------
- Fixed a new[]/delete mismatch in Windows tablet support.
****************************************************************************
* Tools *
****************************************************************************
moc
---
- [QTBUG-53441] Fixed crash on file ending with a backslash followed by
carriage return

View File

@ -294,15 +294,19 @@ void Window::contextMenu(const QPoint &pos)
if (!item)
return;
QMenu menu;
#ifndef QT_NO_CLIPBOARD
QAction *copyAction = menu.addAction("Copy Name");
#endif
QAction *openAction = menu.addAction("Open");
QAction *action = menu.exec(filesTable->mapToGlobal(pos));
if (!action)
return;
const QString fileName = fileNameOfItem(item);
if (action == copyAction)
QGuiApplication::clipboard()->setText(QDir::toNativeSeparators(fileName));
else if (action == openAction)
if (action == openAction)
openFile(fileName);
#ifndef QT_NO_CLIPBOARD
else if (action == copyAction)
QGuiApplication::clipboard()->setText(QDir::toNativeSeparators(fileName));
#endif
}
//! [16]

View File

@ -38,6 +38,7 @@
#include <qregexp.h>
#include <qcryptographichash.h>
#include <qdebug.h>
#include <qsettings.h>
#include <qstring.h>
#include <stdlib.h>
#include <time.h>
@ -1405,6 +1406,28 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
QString configName = (as_release ? "Release" : "Debug");
QMap<QString, QString> settings;
if (!project->isActiveConfig("no_xcode_development_team")) {
const QSettings xcodeSettings(
QDir::homePath() + QLatin1String("/Library/Preferences/com.apple.dt.Xcode.plist"),
QSettings::NativeFormat);
const QVariantMap teams = xcodeSettings.value(QLatin1String("IDEProvisioningTeams")).toMap();
if (!teams.isEmpty()) {
for (QVariantMap::const_iterator it = teams.begin(), end = teams.end(); it != end; ++it) {
const QVariantMap team = it.value().toMap();
const QString teamType = team.value(QLatin1String("teamType")).toString();
// Skip Company teams because signing permissions may not be available under all
// circumstances for users who are not the Team Agent
if (teamType != QLatin1String("Company")) {
const QString teamId = team.value(QLatin1String("teamID")).toString();
settings.insert("DEVELOPMENT_TEAM", teamId);
// first suitable team we found is the one we'll use by default
break;
}
}
}
}
settings.insert("COPY_PHASE_STRIP", (as_release ? "YES" : "NO"));
// Bitcode is only supported with a deployment target >= iOS 6.0.
// Disable it for now, and consider switching it on when later

View File

@ -149,7 +149,7 @@ void QAndroidPlatformWindow::updateStatusBarVisibility()
if (!isNonRegularWindow) {
if (m_windowState & Qt::WindowFullScreen)
QtAndroid::hideStatusBar();
else if (m_windowState & Qt::WindowMaximized)
else
QtAndroid::showStatusBar();
}
}

View File

@ -767,7 +767,7 @@ void QWinRTScreen::addWindow(QWindow *window)
updateWindowTitle(window->title());
QWindowSystemInterface::handleWindowActivated(window, Qt::OtherFocusReason);
handleExpose();
QWindowSystemInterface::flushWindowSystemEvents();
QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
#if _MSC_VER >= 1900 && !defined(QT_NO_DRAGANDDROP)
QWinRTDrag::instance()->setDropTarget(window);
@ -785,7 +785,7 @@ void QWinRTScreen::removeWindow(QWindow *window)
if (wasTopWindow)
QWindowSystemInterface::handleWindowActivated(Q_NULLPTR, Qt::OtherFocusReason);
handleExpose();
QWindowSystemInterface::flushWindowSystemEvents();
QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
#if _MSC_VER >= 1900 && !defined(QT_NO_DRAGANDDROP)
if (wasTopWindow)
QWinRTDrag::instance()->setDropTarget(topWindow());

View File

@ -314,6 +314,12 @@ Configure::Configure(int& argc, char** argv) : verbose(0)
dictionary["QT_GCC_MAJOR_VERSION"] = parts.value(0, zero);
dictionary["QT_GCC_MINOR_VERSION"] = parts.value(1, zero);
dictionary["QT_GCC_PATCH_VERSION"] = parts.value(2, zero);
} else if (dictionary["QMAKESPEC"].contains(QString("msvc"))) {
const QString zero = QStringLiteral("0");
const QStringList parts = Environment::msvcVersion().split(QLatin1Char('.'));
dictionary["QT_CL_MAJOR_VERSION"] = parts.value(0, zero);
dictionary["QT_CL_MINOR_VERSION"] = parts.value(1, zero);
dictionary["QT_CL_PATCH_VERSION"] = parts.value(2, zero);
}
}
@ -3629,6 +3635,10 @@ void Configure::generateQConfigPri()
configStream << "QT_GCC_MAJOR_VERSION = " << dictionary["QT_GCC_MAJOR_VERSION"] << endl
<< "QT_GCC_MINOR_VERSION = " << dictionary["QT_GCC_MINOR_VERSION"] << endl
<< "QT_GCC_PATCH_VERSION = " << dictionary["QT_GCC_PATCH_VERSION"] << endl;
} else if (!dictionary["QT_CL_MAJOR_VERSION"].isEmpty()) {
configStream << "QT_CL_MAJOR_VERSION = " << dictionary["QT_CL_MAJOR_VERSION"] << endl
<< "QT_CL_MINOR_VERSION = " << dictionary["QT_CL_MINOR_VERSION"] << endl
<< "QT_CL_PATCH_VERSION = " << dictionary["QT_CL_PATCH_VERSION"] << endl;
}
if (dictionary.value("XQMAKESPEC").startsWith("wince")) {

View File

@ -169,6 +169,30 @@ QString Environment::gccVersion()
return version;
}
QString Environment::msvcVersion()
{
int returnValue = 0;
// Extract version from standard error output of "cl /?"
const QString command = QFile::decodeName(qgetenv("ComSpec"))
+ QLatin1String(" /c ") + QLatin1String(compilerInfo(CC_MSVC2015)->executable)
+ QLatin1String(" /? 2>&1");
QString version = execute(command, &returnValue);
if (returnValue != 0) {
cout << "Could not get cl version" << returnValue << qPrintable(version) << '\n';;
version.clear();
} else {
QRegExp versionRegexp(QStringLiteral("^.*Compiler Version ([0-9.]+) for.*$"));
Q_ASSERT(versionRegexp.isValid());
if (versionRegexp.exactMatch(version)) {
version = versionRegexp.cap(1);
} else {
cout << "Unable to determine cl version from the output of \""
<< qPrintable(command) << "\"\n";
}
}
return version;
}
/*!
Returns the enum of the compiler which was detected on the system.
The compilers are detected in the order as entered into the

View File

@ -57,6 +57,7 @@ public:
static QString detectQMakeSpec();
static Compiler compilerFromQMakeSpec(const QString &qmakeSpec);
static QString gccVersion();
static QString msvcVersion();
static int execute(QStringList arguments, const QStringList &additionalEnv, const QStringList &removeEnv);
static QString execute(const QString &command, int *returnCode = 0);