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 log --cherry-pick --pretty=oneline v4.2.0..v4.2.1
General
* Fixed `Open Command Prompt Here` on Windows (QTCREATORBUG-17439)
Editing
* Fixed that viewport could change unexpectedly when block selection was
active but not visible in viewport (QTCREATORBUG-17475)
Help
* Fixed crash when using drag & drop with bookmarks (QTCREATORBUG-17547)
All Projects
* 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
@@ -25,6 +42,10 @@ Generic Projects
* Fixed that project files were no longer shown in project tree
C++ Support
* Fixed crash that could happen when using `auto` (QTCREATORBUG-16731)
Debugging
* Fixed issue with infinite message boxes being displayed
@@ -43,3 +64,8 @@ iOS
* Fixed that starting applications in simulator could fail, especially with
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
\li Windows
\list
\li Windows Vista
\li Windows 7
\li Windows 8
\li Windows 8.1
\endlist
\li Windows 7 or later
\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
@@ -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}
{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
following:
@@ -109,7 +97,7 @@
\endlist
\li OS X 10.7 or later with the following:
\li \macos 10.8 or later with the following:
\list
@@ -122,9 +110,9 @@
\section2 Developing for Embedded Devices
The development environment supported by Qt for Device Creation is
Ubuntu Linux 64-bit (12.04 LTS or later). For more information about
the requirements for the development host, see the
Either Windows 7 or later or Ubuntu Linux 64-bit 12.04 LTS or later is
required to install and use Qt for Device Creation. For more information
about the requirements for the development host, see the
\l{http://doc.qt.io/QtForDeviceCreation/qtee-installation-guide.html}
{Installation Guide} in the
\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 void setTerminalEmulator(QSettings *settings, const QString &term);
static bool startTerminalEmulator(QSettings *settings, const QString &workingDir);
signals:
void error(QProcess::ProcessError error);
void processError(const QString &errorString);

View File

@@ -395,4 +395,10 @@ QStringList ConsoleProcess::availableTerminalEmulators()
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

View File

@@ -389,4 +389,31 @@ void ConsoleProcess::setSettings(QSettings *settings)
// 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

View File

@@ -31,15 +31,14 @@
#include <coreplugin/iversioncontrol.h>
#include <coreplugin/vcsmanager.h>
#include <utils/consoleprocess.h>
#include <utils/environment.h>
#include <utils/hostosinfo.h>
#include <utils/qtcprocess.h>
#include <utils/unixutils.h>
#include <QApplication>
#include <QDir>
#include <QFileInfo>
#include <QMessageBox>
#include <QProcess>
#include <QPushButton>
#include <QWidget>
@@ -110,27 +109,11 @@ void FileUtils::showInGraphicalShell(QWidget *parent, const QString &pathIn)
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 QString pwd = QDir::toNativeSeparators(fileInfo.isDir() ?
fileInfo.absoluteFilePath() :
fileInfo.absolutePath());
QProcess::startDetached(terminalEmulator, args, pwd);
ConsoleProcess::startTerminalEmulator(ICore::settings(), pwd);
}
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.
QThread::msleep(1000);
} while (!fi.isCanceled() && kill(pid, 0) == 0);
#else
Q_UNUSED(pid);
#endif
// Future is cancelled if the app is stopped from the qt creator.
if (!fi.isCanceled())

View File

@@ -30,10 +30,12 @@
#include "projectexplorersettings.h"
#include "taskhub.h"
#include <utils/hostosinfo.h>
#include <utils/qtcprocess.h>
#include <utils/synchronousprocess.h>
#include <QDir>
#include <QSysInfo>
#include <QTemporaryFile>
#include <QTextCodec>
@@ -271,7 +273,8 @@ bool AbstractMsvcToolChain::generateEnvironmentSettings(const Utils::Environment
call += ' ';
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("@echo " + marker.toLocal8Bit() + "\r\n");
saver.write("set\r\n");

View File

@@ -96,7 +96,7 @@ QString RemoteLinuxSignalOperation::interruptProcessByNameCommandLine(const QStr
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)));
}

View File

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