Merge remote-tracking branch 'origin/5.6.2' into 5.6
Change-Id: I84acde3251893f2a7a776962b2ff970b90884b63
This commit is contained in:
commit
59b275b284
339
dist/changes-5.6.2
vendored
Normal file
339
dist/changes-5.6.2
vendored
Normal 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
|
@ -294,15 +294,19 @@ void Window::contextMenu(const QPoint &pos)
|
|||||||
if (!item)
|
if (!item)
|
||||||
return;
|
return;
|
||||||
QMenu menu;
|
QMenu menu;
|
||||||
|
#ifndef QT_NO_CLIPBOARD
|
||||||
QAction *copyAction = menu.addAction("Copy Name");
|
QAction *copyAction = menu.addAction("Copy Name");
|
||||||
|
#endif
|
||||||
QAction *openAction = menu.addAction("Open");
|
QAction *openAction = menu.addAction("Open");
|
||||||
QAction *action = menu.exec(filesTable->mapToGlobal(pos));
|
QAction *action = menu.exec(filesTable->mapToGlobal(pos));
|
||||||
if (!action)
|
if (!action)
|
||||||
return;
|
return;
|
||||||
const QString fileName = fileNameOfItem(item);
|
const QString fileName = fileNameOfItem(item);
|
||||||
if (action == copyAction)
|
if (action == openAction)
|
||||||
QGuiApplication::clipboard()->setText(QDir::toNativeSeparators(fileName));
|
|
||||||
else if (action == openAction)
|
|
||||||
openFile(fileName);
|
openFile(fileName);
|
||||||
|
#ifndef QT_NO_CLIPBOARD
|
||||||
|
else if (action == copyAction)
|
||||||
|
QGuiApplication::clipboard()->setText(QDir::toNativeSeparators(fileName));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
//! [16]
|
//! [16]
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <qregexp.h>
|
#include <qregexp.h>
|
||||||
#include <qcryptographichash.h>
|
#include <qcryptographichash.h>
|
||||||
#include <qdebug.h>
|
#include <qdebug.h>
|
||||||
|
#include <qsettings.h>
|
||||||
#include <qstring.h>
|
#include <qstring.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
@ -1405,6 +1406,28 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
|
|||||||
QString configName = (as_release ? "Release" : "Debug");
|
QString configName = (as_release ? "Release" : "Debug");
|
||||||
|
|
||||||
QMap<QString, QString> settings;
|
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"));
|
settings.insert("COPY_PHASE_STRIP", (as_release ? "YES" : "NO"));
|
||||||
// Bitcode is only supported with a deployment target >= iOS 6.0.
|
// Bitcode is only supported with a deployment target >= iOS 6.0.
|
||||||
// Disable it for now, and consider switching it on when later
|
// Disable it for now, and consider switching it on when later
|
||||||
|
@ -149,7 +149,7 @@ void QAndroidPlatformWindow::updateStatusBarVisibility()
|
|||||||
if (!isNonRegularWindow) {
|
if (!isNonRegularWindow) {
|
||||||
if (m_windowState & Qt::WindowFullScreen)
|
if (m_windowState & Qt::WindowFullScreen)
|
||||||
QtAndroid::hideStatusBar();
|
QtAndroid::hideStatusBar();
|
||||||
else if (m_windowState & Qt::WindowMaximized)
|
else
|
||||||
QtAndroid::showStatusBar();
|
QtAndroid::showStatusBar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -767,7 +767,7 @@ void QWinRTScreen::addWindow(QWindow *window)
|
|||||||
updateWindowTitle(window->title());
|
updateWindowTitle(window->title());
|
||||||
QWindowSystemInterface::handleWindowActivated(window, Qt::OtherFocusReason);
|
QWindowSystemInterface::handleWindowActivated(window, Qt::OtherFocusReason);
|
||||||
handleExpose();
|
handleExpose();
|
||||||
QWindowSystemInterface::flushWindowSystemEvents();
|
QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
|
||||||
|
|
||||||
#if _MSC_VER >= 1900 && !defined(QT_NO_DRAGANDDROP)
|
#if _MSC_VER >= 1900 && !defined(QT_NO_DRAGANDDROP)
|
||||||
QWinRTDrag::instance()->setDropTarget(window);
|
QWinRTDrag::instance()->setDropTarget(window);
|
||||||
@ -785,7 +785,7 @@ void QWinRTScreen::removeWindow(QWindow *window)
|
|||||||
if (wasTopWindow)
|
if (wasTopWindow)
|
||||||
QWindowSystemInterface::handleWindowActivated(Q_NULLPTR, Qt::OtherFocusReason);
|
QWindowSystemInterface::handleWindowActivated(Q_NULLPTR, Qt::OtherFocusReason);
|
||||||
handleExpose();
|
handleExpose();
|
||||||
QWindowSystemInterface::flushWindowSystemEvents();
|
QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
|
||||||
#if _MSC_VER >= 1900 && !defined(QT_NO_DRAGANDDROP)
|
#if _MSC_VER >= 1900 && !defined(QT_NO_DRAGANDDROP)
|
||||||
if (wasTopWindow)
|
if (wasTopWindow)
|
||||||
QWinRTDrag::instance()->setDropTarget(topWindow());
|
QWinRTDrag::instance()->setDropTarget(topWindow());
|
||||||
|
@ -314,6 +314,12 @@ Configure::Configure(int& argc, char** argv) : verbose(0)
|
|||||||
dictionary["QT_GCC_MAJOR_VERSION"] = parts.value(0, zero);
|
dictionary["QT_GCC_MAJOR_VERSION"] = parts.value(0, zero);
|
||||||
dictionary["QT_GCC_MINOR_VERSION"] = parts.value(1, zero);
|
dictionary["QT_GCC_MINOR_VERSION"] = parts.value(1, zero);
|
||||||
dictionary["QT_GCC_PATCH_VERSION"] = parts.value(2, 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
|
configStream << "QT_GCC_MAJOR_VERSION = " << dictionary["QT_GCC_MAJOR_VERSION"] << endl
|
||||||
<< "QT_GCC_MINOR_VERSION = " << dictionary["QT_GCC_MINOR_VERSION"] << endl
|
<< "QT_GCC_MINOR_VERSION = " << dictionary["QT_GCC_MINOR_VERSION"] << endl
|
||||||
<< "QT_GCC_PATCH_VERSION = " << dictionary["QT_GCC_PATCH_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")) {
|
if (dictionary.value("XQMAKESPEC").startsWith("wince")) {
|
||||||
|
@ -169,6 +169,30 @@ QString Environment::gccVersion()
|
|||||||
return version;
|
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.
|
Returns the enum of the compiler which was detected on the system.
|
||||||
The compilers are detected in the order as entered into the
|
The compilers are detected in the order as entered into the
|
||||||
|
@ -57,6 +57,7 @@ public:
|
|||||||
static QString detectQMakeSpec();
|
static QString detectQMakeSpec();
|
||||||
static Compiler compilerFromQMakeSpec(const QString &qmakeSpec);
|
static Compiler compilerFromQMakeSpec(const QString &qmakeSpec);
|
||||||
static QString gccVersion();
|
static QString gccVersion();
|
||||||
|
static QString msvcVersion();
|
||||||
|
|
||||||
static int execute(QStringList arguments, const QStringList &additionalEnv, const QStringList &removeEnv);
|
static int execute(QStringList arguments, const QStringList &additionalEnv, const QStringList &removeEnv);
|
||||||
static QString execute(const QString &command, int *returnCode = 0);
|
static QString execute(const QString &command, int *returnCode = 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user