Merge remote-tracking branch 'origin/4.2'

Change-Id: If7e8fbfeae064c95e412b4cfa4804f7aa732be67
This commit is contained in:
Eike Ziller
2017-01-17 14:03:33 +01:00
11 changed files with 3498 additions and 1796 deletions

26
dist/changes-4.2.1.md vendored
View File

@@ -7,14 +7,31 @@ you can check out from the public Git repository. For example:
git clone git://code.qt.io/qt-creator/qt-creator.git git clone git://code.qt.io/qt-creator/qt-creator.git
git log --cherry-pick --pretty=oneline v4.2.0..v4.2.1 git log --cherry-pick --pretty=oneline v4.2.0..v4.2.1
General
* Fixed `Open Command Prompt Here` on Windows (QTCREATORBUG-17439)
Editing Editing
* Fixed that viewport could change unexpectedly when block selection was * Fixed that viewport could change unexpectedly when block selection was
active but not visible in viewport (QTCREATORBUG-17475) active but not visible in viewport (QTCREATORBUG-17475)
Help
* Fixed crash when using drag & drop with bookmarks (QTCREATORBUG-17547)
All Projects All Projects
* Fixed issue with upgrading tool chain settings in auto-detected kits * Fixed issue with upgrading tool chain settings in auto-detected kits
* Fixed crash when setting custom executable (QTCREATORBUG-17505)
QMake Projects
* Fixed wrong warning about incompatible compilers
* Fixed various issues with run configurations
(QTCREATORBUG-17462, QTCREATORBUG-17477)
* Fixed that `OTHER_FILES` and `DISTFILES` in subdirs projects were no longer
shown in project tree (QTCREATORBUG-17473)
Qbs Projects Qbs Projects
@@ -25,6 +42,10 @@ Generic Projects
* Fixed that project files were no longer shown in project tree * Fixed that project files were no longer shown in project tree
C++ Support
* Fixed crash that could happen when using `auto` (QTCREATORBUG-16731)
Debugging Debugging
* Fixed issue with infinite message boxes being displayed * Fixed issue with infinite message boxes being displayed
@@ -43,3 +64,8 @@ iOS
* Fixed that starting applications in simulator could fail, especially with * Fixed that starting applications in simulator could fail, especially with
iOS 10 devices (QTCREATORBUG-17336) iOS 10 devices (QTCREATORBUG-17336)
Android
* Fixed that password prompt was not shown again after entering invalid
keystore password (QTCREATORBUG-17317)

View File

@@ -47,19 +47,7 @@
\list \list
\li Windows \li Windows 7 or later
\list
\li Windows Vista
\li Windows 7
\li Windows 8
\li Windows 8.1
\endlist
\note Some \QC plugins rely on Direct3D (part of DirectX). You might \note Some \QC plugins rely on Direct3D (part of DirectX). You might
have to manually enable support for it if you are running Windows in a have to manually enable support for it if you are running Windows in a
@@ -69,7 +57,7 @@
\l{http://pubs.vmware.com/workstation-10/index.jsp?topic=%2Fcom.vmware.ws.using.doc%2FGUID-EA588485-718A-4FD8-81F5-B6E1F04C5788.html} \l{http://pubs.vmware.com/workstation-10/index.jsp?topic=%2Fcom.vmware.ws.using.doc%2FGUID-EA588485-718A-4FD8-81F5-B6E1F04C5788.html}
{Prepare the Host System to Use DirectX 9 Accelerated Graphics}. {Prepare the Host System to Use DirectX 9 Accelerated Graphics}.
\li (K)Ubuntu Linux 11.10 (32-bit and 64-bit) or later \li (K)Ubuntu Linux 14.04 (64-bit) or later
To build Qt applications using \QC on Linux, you usually need the To build Qt applications using \QC on Linux, you usually need the
following: following:
@@ -109,7 +97,7 @@
\endlist \endlist
\li OS X 10.7 or later with the following: \li \macos 10.8 or later with the following:
\list \list
@@ -122,9 +110,9 @@
\section2 Developing for Embedded Devices \section2 Developing for Embedded Devices
The development environment supported by Qt for Device Creation is Either Windows 7 or later or Ubuntu Linux 64-bit 12.04 LTS or later is
Ubuntu Linux 64-bit (12.04 LTS or later). For more information about required to install and use Qt for Device Creation. For more information
the requirements for the development host, see the about the requirements for the development host, see the
\l{http://doc.qt.io/QtForDeviceCreation/qtee-installation-guide.html} \l{http://doc.qt.io/QtForDeviceCreation/qtee-installation-guide.html}
{Installation Guide} in the {Installation Guide} in the
\l{http://doc.qt.io/QtForDeviceCreation/index.html}{Qt for Device Creation} \l{http://doc.qt.io/QtForDeviceCreation/index.html}{Qt for Device Creation}

File diff suppressed because it is too large Load Diff

View File

@@ -91,6 +91,8 @@ public:
static QString terminalEmulator(const QSettings *settings, bool nonEmpty = true); static QString terminalEmulator(const QSettings *settings, bool nonEmpty = true);
static void setTerminalEmulator(QSettings *settings, const QString &term); static void setTerminalEmulator(QSettings *settings, const QString &term);
static bool startTerminalEmulator(QSettings *settings, const QString &workingDir);
signals: signals:
void error(QProcess::ProcessError error); void error(QProcess::ProcessError error);
void processError(const QString &errorString); void processError(const QString &errorString);

View File

@@ -395,4 +395,10 @@ QStringList ConsoleProcess::availableTerminalEmulators()
return result; return result;
} }
bool ConsoleProcess::startTerminalEmulator(QSettings *settings, const QString &workingDir)
{
const QString emu = QtcProcess::splitArgs(terminalEmulator(settings)).takeFirst();
return QProcess::startDetached(emu, QStringList(), workingDir);
}
} // namespace Utils } // namespace Utils

View File

@@ -389,4 +389,31 @@ void ConsoleProcess::setSettings(QSettings *settings)
// Not used on Windows // Not used on Windows
} }
bool ConsoleProcess::startTerminalEmulator(QSettings *, const QString &workingDir)
{
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pinfo;
ZeroMemory(&pinfo, sizeof(pinfo));
QString cmdLine = createWinCommandline(
QString::fromLocal8Bit(qgetenv("COMSPEC")), QString());
// cmdLine is assumed to be detached -
// https://blogs.msdn.microsoft.com/oldnewthing/20090601-00/?p=18083
bool success = CreateProcessW(0, (WCHAR *)cmdLine.utf16(),
0, 0, FALSE, CREATE_NEW_CONSOLE,
0, workingDir.isEmpty() ? 0 : (WCHAR *)workingDir.utf16(),
&si, &pinfo);
if (success) {
CloseHandle(pinfo.hThread);
CloseHandle(pinfo.hProcess);
}
return success;
}
} // namespace Utils } // namespace Utils

View File

@@ -31,15 +31,14 @@
#include <coreplugin/iversioncontrol.h> #include <coreplugin/iversioncontrol.h>
#include <coreplugin/vcsmanager.h> #include <coreplugin/vcsmanager.h>
#include <utils/consoleprocess.h> #include <utils/consoleprocess.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcprocess.h>
#include <utils/unixutils.h> #include <utils/unixutils.h>
#include <QApplication> #include <QApplication>
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
#include <QMessageBox> #include <QMessageBox>
#include <QProcess>
#include <QPushButton> #include <QPushButton>
#include <QWidget> #include <QWidget>
@@ -110,27 +109,11 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
void FileUtils::openTerminal(const QString &path) void FileUtils::openTerminal(const QString &path)
{ {
// Get terminal application
QString terminalEmulator;
QStringList args;
const OsType hostOs = HostOsInfo::hostOs();
if (hostOs == OsTypeWindows) {
terminalEmulator = ConsoleProcess::defaultTerminalEmulator();
} else if (hostOs == OsTypeMac) {
terminalEmulator = ICore::resourcePath()
+ QLatin1String("/scripts/openTerminal.command");
} else {
args = QtcProcess::splitArgs(ConsoleProcess::terminalEmulator(ICore::settings()), hostOs);
terminalEmulator = args.takeFirst();
args.append(QString::fromLocal8Bit(qgetenv("SHELL")));
}
// Launch terminal with working directory set.
const QFileInfo fileInfo(path); const QFileInfo fileInfo(path);
const QString pwd = QDir::toNativeSeparators(fileInfo.isDir() ? const QString pwd = QDir::toNativeSeparators(fileInfo.isDir() ?
fileInfo.absoluteFilePath() : fileInfo.absoluteFilePath() :
fileInfo.absolutePath()); fileInfo.absolutePath());
QProcess::startDetached(terminalEmulator, args, pwd); ConsoleProcess::startTerminalEmulator(ICore::settings(), pwd);
} }
QString FileUtils::msgFindInDirectory() QString FileUtils::msgFindInDirectory()

View File

@@ -937,6 +937,8 @@ void IosSimulatorToolHandlerPrivate::launchAppOnSimulator(const QStringList &ext
// Poll every 1 sec to check whether the app is running. // Poll every 1 sec to check whether the app is running.
QThread::msleep(1000); QThread::msleep(1000);
} while (!fi.isCanceled() && kill(pid, 0) == 0); } while (!fi.isCanceled() && kill(pid, 0) == 0);
#else
Q_UNUSED(pid);
#endif #endif
// Future is cancelled if the app is stopped from the qt creator. // Future is cancelled if the app is stopped from the qt creator.
if (!fi.isCanceled()) if (!fi.isCanceled())

View File

@@ -30,10 +30,12 @@
#include "projectexplorersettings.h" #include "projectexplorersettings.h"
#include "taskhub.h" #include "taskhub.h"
#include <utils/hostosinfo.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/synchronousprocess.h> #include <utils/synchronousprocess.h>
#include <QDir> #include <QDir>
#include <QSysInfo>
#include <QTemporaryFile> #include <QTemporaryFile>
#include <QTextCodec> #include <QTextCodec>
@@ -271,7 +273,8 @@ bool AbstractMsvcToolChain::generateEnvironmentSettings(const Utils::Environment
call += ' '; call += ' ';
call += batchArgs.toLocal8Bit(); call += batchArgs.toLocal8Bit();
} }
saver.write("chcp 65001\r\n"); if (Utils::HostOsInfo::isWindowsHost() && QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS7)
saver.write("chcp 65001\r\n"); // Only works for Windows 7 or later
saver.write(call + "\r\n"); saver.write(call + "\r\n");
saver.write("@echo " + marker.toLocal8Bit() + "\r\n"); saver.write("@echo " + marker.toLocal8Bit() + "\r\n");
saver.write("set\r\n"); saver.write("set\r\n");

View File

@@ -96,7 +96,7 @@ QString RemoteLinuxSignalOperation::interruptProcessByNameCommandLine(const QStr
void RemoteLinuxSignalOperation::killProcess(qint64 pid) void RemoteLinuxSignalOperation::killProcess(qint64 pid)
{ {
run(QString::fromLatin1("%1; %2").arg(signalProcessByPidCommandLine(pid, 15), run(QString::fromLatin1("%1; sleep 1; %2").arg(signalProcessByPidCommandLine(pid, 15),
signalProcessByPidCommandLine(pid, 9))); signalProcessByPidCommandLine(pid, 9)));
} }

View File

@@ -136,7 +136,7 @@ void SemanticHighlighter::clearExtraAdditionalFormatsUntilEnd(
QTextDocument *doc = highlighter->document(); QTextDocument *doc = highlighter->document();
const int firstBlockToClear = lastBlockNumber + 1; const int firstBlockToClear = lastBlockNumber + 1;
if (firstBlockToClear <= doc->blockCount()) if (firstBlockToClear >= doc->blockCount())
return; return;
QTextBlock b = doc->findBlockByNumber(firstBlockToClear); QTextBlock b = doc->findBlockByNumber(firstBlockToClear);