forked from qt-creator/qt-creator
Bump minimum Qt version (to build Qt Creator) to 5.11
Recent adaptations to Qt 5.13's API deprecations require using APIs which were introduces in Qt 5.11. Change-Id: I6c077d824c9ce716e019543b290c355a5d512fad Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -25,7 +25,7 @@ https://doc-snapshots.qt.io/qtcreator-extending/coding-style.html
|
|||||||
|
|
||||||
Prerequisites:
|
Prerequisites:
|
||||||
|
|
||||||
* Qt 5.9.0 or later
|
* Qt 5.11.0 or later
|
||||||
* Qt WebEngine module for QtWebEngine based help viewer
|
* Qt WebEngine module for QtWebEngine based help viewer
|
||||||
* On Windows:
|
* On Windows:
|
||||||
* ActiveState Active Perl
|
* ActiveState Active Perl
|
||||||
@@ -80,7 +80,7 @@ For detailed information on the supported compilers, see
|
|||||||
for example, `c:\work`. If you plan to use MinGW and Microsoft Visual
|
for example, `c:\work`. If you plan to use MinGW and Microsoft Visual
|
||||||
Studio simultaneously or mix different Qt versions, we recommend
|
Studio simultaneously or mix different Qt versions, we recommend
|
||||||
creating a directory structure which reflects that. For example:
|
creating a directory structure which reflects that. For example:
|
||||||
`C:\work\qt5.9.0-vs12, C:\work\qt5.9.0-mingw`.
|
`C:\work\qt5.11.0-vs15, C:\work\qt5.11.0-mingw`.
|
||||||
|
|
||||||
4. Download and install Perl from <https://www.activestate.com/activeperl>
|
4. Download and install Perl from <https://www.activestate.com/activeperl>
|
||||||
and check that perl.exe is added to the path. Run `perl -v` to verify
|
and check that perl.exe is added to the path. Run `perl -v` to verify
|
||||||
|
@@ -168,7 +168,7 @@
|
|||||||
|
|
||||||
The source code of ANGLE is part of the Qt libraries. For more
|
The source code of ANGLE is part of the Qt libraries. For more
|
||||||
information about the licenses used in Qt GUI, see
|
information about the licenses used in Qt GUI, see
|
||||||
\l{https://doc.qt.io/qt-5.9/licenses-used-in-qt.html#qt-gui}{Qt GUI}.
|
\l{https://doc.qt.io/qt-5.11/licenses-used-in-qt.html#qt-gui}{Qt GUI}.
|
||||||
|
|
||||||
\l{https://spdx.org/licenses/BSD-3-Clause.html}
|
\l{https://spdx.org/licenses/BSD-3-Clause.html}
|
||||||
{BSD 3-clause "New" or "Revised" License}
|
{BSD 3-clause "New" or "Revised" License}
|
||||||
|
@@ -27,7 +27,7 @@ Product {
|
|||||||
enableFallback: false
|
enableFallback: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Depends { name: "Qt.core"; versionAtLeast: "5.9.0" }
|
Depends { name: "Qt.core"; versionAtLeast: "5.11.0" }
|
||||||
|
|
||||||
// TODO: Should fall back to what came from Qt.core for Qt < 5.7, but we cannot express that
|
// TODO: Should fall back to what came from Qt.core for Qt < 5.7, but we cannot express that
|
||||||
// atm. Conditionally pulling in a module that sets the property is also not possible,
|
// atm. Conditionally pulling in a module that sets the property is also not possible,
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
include(qtcreator.pri)
|
include(qtcreator.pri)
|
||||||
|
|
||||||
#version check qt
|
#version check qt
|
||||||
!minQtVersion(5, 9, 0) {
|
!minQtVersion(5, 11, 0) {
|
||||||
message("Cannot build $$IDE_DISPLAY_NAME with Qt version $${QT_VERSION}.")
|
message("Cannot build $$IDE_DISPLAY_NAME with Qt version $${QT_VERSION}.")
|
||||||
error("Use at least Qt 5.9.0.")
|
error("Use at least Qt 5.11.0.")
|
||||||
}
|
}
|
||||||
|
|
||||||
include(doc/doc.pri)
|
include(doc/doc.pri)
|
||||||
|
@@ -61,11 +61,7 @@ JsonObject &JsonObject::operator=(const JsonObject &other) = default;
|
|||||||
|
|
||||||
JsonObject &JsonObject::operator=(JsonObject &&other)
|
JsonObject &JsonObject::operator=(JsonObject &&other)
|
||||||
{
|
{
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
m_jsonObject.swap(other.m_jsonObject);
|
m_jsonObject.swap(other.m_jsonObject);
|
||||||
#else
|
|
||||||
m_jsonObject = other.m_jsonObject; // NOTE use QJsonObject::swap when minimum required Qt version >= 5.10
|
|
||||||
#endif
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -436,12 +436,6 @@ bool ConsoleProcess::startTerminalEmulator(QSettings *settings, const QString &w
|
|||||||
const Utils::Environment &env)
|
const Utils::Environment &env)
|
||||||
{
|
{
|
||||||
const TerminalCommand term = terminalEmulator(settings);
|
const TerminalCommand term = terminalEmulator(settings);
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
// for 5.9 and below we cannot set the environment
|
|
||||||
Q_UNUSED(env);
|
|
||||||
return QProcess::startDetached(term.command, QtcProcess::splitArgs(term.openArgs),
|
|
||||||
workingDir);
|
|
||||||
#else
|
|
||||||
QProcess process;
|
QProcess process;
|
||||||
process.setProgram(term.command);
|
process.setProgram(term.command);
|
||||||
process.setArguments(QtcProcess::splitArgs(term.openArgs));
|
process.setArguments(QtcProcess::splitArgs(term.openArgs));
|
||||||
@@ -449,7 +443,6 @@ bool ConsoleProcess::startTerminalEmulator(QSettings *settings, const QString &w
|
|||||||
process.setWorkingDirectory(workingDir);
|
process.setWorkingDirectory(workingDir);
|
||||||
|
|
||||||
return process.startDetached();
|
return process.startDetached();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Utils
|
} // namespace Utils
|
||||||
|
@@ -803,11 +803,7 @@ void MimeXMLProvider::ensureLoaded()
|
|||||||
|
|
||||||
// if (!fdoXmlFound) {
|
// if (!fdoXmlFound) {
|
||||||
// // We could instead install the file as part of installing Qt?
|
// // We could instead install the file as part of installing Qt?
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
|
|
||||||
const char freedesktopOrgXml[] = ":/qt-project.org/qmime/packages/freedesktop.org.xml";
|
const char freedesktopOrgXml[] = ":/qt-project.org/qmime/packages/freedesktop.org.xml";
|
||||||
#else
|
|
||||||
const char freedesktopOrgXml[] = ":/qt-project.org/qmime/freedesktop.org.xml";
|
|
||||||
#endif
|
|
||||||
allFiles.prepend(QLatin1String(freedesktopOrgXml));
|
allFiles.prepend(QLatin1String(freedesktopOrgXml));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
@@ -386,14 +386,10 @@ private:
|
|||||||
|
|
||||||
static int widthLimit()
|
static int widthLimit()
|
||||||
{
|
{
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
auto screen = QGuiApplication::screenAt(QCursor::pos());
|
auto screen = QGuiApplication::screenAt(QCursor::pos());
|
||||||
if (!screen)
|
if (!screen)
|
||||||
screen = QGuiApplication::primaryScreen();
|
screen = QGuiApplication::primaryScreen();
|
||||||
return screen->availableGeometry().width() / 2;
|
return screen->availableGeometry().width() / 2;
|
||||||
#else
|
|
||||||
return QApplication::desktop()->availableGeometry(QCursor::pos()).width() / 2;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -78,11 +78,7 @@ void FilePropertiesDialog::refresh()
|
|||||||
|
|
||||||
m_ui->owner->setText(fileInfo.owner());
|
m_ui->owner->setText(fileInfo.owner());
|
||||||
m_ui->group->setText(fileInfo.group());
|
m_ui->group->setText(fileInfo.group());
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
m_ui->size->setText(locale.formattedDataSize(fileInfo.size()));
|
m_ui->size->setText(locale.formattedDataSize(fileInfo.size()));
|
||||||
#else
|
|
||||||
m_ui->size->setText(tr("%1 Bytes").arg(locale.toString(fileInfo.size())));
|
|
||||||
#endif
|
|
||||||
m_ui->readable->setChecked(fileInfo.isReadable());
|
m_ui->readable->setChecked(fileInfo.isReadable());
|
||||||
m_ui->writable->setChecked(fileInfo.isWritable());
|
m_ui->writable->setChecked(fileInfo.isWritable());
|
||||||
m_ui->executable->setChecked(fileInfo.isExecutable());
|
m_ui->executable->setChecked(fileInfo.isExecutable());
|
||||||
|
@@ -323,18 +323,9 @@ bool fileSizeExceedsLimit(const QFileInfo &fileInfo, int sizeLimitInMb)
|
|||||||
"C++ Indexer: Skipping file \"%1\" because it is too big.")
|
"C++ Indexer: Skipping file \"%1\" because it is too big.")
|
||||||
.arg(absoluteFilePath);
|
.arg(absoluteFilePath);
|
||||||
|
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
|
|
||||||
QMetaObject::invokeMethod(Core::MessageManager::instance(), [msg]() {
|
QMetaObject::invokeMethod(Core::MessageManager::instance(), [msg]() {
|
||||||
Core::MessageManager::write(msg, Core::MessageManager::Silent);
|
Core::MessageManager::write(msg, Core::MessageManager::Silent);
|
||||||
});
|
});
|
||||||
#else
|
|
||||||
QMetaObject::invokeMethod(Core::MessageManager::instance(),
|
|
||||||
"write",
|
|
||||||
Qt::QueuedConnection,
|
|
||||||
Q_ARG(QString, msg),
|
|
||||||
Q_ARG(Core::MessageManager::PrintToOutputPaneFlags,
|
|
||||||
Core::MessageManager::Silent));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
qWarning().noquote() << msg;
|
qWarning().noquote() << msg;
|
||||||
return true;
|
return true;
|
||||||
|
@@ -624,15 +624,10 @@ void DebuggerToolTipWidget::computeSize()
|
|||||||
// Add a bit of space to account for tooltip border, and not
|
// Add a bit of space to account for tooltip border, and not
|
||||||
// touch the border of the screen.
|
// touch the border of the screen.
|
||||||
QPoint pos(x(), y());
|
QPoint pos(x(), y());
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
auto screen = QGuiApplication::screenAt(pos);
|
auto screen = QGuiApplication::screenAt(pos);
|
||||||
if (!screen)
|
if (!screen)
|
||||||
screen = QGuiApplication::primaryScreen();
|
screen = QGuiApplication::primaryScreen();
|
||||||
QRect desktopRect = screen->availableGeometry();
|
QRect desktopRect = screen->availableGeometry();
|
||||||
#else
|
|
||||||
QTC_ASSERT(QApplication::desktop(), return);
|
|
||||||
QRect desktopRect = QApplication::desktop()->availableGeometry();
|
|
||||||
#endif
|
|
||||||
const int maxWidth = desktopRect.right() - pos.x() - 5 - 5;
|
const int maxWidth = desktopRect.right() - pos.x() - 5 - 5;
|
||||||
const int maxHeight = desktopRect.bottom() - pos.y() - 5 - 5;
|
const int maxHeight = desktopRect.bottom() - pos.y() - 5 - 5;
|
||||||
|
|
||||||
|
@@ -74,11 +74,7 @@ PerfProfilerTraceView::PerfProfilerTraceView(QWidget *parent, PerfProfilerTool *
|
|||||||
|
|
||||||
bool PerfProfilerTraceView::isUsable() const
|
bool PerfProfilerTraceView::isUsable() const
|
||||||
{
|
{
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
|
|
||||||
return quickWindow()->rendererInterface()->graphicsApi() == QSGRendererInterface::OpenGL;
|
return quickWindow()->rendererInterface()->graphicsApi() == QSGRendererInterface::OpenGL;
|
||||||
#else
|
|
||||||
return true;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PerfProfilerTraceView::selectByTypeId(int typeId)
|
void PerfProfilerTraceView::selectByTypeId(int typeId)
|
||||||
|
@@ -208,9 +208,6 @@ EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetails
|
|||||||
d->m_terminalButton->setText(tr("Open &Terminal"));
|
d->m_terminalButton->setText(tr("Open &Terminal"));
|
||||||
d->m_terminalButton->setToolTip(tr("Open a terminal with this environment set up."));
|
d->m_terminalButton->setToolTip(tr("Open a terminal with this environment set up."));
|
||||||
buttonLayout->addWidget(d->m_terminalButton);
|
buttonLayout->addWidget(d->m_terminalButton);
|
||||||
#if defined(Q_OS_UNIX) && QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
d->m_terminalButton->setVisible(false);
|
|
||||||
#endif
|
|
||||||
buttonLayout->addStretch();
|
buttonLayout->addStretch();
|
||||||
|
|
||||||
horizontalLayout->addLayout(buttonLayout);
|
horizontalLayout->addLayout(buttonLayout);
|
||||||
|
@@ -889,7 +889,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
|
|
||||||
dd->m_openTerminalHereBuildEnv = new QAction(tr("Build Environment"), this);
|
dd->m_openTerminalHereBuildEnv = new QAction(tr("Build Environment"), this);
|
||||||
dd->m_openTerminalHereRunEnv = new QAction(tr("Run Environment"), this);
|
dd->m_openTerminalHereRunEnv = new QAction(tr("Run Environment"), this);
|
||||||
#if !defined(Q_OS_UNIX) || QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
cmd = ActionManager::registerAction(dd->m_openTerminalHereBuildEnv,
|
cmd = ActionManager::registerAction(dd->m_openTerminalHereBuildEnv,
|
||||||
"ProjectExplorer.OpenTerminalHereBuildEnv",
|
"ProjectExplorer.OpenTerminalHereBuildEnv",
|
||||||
projecTreeContext);
|
projecTreeContext);
|
||||||
@@ -899,7 +898,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
"ProjectExplorer.OpenTerminalHereRunEnv",
|
"ProjectExplorer.OpenTerminalHereRunEnv",
|
||||||
projecTreeContext);
|
projecTreeContext);
|
||||||
dd->m_openTerminalMenu->addAction(dd->m_openTerminalHereRunEnv);
|
dd->m_openTerminalMenu->addAction(dd->m_openTerminalHereRunEnv);
|
||||||
#endif
|
|
||||||
|
|
||||||
// Open With menu
|
// Open With menu
|
||||||
mfileContextMenu->addMenu(openWith, Constants::G_FILE_OPEN);
|
mfileContextMenu->addMenu(openWith, Constants::G_FILE_OPEN);
|
||||||
|
@@ -8252,11 +8252,7 @@ void TextEditorWidgetPrivate::updateTabStops()
|
|||||||
// to be set as an int. A work around is to access directly the QTextOption.
|
// to be set as an int. A work around is to access directly the QTextOption.
|
||||||
qreal charWidth = QFontMetricsF(q->font()).width(QLatin1Char(' '));
|
qreal charWidth = QFontMetricsF(q->font()).width(QLatin1Char(' '));
|
||||||
QTextOption option = q->document()->defaultTextOption();
|
QTextOption option = q->document()->defaultTextOption();
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
option.setTabStopDistance(charWidth * m_document->tabSettings().m_tabSize);
|
option.setTabStopDistance(charWidth * m_document->tabSettings().m_tabSize);
|
||||||
#else
|
|
||||||
option.setTabStop(charWidth * m_document->tabSettings().m_tabSize);
|
|
||||||
#endif
|
|
||||||
q->document()->setDefaultTextOption(option);
|
q->document()->setDefaultTextOption(option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -149,38 +149,6 @@ private:
|
|||||||
m_futures.erase(split, m_futures.end());
|
m_futures.erase(split, m_futures.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0)
|
|
||||||
template <typename CallableType>
|
|
||||||
class CallableEvent : public QEvent {
|
|
||||||
public:
|
|
||||||
using Callable = std::decay_t<CallableType>;
|
|
||||||
CallableEvent(Callable &&callable)
|
|
||||||
: QEvent(QEvent::None),
|
|
||||||
callable(std::move(callable))
|
|
||||||
{}
|
|
||||||
CallableEvent(const Callable &callable)
|
|
||||||
: QEvent(QEvent::None),
|
|
||||||
callable(callable)
|
|
||||||
{}
|
|
||||||
|
|
||||||
~CallableEvent()
|
|
||||||
{
|
|
||||||
callable();
|
|
||||||
}
|
|
||||||
public:
|
|
||||||
Callable callable;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <typename Callable>
|
|
||||||
void executeInLoop(Callable &&callable, QObject *object = QCoreApplication::instance()) {
|
|
||||||
if (QThread *thread = qobject_cast<QThread*>(object))
|
|
||||||
object = QAbstractEventDispatcher::instance(thread);
|
|
||||||
|
|
||||||
QCoreApplication::postEvent(object,
|
|
||||||
new CallableEvent<Callable>(std::forward<Callable>(callable)),
|
|
||||||
Qt::HighEventPriority);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
template <typename Callable>
|
template <typename Callable>
|
||||||
void executeInLoop(Callable &&callable, QObject *object = QCoreApplication::instance()) {
|
void executeInLoop(Callable &&callable, QObject *object = QCoreApplication::instance()) {
|
||||||
if (QThread *thread = qobject_cast<QThread*>(object))
|
if (QThread *thread = qobject_cast<QThread*>(object))
|
||||||
@@ -188,7 +156,6 @@ private:
|
|||||||
|
|
||||||
QMetaObject::invokeMethod(object, std::forward<Callable>(callable));
|
QMetaObject::invokeMethod(object, std::forward<Callable>(callable));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Future> m_futures;
|
std::vector<Future> m_futures;
|
||||||
|
Reference in New Issue
Block a user