Merge remote-tracking branch 'origin/4.0'

Conflicts:
	qtcreator.pri
	qtcreator.qbs

Change-Id: I0cbc9d335073e3234f472aa43f462eef9a9178aa
This commit is contained in:
Eike Ziller
2016-04-22 15:13:58 +02:00
83 changed files with 417 additions and 182 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -55,7 +55,8 @@
\li Select \uicontrol Debug > \uicontrol {Start Debugging} > \li Select \uicontrol Debug > \uicontrol {Start Debugging} >
\uicontrol {Start Debugging} or press \key F5. \uicontrol {Start Debugging} or press \key F5.
\li To view the breakpoint, click the \uicontrol Breakpoints tab. \li To view information about the breakpoint, go to the
\uicontrol Breakpoints view.
\image qtcreator-setting-breakpoint2.png \image qtcreator-setting-breakpoint2.png

View File

@@ -62,8 +62,7 @@
\note To use the debugging tools for Windows, you must install them and add \note To use the debugging tools for Windows, you must install them and add
the Symbol Server provided by Microsoft to the symbol search path of the the Symbol Server provided by Microsoft to the symbol search path of the
debugger. For more information, see \l{Setting the Symbol Server in debugger. For more information, see \l{Setting CDB Paths on Windows}.
Windows}.
\note To use the Free Software Foundation (FSF) version of GDB on OS X, you \note To use the Free Software Foundation (FSF) version of GDB on OS X, you
must sign it and modify your \l{glossary-buildandrun-kit}{kit} settings. must sign it and modify your \l{glossary-buildandrun-kit}{kit} settings.
@@ -209,7 +208,7 @@
Symbol Server provides you with debugging informaton for the Symbol Server provides you with debugging informaton for the
operating system libraries for debugging Windows applications. operating system libraries for debugging Windows applications.
For more information, see For more information, see
\l{Setting the Symbol Server in Windows}. \l{Setting CDB Paths on Windows}.
\row \row
\li Debugging tools for OS X \li Debugging tools for OS X
@@ -252,7 +251,7 @@
\endlist \endlist
\section1 Setting the Symbol Server in Windows \section1 Setting CDB Paths on Windows
To obtain debugging information for the operating system libraries for To obtain debugging information for the operating system libraries for
debugging Windows applications, add the Symbol Server provided by Microsoft debugging Windows applications, add the Symbol Server provided by Microsoft
@@ -261,24 +260,27 @@
\list 1 \list 1
\li Select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger >
\uicontrol CDB. \uicontrol {CDB Paths}.
\li In the \uicontrol {Symbol paths} field, open the \uicontrol Insert \image qtcreator-debugger-cdb-paths.png
menu and select \uicontrol{Symbol Server}.
\li Select a directory where you want to store the cached information \li In the \uicontrol {Symbol Paths} group, select \uicontrol Insert.
and click \uicontrol OK.
\li Select the directory where you want to store the cached information.
Use a subfolder in a temporary directory, such as Use a subfolder in a temporary directory, such as
\c {C:\temp\symbolcache}. \c {C:\temp\symbolcache}.
\li Select \uicontrol OK.
\endlist \endlist
\note Populating the cache might take a long time on a slow network \note Populating the cache might take a long time on a slow network
connection. connection.
\note The first time you start debugging by using the Debugging tools for To use the Source Server infrastructure for fetching missing source files
Windows, \QC prompts you to add the Symbol Server. directly from version control or the web, enter the following string in
the \uicontrol {Source Paths} field: \c srv*.
\section1 Setting up FSF GDB for OS X \section1 Setting up FSF GDB for OS X

View File

@@ -684,7 +684,7 @@
\li \b{Note:} \li \b{Note:}
\row \row
\li GDB and LLDB, and therefore \QC's debugger, work for optimized \li GDB and LLDB, and therefore \QC's debugger, also work for optimized
builds on Linux and OS X. Optimization can lead to re-ordering builds on Linux and OS X. Optimization can lead to re-ordering
of instructions or removal of some local variables, causing the of instructions or removal of some local variables, causing the
\uicontrol {Locals and Expressions} view to show unexpected \uicontrol {Locals and Expressions} view to show unexpected

View File

@@ -49,7 +49,7 @@
\section1 Adding CMake Tools \section1 Adding CMake Tools
\QC supports CMake version 2.9, or later. \QC supports CMake version 3.0, or later.
To specify paths to CMake executables and to add them to kits: To specify paths to CMake executables and to add them to kits:

View File

@@ -1040,13 +1040,13 @@ class Dumper(DumperBase):
# Works: # Works:
#item = self.currentThread().GetSelectedFrame().EvaluateExpression( #item = self.currentThread().GetSelectedFrame().EvaluateExpression(
# "(%s*)0x%x" % (type, addr)).Dereference() # "(%s*)0x%x" % (type, addr)).Dereference()
# Works: # Does not work on lldb-350.0.21.3:
item = value.CreateValueFromExpression(None, #item = value.CreateValueFromExpression(None,
"(%s*)0x%x" % (type, addr), lldb.SBExpressionOptions()).Dereference() # "(%s*)0x%x" % (type, addr), lldb.SBExpressionOptions()).Dereference()
# Does not work: # Does not work:
#item = value.CreateValueFromAddress(None, addr, type) #item = value.CreateValueFromAddress(None, addr, type)
# Does not work: # Works:
#item = value.Cast(type.GetPointerType()).Dereference() item = value.Cast(type.GetPointerType()).Dereference()
#warn("TOOO: %s" % item) #warn("TOOO: %s" % item)
self.putItem(item) self.putItem(item)
self.putBetterType(value.GetTypeName()) self.putBetterType(value.GetTypeName())

View File

@@ -2192,6 +2192,13 @@ def qdump__QVariant(d, value):
return innert return innert
# Do not handle user types. The workaround below works, sometimes
# for inialized data, but can force loading all debug information
# and trigger parse errors "error: need to add support for
# DW_TAG_base_type 'auto' encoded with DW_ATE = 0x0, bit_size = 0"
# (LLDB 3.7/Linux)
if d.isLldb and platform.system() == "Linux":
return None
# User types. # User types.
d_ptr = value["d"] d_ptr = value["d"]

View File

@@ -1050,7 +1050,7 @@ InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand
static bool supportedVariantType(int type) static bool supportedVariantType(int type)
{ {
return type < int(QVariant::UserType) && type != QMetaType::QObjectStar return type < int(QVariant::UserType) && type != QMetaType::QObjectStar
&& type != QMetaType::QModelIndex; && type != QMetaType::QModelIndex && type != QMetaType::VoidStar;
} }
ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList<ServerNodeInstance> &instanceList) const ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList<ServerNodeInstance> &instanceList) const

View File

@@ -53,6 +53,7 @@
#include <designersupportdelegate.h> #include <designersupportdelegate.h>
#include <cstring>
namespace QmlDesigner { namespace QmlDesigner {
@@ -199,7 +200,7 @@ static void allSubObject(QObject *object, QObjectList &objectList)
if (metaProperty.isReadable() if (metaProperty.isReadable()
&& metaProperty.isWritable() && metaProperty.isWritable()
&& QQmlMetaType::isQObject(metaProperty.userType())) { && QQmlMetaType::isQObject(metaProperty.userType())) {
if (metaProperty.name() != "parent") { if (strcmp(metaProperty.name(), "parent") != 0) {
QObject *propertyObject = QQmlMetaType::toQObject(metaProperty.read(object)); QObject *propertyObject = QQmlMetaType::toQObject(metaProperty.read(object));
allSubObject(propertyObject, objectList); allSubObject(propertyObject, objectList);
} }

View File

@@ -58,9 +58,12 @@ IconsWarningToolBarColor=ffe0b716
IconsErrorColor=ffd84044 IconsErrorColor=ffd84044
IconsErrorToolBarColor=ffd84044 IconsErrorToolBarColor=ffd84044
IconsRunColor=ff7fc341 IconsRunColor=ff7fc341
IconsRunToolBarColor=ff7fc341
IconsStopColor=ffe7353b IconsStopColor=ffe7353b
IconsDebugColor=ffb8c6ff IconsStopToolBarColor=ffe7353b
IconsInterruptColor=ff7488db IconsInterruptColor=ff7488db
IconsInterruptToolBarColor=ff7488db
IconsDebugColor=ffb8c6ff
IconsNavigationArrowsColor=ffebc322 IconsNavigationArrowsColor=ffebc322
IconsBuildHammerHandleColor=ffdd7710 IconsBuildHammerHandleColor=ffdd7710
IconsBuildHammerHeadColor=ff989898 IconsBuildHammerHeadColor=ff989898

View File

@@ -51,10 +51,13 @@ IconsWarningColor=ffecbc1c
IconsWarningToolBarColor=fff2d76e IconsWarningToolBarColor=fff2d76e
IconsErrorColor=ffdf4f4f IconsErrorColor=ffdf4f4f
IconsErrorToolBarColor=ffdb6f71 IconsErrorToolBarColor=ffdb6f71
IconsRunColor=ffa4d576 IconsRunColor=ff6da838
IconsStopColor=ffff8c8c IconsRunToolBarColor=ffa4d576
IconsStopColor=ffee6969
IconsStopToolBarColor=ffff8c8c
IconsInterruptColor=ff587ff7
IconsInterruptToolBarColor=ff8f9dda
IconsDebugColor=ffdcdcdc IconsDebugColor=ffdcdcdc
IconsInterruptColor=ff8f9dda
IconsNavigationArrowsColor=ffebc322 IconsNavigationArrowsColor=ffebc322
IconsBuildHammerHandleColor=ffdd7710 IconsBuildHammerHandleColor=ffdd7710
IconsBuildHammerHeadColor=ff989898 IconsBuildHammerHeadColor=ff989898

View File

@@ -61,10 +61,13 @@ IconsWarningColor=ffecbc1c
IconsWarningToolBarColor=fff2d76e IconsWarningToolBarColor=fff2d76e
IconsErrorColor=ffdf4f4f IconsErrorColor=ffdf4f4f
IconsErrorToolBarColor=ffdb6f71 IconsErrorToolBarColor=ffdb6f71
IconsRunColor=ff93be6c IconsRunColor=ff6da838
IconsStopColor=ffe27f7f IconsRunToolBarColor=ff93be6c
IconsStopColor=ffee6969
IconsStopToolBarColor=ffe27f7f
IconsInterruptColor=ff587ff7
IconsInterruptToolBarColor=ff6a7bc3
IconsDebugColor=toolBarItem IconsDebugColor=toolBarItem
IconsInterruptColor=ff6a7bc3
IconsNavigationArrowsColor=ffebc322 IconsNavigationArrowsColor=ffebc322
IconsBuildHammerHandleColor=ffc26b14 IconsBuildHammerHandleColor=ffc26b14
IconsBuildHammerHeadColor=ff868687 IconsBuildHammerHeadColor=ff868687

View File

@@ -162,13 +162,25 @@ class Parser::ASTCache
public: public:
enum ASTKind { enum ASTKind {
Declaration,
Expression, Expression,
ExpressionList, ExpressionList,
MemberSpecification,
ParameterDeclarationClause, ParameterDeclarationClause,
TemplateId, TemplateId,
TypeId TypeId
}; };
struct CacheKey {
CacheKey(unsigned initialCursor, ASTKind astKind)
: initialCursor(initialCursor)
, astKind(astKind)
{}
const unsigned initialCursor;
const ASTKind astKind;
};
public: public:
ASTCache() {} ASTCache() {}
@@ -255,6 +267,17 @@ inline void debugPrintCheckCache(bool) {}
} \ } \
} while (0) } while (0)
#define CACHE_AND_RETURN(cacheKey, expression) \
do { \
const bool result = expression; \
_astCache->insert(cacheKey.astKind, \
cacheKey.initialCursor, \
result ? node : 0, \
cursor(), \
result); \
return result; \
} while (0)
#define PARSE_EXPRESSION_WITH_OPERATOR_PRECEDENCE(node, minPrecedence) { \ #define PARSE_EXPRESSION_WITH_OPERATOR_PRECEDENCE(node, minPrecedence) { \
if (LA() == T_THROW) { \ if (LA() == T_THROW) { \
if (!parseThrowExpression(node)) \ if (!parseThrowExpression(node)) \
@@ -2480,6 +2503,9 @@ bool Parser::parseQtInterfaces(DeclarationAST *&node)
bool Parser::parseMemberSpecification(DeclarationAST *&node, ClassSpecifierAST *declaringClass) bool Parser::parseMemberSpecification(DeclarationAST *&node, ClassSpecifierAST *declaringClass)
{ {
DEBUG_THIS_RULE(); DEBUG_THIS_RULE();
const ASTCache::CacheKey cacheKey(cursor(), ASTCache::MemberSpecification);
CHECK_CACHE(cacheKey.astKind, DeclarationAST);
switch (LA()) { switch (LA()) {
case T_Q_OBJECT: case T_Q_OBJECT:
case T_Q_GADGET: case T_Q_GADGET:
@@ -2487,7 +2513,7 @@ bool Parser::parseMemberSpecification(DeclarationAST *&node, ClassSpecifierAST *
QtObjectTagAST *ast = new (_pool) QtObjectTagAST; QtObjectTagAST *ast = new (_pool) QtObjectTagAST;
ast->q_object_token = consumeToken(); ast->q_object_token = consumeToken();
node = ast; node = ast;
return true; CACHE_AND_RETURN(cacheKey, true);
} }
case T_Q_PRIVATE_SLOT: case T_Q_PRIVATE_SLOT:
@@ -2505,44 +2531,44 @@ bool Parser::parseMemberSpecification(DeclarationAST *&node, ClassSpecifierAST *
parseDeclarator(ast->declarator, ast->type_specifier_list); parseDeclarator(ast->declarator, ast->type_specifier_list);
match(T_RPAREN, &ast->rparen_token); match(T_RPAREN, &ast->rparen_token);
node = ast; node = ast;
} return true; } CACHE_AND_RETURN(cacheKey, true);
case T_SEMICOLON: case T_SEMICOLON:
return parseEmptyDeclaration(node); CACHE_AND_RETURN(cacheKey, parseEmptyDeclaration(node));
case T_USING: case T_USING:
return parseUsing(node); CACHE_AND_RETURN(cacheKey, parseUsing(node));
case T_TEMPLATE: case T_TEMPLATE:
return parseTemplateDeclaration(node); CACHE_AND_RETURN(cacheKey, parseTemplateDeclaration(node));
case T_Q_SIGNALS: case T_Q_SIGNALS:
case T_PUBLIC: case T_PUBLIC:
case T_PROTECTED: case T_PROTECTED:
case T_PRIVATE: case T_PRIVATE:
case T_Q_SLOTS: case T_Q_SLOTS:
return parseAccessDeclaration(node); CACHE_AND_RETURN(cacheKey, parseAccessDeclaration(node));
case T_Q_PROPERTY: case T_Q_PROPERTY:
case T_Q_PRIVATE_PROPERTY: case T_Q_PRIVATE_PROPERTY:
return parseQtPropertyDeclaration(node); CACHE_AND_RETURN(cacheKey, parseQtPropertyDeclaration(node));
case T_Q_ENUMS: case T_Q_ENUMS:
return parseQtEnumDeclaration(node); CACHE_AND_RETURN(cacheKey, parseQtEnumDeclaration(node));
case T_Q_FLAGS: case T_Q_FLAGS:
return parseQtFlags(node); CACHE_AND_RETURN(cacheKey, parseQtFlags(node));
case T_Q_INTERFACES: case T_Q_INTERFACES:
return parseQtInterfaces(node); CACHE_AND_RETURN(cacheKey, parseQtInterfaces(node));
case T_STATIC_ASSERT: case T_STATIC_ASSERT:
if (_languageFeatures.cxx11Enabled) if (_languageFeatures.cxx11Enabled)
return parseStaticAssertDeclaration(node); CACHE_AND_RETURN(cacheKey, parseStaticAssertDeclaration(node));
// fall-through // fall-through
default: default:
return parseSimpleDeclaration(node, declaringClass); CACHE_AND_RETURN(cacheKey, parseSimpleDeclaration(node, declaringClass));
} // switch } // switch
} }
@@ -4074,6 +4100,9 @@ bool Parser::parseBuiltinTypeSpecifier(SpecifierListAST *&node)
bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *declaringClass) bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *declaringClass)
{ {
DEBUG_THIS_RULE(); DEBUG_THIS_RULE();
const ASTCache::CacheKey cacheKey(cursor(), ASTCache::Declaration);
CHECK_CACHE(cacheKey.astKind, DeclarationAST);
unsigned qt_invokable_token = 0; unsigned qt_invokable_token = 0;
if (declaringClass && (LA() == T_Q_SIGNAL || LA() == T_Q_SLOT || LA() == T_Q_INVOKABLE)) if (declaringClass && (LA() == T_Q_SIGNAL || LA() == T_Q_SLOT || LA() == T_Q_INVOKABLE))
qt_invokable_token = consumeToken(); qt_invokable_token = consumeToken();
@@ -4188,7 +4217,7 @@ bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *de
} }
} }
if (! parseInitDeclarator(declarator, decl_specifier_seq, declaringClass)) if (! parseInitDeclarator(declarator, decl_specifier_seq, declaringClass))
return false; CACHE_AND_RETURN(cacheKey, false);
} }
} }
@@ -4196,7 +4225,7 @@ bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *de
// and it doesn't look like a fwd or a class declaration // and it doesn't look like a fwd or a class declaration
// then it's not a declarations // then it's not a declarations
if (! declarator && ! maybeForwardOrClassDeclaration(decl_specifier_seq)) if (! declarator && ! maybeForwardOrClassDeclaration(decl_specifier_seq))
return false; CACHE_AND_RETURN(cacheKey, false);
DeclaratorAST *firstDeclarator = declarator; DeclaratorAST *firstDeclarator = declarator;
@@ -4223,7 +4252,7 @@ bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *de
ast->declarator_list = declarator_list; ast->declarator_list = declarator_list;
match(T_SEMICOLON, &ast->semicolon_token); match(T_SEMICOLON, &ast->semicolon_token);
node = ast; node = ast;
return true; CACHE_AND_RETURN(cacheKey, true);
} else if (! _inFunctionBody && declarator && (LA() == T_COLON || LA() == T_LBRACE || LA() == T_TRY)) { } else if (! _inFunctionBody && declarator && (LA() == T_COLON || LA() == T_LBRACE || LA() == T_TRY)) {
if (LA() == T_TRY) { if (LA() == T_TRY) {
FunctionDefinitionAST *ast = new (_pool) FunctionDefinitionAST; FunctionDefinitionAST *ast = new (_pool) FunctionDefinitionAST;
@@ -4232,7 +4261,7 @@ bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *de
ast->declarator = firstDeclarator; ast->declarator = firstDeclarator;
parseTryBlockStatement(ast->function_body, &ast->ctor_initializer); parseTryBlockStatement(ast->function_body, &ast->ctor_initializer);
node = ast; node = ast;
return true; // recognized a function definition. CACHE_AND_RETURN(cacheKey, true); // recognized a function definition.
} else { } else {
CtorInitializerAST *ctor_initializer = 0; CtorInitializerAST *ctor_initializer = 0;
bool hasCtorInitializer = false; bool hasCtorInitializer = false;
@@ -4263,13 +4292,13 @@ bool Parser::parseSimpleDeclaration(DeclarationAST *&node, ClassSpecifierAST *de
ast->ctor_initializer = ctor_initializer; ast->ctor_initializer = ctor_initializer;
parseFunctionBody(ast->function_body); parseFunctionBody(ast->function_body);
node = ast; node = ast;
return true; // recognized a function definition. CACHE_AND_RETURN(cacheKey, true); // recognized a function definition.
} }
} }
} }
error(cursor(), "unexpected token `%s'", tok().spell()); error(cursor(), "unexpected token `%s'", tok().spell());
return false; CACHE_AND_RETURN(cacheKey, false);
} }
bool Parser::maybeForwardOrClassDeclaration(SpecifierListAST *decl_specifier_seq) const bool Parser::maybeForwardOrClassDeclaration(SpecifierListAST *decl_specifier_seq) const

View File

@@ -91,7 +91,7 @@ static const QIcon &icon(IconIndex icon)
case OkIcon: { case OkIcon: {
static const QIcon ok = static const QIcon ok =
Icon({{QLatin1String(":/extensionsystem/images/ok.png"), Icon({{QLatin1String(":/extensionsystem/images/ok.png"),
Theme::IconsRunColor}}, Icon::Tint).icon(); Theme::IconsRunToolBarColor}}, Icon::Tint).icon();
return ok; return ok;
} }
case ErrorIcon: { case ErrorIcon: {

View File

@@ -183,12 +183,15 @@ QIcon Icon::icon() const
return QIcon(combinedPlainPixmaps(*this)); return QIcon(combinedPlainPixmaps(*this));
} else { } else {
QIcon result; QIcon result;
const MasksAndColors masks = masksAndColors(*this, qRound(qApp->devicePixelRatio())); const int maxDpr = qRound(qApp->devicePixelRatio());
const QPixmap combinedMask = Utils::combinedMask(masks, m_style); for (int dpr = 1; dpr <= maxDpr; dpr++) {
result.addPixmap(masksToIcon(masks, combinedMask, m_style)); const MasksAndColors masks = masksAndColors(*this, dpr);
const QPixmap combinedMask = Utils::combinedMask(masks, m_style);
result.addPixmap(masksToIcon(masks, combinedMask, m_style));
const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor); const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor);
result.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled); result.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled);
}
return result; return result;
} }
} }

View File

@@ -51,7 +51,8 @@ public:
DropShadow = 2, DropShadow = 2,
PunchEdges = 4, PunchEdges = 4,
ToolBarStyle = Tint | DropShadow | PunchEdges ToolBarStyle = Tint | DropShadow | PunchEdges,
MenuTintedStyle = Tint | PunchEdges
}; };
Q_DECLARE_FLAGS(IconStyleOptions, IconStyleOption) Q_DECLARE_FLAGS(IconStyleOptions, IconStyleOption)

View File

@@ -136,8 +136,11 @@ public:
IconsErrorColor, IconsErrorColor,
IconsErrorToolBarColor, IconsErrorToolBarColor,
IconsRunColor, IconsRunColor,
IconsRunToolBarColor,
IconsStopColor, IconsStopColor,
IconsStopToolBarColor,
IconsInterruptColor, IconsInterruptColor,
IconsInterruptToolBarColor,
IconsDebugColor, IconsDebugColor,
IconsNavigationArrowsColor, IconsNavigationArrowsColor,
IconsBuildHammerHandleColor, IconsBuildHammerHandleColor,

View File

@@ -44,7 +44,7 @@ AndroidRunControl::AndroidRunControl(AndroidRunConfiguration *rc)
, m_running(false) , m_running(false)
{ {
setRunnable(m_runner->runnable()); setRunnable(m_runner->runnable());
setIcon(Core::Icons::RUN_SMALL); setIcon(Core::Icons::RUN_SMALL_TOOLBAR);
} }
AndroidRunControl::~AndroidRunControl() AndroidRunControl::~AndroidRunControl()

View File

@@ -288,6 +288,9 @@ static QString testClass(const CppTools::CppModelManager *modelManager, const QS
{ {
const QByteArray &fileContent = getFileContent(fileName); const QByteArray &fileContent = getFileContent(fileName);
CPlusPlus::Document::Ptr document = modelManager->document(fileName); CPlusPlus::Document::Ptr document = modelManager->document(fileName);
if (document.isNull())
return QString();
const QList<CPlusPlus::Document::MacroUse> macros = document->macroUses(); const QList<CPlusPlus::Document::MacroUse> macros = document->macroUses();
foreach (const CPlusPlus::Document::MacroUse &macro, macros) { foreach (const CPlusPlus::Document::MacroUse &macro, macros) {
@@ -604,6 +607,8 @@ static void performParse(QFutureInterface<TestParseResult> &futureInterface,
QmlJS::Snapshot qmlSnapshot = QmlJSTools::Internal::ModelManager::instance()->snapshot(); QmlJS::Snapshot qmlSnapshot = QmlJSTools::Internal::ModelManager::instance()->snapshot();
foreach (const QString &file, list) { foreach (const QString &file, list) {
if (futureInterface.isCanceled())
return;
if (file.endsWith(QLatin1String(".qml"))) { if (file.endsWith(QLatin1String(".qml"))) {
checkQmlDocumentForTestCode(futureInterface, qmlSnapshot.document(file)); checkQmlDocumentForTestCode(futureInterface, qmlSnapshot.document(file));
} else if (snapshot.contains(file)) { } else if (snapshot.contains(file)) {
@@ -693,6 +698,7 @@ bool TestCodeParser::postponed(const QStringList &fileList)
m_partialUpdatePostponed = false; m_partialUpdatePostponed = false;
m_postponedFiles.clear(); m_postponedFiles.clear();
m_fullUpdatePostponed = true; m_fullUpdatePostponed = true;
Core::ProgressManager::instance()->cancelTasks(Constants::TASK_PARSE);
} else { } else {
// partial parse triggered, but full parse is postponed already, ignoring this // partial parse triggered, but full parse is postponed already, ignoring this
if (m_fullUpdatePostponed) if (m_fullUpdatePostponed)

View File

@@ -158,13 +158,13 @@ void TestResultsPane::createToolButtons()
}); });
m_runAll = new QToolButton(m_treeView); m_runAll = new QToolButton(m_treeView);
m_runAll->setIcon(Core::Icons::RUN_SMALL.icon()); m_runAll->setIcon(Core::Icons::RUN_SMALL_TOOLBAR.icon());
m_runAll->setToolTip(tr("Run All Tests")); m_runAll->setToolTip(tr("Run All Tests"));
m_runAll->setEnabled(false); m_runAll->setEnabled(false);
connect(m_runAll, &QToolButton::clicked, this, &TestResultsPane::onRunAllTriggered); connect(m_runAll, &QToolButton::clicked, this, &TestResultsPane::onRunAllTriggered);
m_runSelected = new QToolButton(m_treeView); m_runSelected = new QToolButton(m_treeView);
Utils::Icon runSelectedIcon = Core::Icons::RUN_SMALL; Utils::Icon runSelectedIcon = Core::Icons::RUN_SMALL_TOOLBAR;
foreach (const Utils::IconMaskAndColor &maskAndColor, Icons::RUN_SELECTED_OVERLAY) foreach (const Utils::IconMaskAndColor &maskAndColor, Icons::RUN_SELECTED_OVERLAY)
runSelectedIcon.append(maskAndColor); runSelectedIcon.append(maskAndColor);
m_runSelected->setIcon(runSelectedIcon.icon()); m_runSelected->setIcon(runSelectedIcon.icon());
@@ -173,7 +173,7 @@ void TestResultsPane::createToolButtons()
connect(m_runSelected, &QToolButton::clicked, this, &TestResultsPane::onRunSelectedTriggered); connect(m_runSelected, &QToolButton::clicked, this, &TestResultsPane::onRunSelectedTriggered);
m_stopTestRun = new QToolButton(m_treeView); m_stopTestRun = new QToolButton(m_treeView);
m_stopTestRun->setIcon(Core::Icons::STOP_SMALL.icon()); m_stopTestRun->setIcon(Core::Icons::STOP_SMALL_TOOLBAR.icon());
m_stopTestRun->setToolTip(tr("Stop Test Run")); m_stopTestRun->setToolTip(tr("Stop Test Run"));
m_stopTestRun->setEnabled(false); m_stopTestRun->setEnabled(false);
connect(m_stopTestRun, &QToolButton::clicked, TestRunner::instance(), &TestRunner::requestStopTestRun); connect(m_stopTestRun, &QToolButton::clicked, TestRunner::instance(), &TestRunner::requestStopTestRun);

View File

@@ -101,6 +101,7 @@ ClangCompletionContextAnalyzer::analyzeFunctionCall(int endOfOperator) const
ExpressionUnderCursor euc(m_languageFeatures); ExpressionUnderCursor euc(m_languageFeatures);
index = euc.startOfFunctionCall(textCursor); index = euc.startOfFunctionCall(textCursor);
index = ActivationSequenceContextProcessor::skipPrecedingWhitespace(m_interface, index);
const int functionNameStart = ActivationSequenceContextProcessor::findStartOfName(m_interface, const int functionNameStart = ActivationSequenceContextProcessor::findStartOfName(m_interface,
index); index);
@@ -159,9 +160,14 @@ void ClangCompletionContextAnalyzer::handleFunctionCall(int afterOperatorPositio
setActionAndClangPosition(PassThroughToLibClang, afterOperatorPosition); setActionAndClangPosition(PassThroughToLibClang, afterOperatorPosition);
} else { } else {
const FunctionInfo functionInfo = analyzeFunctionCall(afterOperatorPosition); const FunctionInfo functionInfo = analyzeFunctionCall(afterOperatorPosition);
m_functionName = functionInfo.functionName; if (functionInfo.isValid()) {
setActionAndClangPosition(PassThroughToLibClangAfterLeftParen, m_functionName = functionInfo.functionName;
functionInfo.functionNamePosition); setActionAndClangPosition(PassThroughToLibClangAfterLeftParen,
functionInfo.functionNamePosition);
} else {
m_positionForProposal = afterOperatorPosition;
setActionAndClangPosition(PassThroughToLibClang, afterOperatorPosition);
}
} }
} }
} }

View File

@@ -63,7 +63,12 @@ public:
private: private:
ClangCompletionContextAnalyzer(); ClangCompletionContextAnalyzer();
struct FunctionInfo { int functionNamePosition; QString functionName; }; struct FunctionInfo {
bool isValid() const { return functionNamePosition != -1 && !functionName.isEmpty(); }
int functionNamePosition = -1;
QString functionName;
};
FunctionInfo analyzeFunctionCall(int endOfExpression) const; FunctionInfo analyzeFunctionCall(int endOfExpression) const;
void setActionAndClangPosition(CompletionAction action, int position); void setActionAndClangPosition(CompletionAction action, int position);

View File

@@ -75,6 +75,7 @@ ClangStaticAnalyzerRunControl::ClangStaticAnalyzerRunControl(
, m_filesAnalyzed(0) , m_filesAnalyzed(0)
, m_filesNotAnalyzed(0) , m_filesNotAnalyzed(0)
{ {
setDisplayName(tr("Clang Static Analyzer"));
Target *target = runConfiguration->target(); Target *target = runConfiguration->target();
BuildConfiguration *buildConfiguration = target->activeBuildConfiguration(); BuildConfiguration *buildConfiguration = target->activeBuildConfiguration();
QTC_ASSERT(buildConfiguration, return); QTC_ASSERT(buildConfiguration, return);
@@ -82,7 +83,7 @@ ClangStaticAnalyzerRunControl::ClangStaticAnalyzerRunControl(
ToolChain *toolChain = ToolChainKitInformation::toolChain(target->kit()); ToolChain *toolChain = ToolChainKitInformation::toolChain(target->kit());
QTC_ASSERT(toolChain, return); QTC_ASSERT(toolChain, return);
m_extraToolChainInfo.wordWidth = runConfiguration->abi().wordWidth(); m_extraToolChainInfo.wordWidth = toolChain->targetAbi().wordWidth();
m_extraToolChainInfo.targetTriple = toolChain->originalTargetTriple(); m_extraToolChainInfo.targetTriple = toolChain->originalTargetTriple();
} }

View File

@@ -60,6 +60,22 @@ using namespace Utils;
namespace ClangStaticAnalyzer { namespace ClangStaticAnalyzer {
namespace Internal { namespace Internal {
class DummyRunConfiguration : public RunConfiguration
{
Q_OBJECT
public:
DummyRunConfiguration(Target *parent)
: RunConfiguration(parent, "ClangStaticAnalyzer.DummyRunConfig")
{
setDefaultDisplayName(tr("Clang Static Analyzer"));
addExtraAspects();
}
private:
QWidget *createConfigurationWidget() override { return 0; }
};
ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent) ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
: QObject(parent) : QObject(parent)
, m_diagnosticModel(0) , m_diagnosticModel(0)
@@ -107,7 +123,7 @@ ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
// Go to previous diagnostic // Go to previous diagnostic
auto action = new QAction(this); auto action = new QAction(this);
action->setDisabled(true); action->setDisabled(true);
action->setIcon(Core::Icons::PREV.icon()); action->setIcon(Core::Icons::PREV_TOOLBAR.icon());
action->setToolTip(tr("Go to previous bug.")); action->setToolTip(tr("Go to previous bug."));
connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goBack); connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goBack);
m_goBack = action; m_goBack = action;
@@ -115,7 +131,7 @@ ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
// Go to next diagnostic // Go to next diagnostic
action = new QAction(this); action = new QAction(this);
action->setDisabled(true); action->setDisabled(true);
action->setIcon(Core::Icons::NEXT.icon()); action->setIcon(Core::Icons::NEXT_TOOLBAR.icon());
action->setToolTip(tr("Go to next bug.")); action->setToolTip(tr("Go to next bug."));
connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goNext); connect(action, &QAction::triggered, m_diagnosticView, &DetailedErrorView::goNext);
m_goNext = action; m_goNext = action;
@@ -137,7 +153,8 @@ ClangStaticAnalyzerTool::ClangStaticAnalyzerTool(QObject *parent)
return createRunControl(runConfiguration, runMode); return createRunControl(runConfiguration, runMode);
}); });
desc.setCustomToolStarter([this](RunConfiguration *runConfiguration) { desc.setCustomToolStarter([this](RunConfiguration *runConfiguration) {
startTool(runConfiguration); Q_UNUSED(runConfiguration);
startTool();
}); });
desc.setMenuGroup(Debugger::Constants::G_ANALYZER_TOOLS); desc.setMenuGroup(Debugger::Constants::G_ANALYZER_TOOLS);
Debugger::registerAction(ClangStaticAnalyzerActionId, desc, m_startAction); Debugger::registerAction(ClangStaticAnalyzerActionId, desc, m_startAction);
@@ -220,7 +237,7 @@ static bool dontStartAfterHintForDebugMode(Project *project)
return false; return false;
} }
void ClangStaticAnalyzerTool::startTool(ProjectExplorer::RunConfiguration *runConfiguration) void ClangStaticAnalyzerTool::startTool()
{ {
Project *project = SessionManager::startupProject(); Project *project = SessionManager::startupProject();
QTC_ASSERT(project, emit finished(false); return); QTC_ASSERT(project, emit finished(false); return);
@@ -236,8 +253,21 @@ void ClangStaticAnalyzerTool::startTool(ProjectExplorer::RunConfiguration *runCo
m_running = true; m_running = true;
handleStateUpdate(); handleStateUpdate();
ProjectExplorerPlugin::runRunConfiguration(runConfiguration, Target * const target = project->activeTarget();
Constants::CLANGSTATICANALYZER_RUN_MODE); QTC_ASSERT(target, return);
DummyRunConfiguration *& rc = m_runConfigs[target];
if (!rc) {
rc = new DummyRunConfiguration(target);
connect(project, &Project::aboutToRemoveTarget, this,
[this](Target *t) { m_runConfigs.remove(t); });
const auto onProjectRemoved = [this](Project *p) {
foreach (Target * const t, p->targets())
m_runConfigs.remove(t);
};
connect(SessionManager::instance(), &SessionManager::aboutToRemoveProject, this,
onProjectRemoved, Qt::UniqueConnection);
}
ProjectExplorerPlugin::runRunConfiguration(rc, Constants::CLANGSTATICANALYZER_RUN_MODE);
} }
CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfoBeforeBuild() const CppTools::ProjectInfo ClangStaticAnalyzerTool::projectInfoBeforeBuild() const
@@ -325,3 +355,5 @@ void ClangStaticAnalyzerTool::handleStateUpdate()
} // namespace Internal } // namespace Internal
} // namespace ClangStaticAnalyzer } // namespace ClangStaticAnalyzer
#include "clangstaticanalyzertool.moc"

View File

@@ -37,6 +37,7 @@ class ClangStaticAnalyzerDiagnosticFilterModel;
class ClangStaticAnalyzerDiagnosticModel; class ClangStaticAnalyzerDiagnosticModel;
class ClangStaticAnalyzerDiagnosticView; class ClangStaticAnalyzerDiagnosticView;
class Diagnostic; class Diagnostic;
class DummyRunConfiguration;
const char ClangStaticAnalyzerPerspectiveId[] = "ClangStaticAnalyzer.Perspective"; const char ClangStaticAnalyzerPerspectiveId[] = "ClangStaticAnalyzer.Perspective";
const char ClangStaticAnalyzerActionId[] = "ClangStaticAnalyzer.Action"; const char ClangStaticAnalyzerActionId[] = "ClangStaticAnalyzer.Action";
@@ -57,7 +58,7 @@ public:
Debugger::AnalyzerRunControl *createRunControl(ProjectExplorer::RunConfiguration *runConfiguration, Debugger::AnalyzerRunControl *createRunControl(ProjectExplorer::RunConfiguration *runConfiguration,
Core::Id runMode); Core::Id runMode);
void startTool(ProjectExplorer::RunConfiguration *rc); void startTool();
signals: signals:
void finished(bool success); // For testing. void finished(bool success); // For testing.
@@ -82,6 +83,7 @@ private:
QAction *m_stopAction = 0; QAction *m_stopAction = 0;
QAction *m_goBack; QAction *m_goBack;
QAction *m_goNext; QAction *m_goNext;
QHash<ProjectExplorer::Target *, DummyRunConfiguration *> m_runConfigs;
bool m_running; bool m_running;
bool m_toolBusy = false; bool m_toolBusy = false;
}; };

View File

@@ -107,6 +107,11 @@ void ClangStaticAnalyzerUnitTests::testProject_data()
QTest::newRow("simple qmake project") QTest::newRow("simple qmake project")
<< QString(m_tmpDir->absolutePath("simple/simple.pro")) << 1; << QString(m_tmpDir->absolutePath("simple/simple.pro")) << 1;
QTest::newRow("simple qbs library project")
<< QString(m_tmpDir->absolutePath("simple-library/simple-library.qbs")) << 0;
QTest::newRow("simple qmake library project")
<< QString(m_tmpDir->absolutePath("simple-library/simple-library.pro")) << 0;
QTest::newRow("qt-widgets-app qbs project") QTest::newRow("qt-widgets-app qbs project")
<< QString(m_tmpDir->absolutePath("qt-widgets-app/qt-widgets-app.qbs")) << 0; << QString(m_tmpDir->absolutePath("qt-widgets-app/qt-widgets-app.qbs")) << 0;
QTest::newRow("qt-widgets-app qmake project") QTest::newRow("qt-widgets-app qmake project")

View File

@@ -12,5 +12,9 @@
<file>unit-tests/qt-essential-includes/main.cpp</file> <file>unit-tests/qt-essential-includes/main.cpp</file>
<file>unit-tests/qt-essential-includes/qt-essential-includes.pro</file> <file>unit-tests/qt-essential-includes/qt-essential-includes.pro</file>
<file>unit-tests/qt-essential-includes/qt-essential-includes.qbs</file> <file>unit-tests/qt-essential-includes/qt-essential-includes.qbs</file>
<file>unit-tests/simple-library/simple-library.cpp</file>
<file>unit-tests/simple-library/simple-library.h</file>
<file>unit-tests/simple-library/simple-library.pro</file>
<file>unit-tests/simple-library/simple-library.qbs</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@@ -0,0 +1,5 @@
#include "simple-library.h"
void foo()
{
}

View File

@@ -0,0 +1,6 @@
#ifndef SIMPLELIBRARY_H
#define SIMPLELIBRARY_H
void foo();
#endif // SIMPLELIBRARY_H

View File

@@ -0,0 +1,5 @@
CONFIG -= QT
TEMPLATE = lib
SOURCES += simple-library.cpp
HEADERS += simple-library.h

View File

@@ -0,0 +1,13 @@
import qbs 1.0
DynamicLibrary {
name: "Simple Library"
Depends { name: 'cpp' }
files: [
"simple-library.cpp",
"simple-library.h",
]
}

View File

@@ -84,8 +84,12 @@ const Icon MINUS({
const Icon PLUS({ const Icon PLUS({
{QLatin1String(":/core/images/plus.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/plus.png"), Theme::IconsBaseColor}});
const Icon NEXT({ const Icon NEXT({
{QLatin1String(":/core/images/next.png"), Theme::IconsWarningColor}}, Icon::MenuTintedStyle);
const Icon NEXT_TOOLBAR({
{QLatin1String(":/core/images/next.png"), Theme::IconsNavigationArrowsColor}}); {QLatin1String(":/core/images/next.png"), Theme::IconsNavigationArrowsColor}});
const Icon PREV({ const Icon PREV({
{QLatin1String(":/core/images/prev.png"), Theme::IconsWarningColor}}, Icon::MenuTintedStyle);
const Icon PREV_TOOLBAR({
{QLatin1String(":/core/images/prev.png"), Theme::IconsNavigationArrowsColor}}); {QLatin1String(":/core/images/prev.png"), Theme::IconsNavigationArrowsColor}});
const Icon MAGNIFIER({ const Icon MAGNIFIER({
{QLatin1String(":/core/images/magnifier.png"), Theme::PanelTextColorMid}}, Icon::Tint); {QLatin1String(":/core/images/magnifier.png"), Theme::PanelTextColorMid}}, Icon::Tint);
@@ -94,6 +98,8 @@ const Icon CLEAN_PANE({
const Icon RELOAD({ const Icon RELOAD({
{QLatin1String(":/core/images/reload_gray.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/reload_gray.png"), Theme::IconsBaseColor}});
const Icon TOGGLE_SIDEBAR({ const Icon TOGGLE_SIDEBAR({
{QLatin1String(":/core/images/sidebaricon.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
const Icon TOGGLE_SIDEBAR_TOOLBAR({
{QLatin1String(":/core/images/sidebaricon.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/sidebaricon.png"), Theme::IconsBaseColor}});
const Icon CLOSE_TOOLBAR({ const Icon CLOSE_TOOLBAR({
{QLatin1String(":/core/images/close.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/close.png"), Theme::IconsBaseColor}});
@@ -102,8 +108,12 @@ const Icon CLOSE_FOREGROUND({
const Icon CLOSE_BACKGROUND({ const Icon CLOSE_BACKGROUND({
{QLatin1String(":/core/images/close.png"), Theme::PanelTextColorLight}}, Icon::Tint); {QLatin1String(":/core/images/close.png"), Theme::PanelTextColorLight}}, Icon::Tint);
const Icon SPLIT_HORIZONTAL({ const Icon SPLIT_HORIZONTAL({
{QLatin1String(":/core/images/splitbutton_horizontal.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
const Icon SPLIT_HORIZONTAL_TOOLBAR({
{QLatin1String(":/core/images/splitbutton_horizontal.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/splitbutton_horizontal.png"), Theme::IconsBaseColor}});
const Icon SPLIT_VERTICAL({ const Icon SPLIT_VERTICAL({
{QLatin1String(":/core/images/splitbutton_vertical.png"), Theme::PanelTextColorMid}}, Icon::MenuTintedStyle);
const Icon SPLIT_VERTICAL_TOOLBAR({
{QLatin1String(":/core/images/splitbutton_vertical.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/splitbutton_vertical.png"), Theme::IconsBaseColor}});
const Icon CLOSE_SPLIT_TOP({ const Icon CLOSE_SPLIT_TOP({
{QLatin1String(":/core/images/splitbutton_closetop.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/splitbutton_closetop.png"), Theme::IconsBaseColor}});
@@ -143,11 +153,17 @@ const Icon ZOOM_TOOLBAR({
const Icon TOOLBAR_EXTENSION({ const Icon TOOLBAR_EXTENSION({
{QLatin1String(":/core/images/extension.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/extension.png"), Theme::IconsBaseColor}});
const Utils::Icon RUN_SMALL({ const Utils::Icon RUN_SMALL({
{QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor}}); {QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon RUN_SMALL_TOOLBAR({
{QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunToolBarColor}});
const Utils::Icon STOP_SMALL({ const Utils::Icon STOP_SMALL({
{QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopColor}}); {QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopColor}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon STOP_SMALL_TOOLBAR({
{QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopToolBarColor}});
const Utils::Icon INTERRUPT_SMALL({ const Utils::Icon INTERRUPT_SMALL({
{QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor}}); {QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon INTERRUPT_SMALL_TOOLBAR({
{QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptToolBarColor}});
const Icon BOUNDING_RECT({ const Icon BOUNDING_RECT({
{QLatin1String(":/core/images/boundingrect.png"), Theme::IconsBaseColor}}); {QLatin1String(":/core/images/boundingrect.png"), Theme::IconsBaseColor}});
const Icon EYE_OPEN_TOOLBAR({ const Icon EYE_OPEN_TOOLBAR({

View File

@@ -60,16 +60,21 @@ CORE_EXPORT extern const Utils::Icon ARROW_DOWN;
CORE_EXPORT extern const Utils::Icon MINUS; CORE_EXPORT extern const Utils::Icon MINUS;
CORE_EXPORT extern const Utils::Icon PLUS; CORE_EXPORT extern const Utils::Icon PLUS;
CORE_EXPORT extern const Utils::Icon NEXT; CORE_EXPORT extern const Utils::Icon NEXT;
CORE_EXPORT extern const Utils::Icon NEXT_TOOLBAR;
CORE_EXPORT extern const Utils::Icon PREV; CORE_EXPORT extern const Utils::Icon PREV;
CORE_EXPORT extern const Utils::Icon PREV_TOOLBAR;
CORE_EXPORT extern const Utils::Icon MAGNIFIER; CORE_EXPORT extern const Utils::Icon MAGNIFIER;
CORE_EXPORT extern const Utils::Icon CLEAN_PANE; CORE_EXPORT extern const Utils::Icon CLEAN_PANE;
CORE_EXPORT extern const Utils::Icon RELOAD; CORE_EXPORT extern const Utils::Icon RELOAD;
CORE_EXPORT extern const Utils::Icon TOGGLE_SIDEBAR; CORE_EXPORT extern const Utils::Icon TOGGLE_SIDEBAR;
CORE_EXPORT extern const Utils::Icon TOGGLE_SIDEBAR_TOOLBAR;
CORE_EXPORT extern const Utils::Icon CLOSE_TOOLBAR; CORE_EXPORT extern const Utils::Icon CLOSE_TOOLBAR;
CORE_EXPORT extern const Utils::Icon CLOSE_FOREGROUND; CORE_EXPORT extern const Utils::Icon CLOSE_FOREGROUND;
CORE_EXPORT extern const Utils::Icon CLOSE_BACKGROUND; CORE_EXPORT extern const Utils::Icon CLOSE_BACKGROUND;
CORE_EXPORT extern const Utils::Icon SPLIT_HORIZONTAL; CORE_EXPORT extern const Utils::Icon SPLIT_HORIZONTAL;
CORE_EXPORT extern const Utils::Icon SPLIT_HORIZONTAL_TOOLBAR;
CORE_EXPORT extern const Utils::Icon SPLIT_VERTICAL; CORE_EXPORT extern const Utils::Icon SPLIT_VERTICAL;
CORE_EXPORT extern const Utils::Icon SPLIT_VERTICAL_TOOLBAR;
CORE_EXPORT extern const Utils::Icon CLOSE_SPLIT_TOP; CORE_EXPORT extern const Utils::Icon CLOSE_SPLIT_TOP;
CORE_EXPORT extern const Utils::Icon CLOSE_SPLIT_BOTTOM; CORE_EXPORT extern const Utils::Icon CLOSE_SPLIT_BOTTOM;
CORE_EXPORT extern const Utils::Icon CLOSE_SPLIT_LEFT; CORE_EXPORT extern const Utils::Icon CLOSE_SPLIT_LEFT;
@@ -88,8 +93,11 @@ CORE_EXPORT extern const Utils::Icon ZOOM;
CORE_EXPORT extern const Utils::Icon ZOOM_TOOLBAR; CORE_EXPORT extern const Utils::Icon ZOOM_TOOLBAR;
CORE_EXPORT extern const Utils::Icon TOOLBAR_EXTENSION; CORE_EXPORT extern const Utils::Icon TOOLBAR_EXTENSION;
CORE_EXPORT extern const Utils::Icon RUN_SMALL; CORE_EXPORT extern const Utils::Icon RUN_SMALL;
CORE_EXPORT extern const Utils::Icon RUN_SMALL_TOOLBAR;
CORE_EXPORT extern const Utils::Icon STOP_SMALL; CORE_EXPORT extern const Utils::Icon STOP_SMALL;
CORE_EXPORT extern const Utils::Icon STOP_SMALL_TOOLBAR;
CORE_EXPORT extern const Utils::Icon INTERRUPT_SMALL; CORE_EXPORT extern const Utils::Icon INTERRUPT_SMALL;
CORE_EXPORT extern const Utils::Icon INTERRUPT_SMALL_TOOLBAR;
CORE_EXPORT extern const Utils::Icon BOUNDING_RECT; CORE_EXPORT extern const Utils::Icon BOUNDING_RECT;
CORE_EXPORT extern const Utils::Icon EYE_OPEN_TOOLBAR; CORE_EXPORT extern const Utils::Icon EYE_OPEN_TOOLBAR;
CORE_EXPORT extern const Utils::Icon EYE_CLOSED_TOOLBAR; CORE_EXPORT extern const Utils::Icon EYE_CLOSED_TOOLBAR;

View File

@@ -208,8 +208,8 @@ EditorManagerPrivate::EditorManagerPrivate(QObject *parent) :
m_closeAllEditorsExceptVisibleAction(new QAction(EditorManager::tr("Close All Except Visible"), this)), m_closeAllEditorsExceptVisibleAction(new QAction(EditorManager::tr("Close All Except Visible"), this)),
m_gotoNextDocHistoryAction(new QAction(EditorManager::tr("Next Open Document in History"), this)), m_gotoNextDocHistoryAction(new QAction(EditorManager::tr("Next Open Document in History"), this)),
m_gotoPreviousDocHistoryAction(new QAction(EditorManager::tr("Previous Open Document in History"), this)), m_gotoPreviousDocHistoryAction(new QAction(EditorManager::tr("Previous Open Document in History"), this)),
m_goBackAction(new QAction(Icons::PREV.icon(), EditorManager::tr("Go Back"), this)), m_goBackAction(new QAction(Icons::PREV_TOOLBAR.icon(), EditorManager::tr("Go Back"), this)),
m_goForwardAction(new QAction(Icons::NEXT.icon(), EditorManager::tr("Go Forward"), this)), m_goForwardAction(new QAction(Icons::NEXT_TOOLBAR.icon(), EditorManager::tr("Go Forward"), this)),
m_copyFilePathContextAction(new QAction(EditorManager::tr("Copy Full Path"), this)), m_copyFilePathContextAction(new QAction(EditorManager::tr("Copy Full Path"), this)),
m_copyLocationContextAction(new QAction(EditorManager::tr("Copy Path and Line Number"), this)), m_copyLocationContextAction(new QAction(EditorManager::tr("Copy Path and Line Number"), this)),
m_copyFileNameContextAction(new QAction(EditorManager::tr("Copy File Name"), this)), m_copyFileNameContextAction(new QAction(EditorManager::tr("Copy File Name"), this)),

View File

@@ -94,13 +94,13 @@ EditorToolBarPrivate::EditorToolBarPrivate(QWidget *parent, EditorToolBar *q) :
m_lockButton(new QToolButton(q)), m_lockButton(new QToolButton(q)),
m_dragHandle(new QToolButton(q)), m_dragHandle(new QToolButton(q)),
m_dragHandleMenu(0), m_dragHandleMenu(0),
m_goBackAction(new QAction(Icons::PREV.icon(), EditorManager::tr("Go Back"), parent)), m_goBackAction(new QAction(Icons::PREV_TOOLBAR.icon(), EditorManager::tr("Go Back"), parent)),
m_goForwardAction(new QAction(Icons::NEXT.icon(), EditorManager::tr("Go Forward"), parent)), m_goForwardAction(new QAction(Icons::NEXT_TOOLBAR.icon(), EditorManager::tr("Go Forward"), parent)),
m_backButton(new QToolButton(q)), m_backButton(new QToolButton(q)),
m_forwardButton(new QToolButton(q)), m_forwardButton(new QToolButton(q)),
m_splitButton(new QToolButton(q)), m_splitButton(new QToolButton(q)),
m_horizontalSplitAction(new QAction(Icons::SPLIT_HORIZONTAL.icon(), EditorManager::tr("Split"), parent)), m_horizontalSplitAction(new QAction(Icons::SPLIT_HORIZONTAL_TOOLBAR.icon(), EditorManager::tr("Split"), parent)),
m_verticalSplitAction(new QAction(Icons::SPLIT_VERTICAL.icon(), EditorManager::tr("Split Side by Side"), parent)), m_verticalSplitAction(new QAction(Icons::SPLIT_VERTICAL_TOOLBAR.icon(), EditorManager::tr("Split Side by Side"), parent)),
m_splitNewWindowAction(new QAction(EditorManager::tr("Open in New Window"), parent)), m_splitNewWindowAction(new QAction(EditorManager::tr("Open in New Window"), parent)),
m_closeSplitButton(new QToolButton(q)), m_closeSplitButton(new QToolButton(q)),
m_activeToolBar(0), m_activeToolBar(0),
@@ -163,7 +163,7 @@ EditorToolBar::EditorToolBar(QWidget *parent) :
d->m_splitNewWindowAction->setIconVisibleInMenu(false); d->m_splitNewWindowAction->setIconVisibleInMenu(false);
} }
d->m_splitButton->setIcon(Icons::SPLIT_HORIZONTAL.icon()); d->m_splitButton->setIcon(Icons::SPLIT_HORIZONTAL_TOOLBAR.icon());
d->m_splitButton->setToolTip(tr("Split")); d->m_splitButton->setToolTip(tr("Split"));
d->m_splitButton->setPopupMode(QToolButton::InstantPopup); d->m_splitButton->setPopupMode(QToolButton::InstantPopup);
d->m_splitButton->setProperty("noArrow", true); d->m_splitButton->setProperty("noArrow", true);

View File

@@ -962,9 +962,9 @@ void FindToolBar::setLightColoredIcon(bool lightColored)
m_ui.findPreviousButton->setArrowType(Qt::LeftArrow); m_ui.findPreviousButton->setArrowType(Qt::LeftArrow);
m_ui.close->setIcon(Icons::CLOSE_FOREGROUND.icon()); m_ui.close->setIcon(Icons::CLOSE_FOREGROUND.icon());
} else { } else {
m_ui.findNextButton->setIcon(Icons::NEXT.icon()); m_ui.findNextButton->setIcon(Icons::NEXT_TOOLBAR.icon());
m_ui.findNextButton->setArrowType(Qt::NoArrow); m_ui.findNextButton->setArrowType(Qt::NoArrow);
m_ui.findPreviousButton->setIcon(Icons::PREV.icon()); m_ui.findPreviousButton->setIcon(Icons::PREV_TOOLBAR.icon());
m_ui.findPreviousButton->setArrowType(Qt::NoArrow); m_ui.findPreviousButton->setArrowType(Qt::NoArrow);
m_ui.close->setIcon(Icons::CLOSE_TOOLBAR.icon()); m_ui.close->setIcon(Icons::CLOSE_TOOLBAR.icon());
} }

View File

@@ -27,9 +27,8 @@
#include "locatorfiltersfilter.h" #include "locatorfiltersfilter.h"
#include "locatorwidget.h" #include "locatorwidget.h"
#include <utils/icon.h> #include <coreplugin/coreicons.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/theme/theme.h>
using namespace Core; using namespace Core;
using namespace Core::Internal; using namespace Core::Internal;
@@ -40,8 +39,7 @@ LocatorFiltersFilter::LocatorFiltersFilter(Locator *plugin,
LocatorWidget *locatorWidget): LocatorWidget *locatorWidget):
m_plugin(plugin), m_plugin(plugin),
m_locatorWidget(locatorWidget), m_locatorWidget(locatorWidget),
m_icon(Utils::Icon({{QLatin1String(":/core/images/next.png"), Utils::Theme::IconsWarningColor}}, m_icon(Icons::NEXT.icon())
Utils::Icon::Tint).pixmap())
{ {
setId("FiltersFilter"); setId("FiltersFilter");
setDisplayName(tr("Available filters")); setDisplayName(tr("Available filters"));

View File

@@ -691,7 +691,7 @@ void MainWindow::registerDefaultActions()
} }
// Show Sidebar Action // Show Sidebar Action
m_toggleSideBarAction = new QAction(Icons::TOGGLE_SIDEBAR.icon(), m_toggleSideBarAction = new QAction(Icons::TOGGLE_SIDEBAR_TOOLBAR.icon(),
QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR), QCoreApplication::translate("Core", Constants::TR_SHOW_SIDEBAR),
this); this);
m_toggleSideBarAction->setCheckable(true); m_toggleSideBarAction->setCheckable(true);

View File

@@ -194,6 +194,9 @@ int ManhattanStyle::pixelMetric(PixelMetric metric, const QStyleOption *option,
if (panelWidget(widget)) if (panelWidget(widget))
retval = 16; retval = 16;
break; break;
case PM_SmallIconSize:
retval = 16;
break;
case PM_DockWidgetHandleExtent: case PM_DockWidgetHandleExtent:
case PM_DockWidgetSeparatorExtent: case PM_DockWidgetSeparatorExtent:
return 1; return 1;

View File

@@ -69,7 +69,7 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget, int pos
toolBarLayout->addWidget(m_navigationComboBox); toolBarLayout->addWidget(m_navigationComboBox);
QToolButton *splitAction = new QToolButton(); QToolButton *splitAction = new QToolButton();
splitAction->setIcon(Icons::SPLIT_HORIZONTAL.icon()); splitAction->setIcon(Icons::SPLIT_HORIZONTAL_TOOLBAR.icon());
splitAction->setToolTip(tr("Split")); splitAction->setToolTip(tr("Split"));
splitAction->setPopupMode(QToolButton::InstantPopup); splitAction->setPopupMode(QToolButton::InstantPopup);
splitAction->setProperty("noArrow", true); splitAction->setProperty("noArrow", true);

View File

@@ -145,12 +145,12 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) :
connect(m_clearAction, &QAction::triggered, this, &OutputPaneManager::clearPage); connect(m_clearAction, &QAction::triggered, this, &OutputPaneManager::clearPage);
m_nextAction = new QAction(this); m_nextAction = new QAction(this);
m_nextAction->setIcon(Icons::NEXT.icon()); m_nextAction->setIcon(Icons::NEXT_TOOLBAR.icon());
m_nextAction->setText(tr("Next Item")); m_nextAction->setText(tr("Next Item"));
connect(m_nextAction, &QAction::triggered, this, &OutputPaneManager::slotNext); connect(m_nextAction, &QAction::triggered, this, &OutputPaneManager::slotNext);
m_prevAction = new QAction(this); m_prevAction = new QAction(this);
m_prevAction->setIcon(Icons::PREV.icon()); m_prevAction->setIcon(Icons::PREV_TOOLBAR.icon());
m_prevAction->setText(tr("Previous Item")); m_prevAction->setText(tr("Previous Item"));
connect(m_prevAction, &QAction::triggered, this, &OutputPaneManager::slotPrev); connect(m_prevAction, &QAction::triggered, this, &OutputPaneManager::slotPrev);

View File

@@ -72,7 +72,7 @@ SideBarWidget::SideBarWidget(SideBar *sideBar, const QString &id)
m_splitAction = new QAction(tr("Split"), m_toolbar); m_splitAction = new QAction(tr("Split"), m_toolbar);
m_splitAction->setToolTip(tr("Split")); m_splitAction->setToolTip(tr("Split"));
m_splitAction->setIcon(Icons::SPLIT_HORIZONTAL.icon()); m_splitAction->setIcon(Icons::SPLIT_HORIZONTAL_TOOLBAR.icon());
connect(m_splitAction, &QAction::triggered, this, &SideBarWidget::splitMe); connect(m_splitAction, &QAction::triggered, this, &SideBarWidget::splitMe);
m_toolbar->addAction(m_splitAction); m_toolbar->addAction(m_splitAction);

View File

@@ -88,6 +88,7 @@ public:
addMimeType(CppTools::Constants::CPP_SOURCE_MIMETYPE); addMimeType(CppTools::Constants::CPP_SOURCE_MIMETYPE);
addMimeType(CppTools::Constants::CPP_HEADER_MIMETYPE); addMimeType(CppTools::Constants::CPP_HEADER_MIMETYPE);
addMimeType(CppTools::Constants::QDOC_MIMETYPE); addMimeType(CppTools::Constants::QDOC_MIMETYPE);
addMimeType(CppTools::Constants::MOC_MIMETYPE);
setDocumentCreator([]() { return new CppEditorDocument; }); setDocumentCreator([]() { return new CppEditorDocument; });
setEditorWidgetCreator([]() { return new CppEditorWidget; }); setEditorWidgetCreator([]() { return new CppEditorWidget; });

View File

@@ -64,6 +64,10 @@ ProjectFile::Kind ProjectFile::classify(const QString &file)
return ObjCSource; return ObjCSource;
if (mt == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)) if (mt == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE))
return ObjCXXSource; return ObjCXXSource;
if (mt == QLatin1String(CppTools::Constants::QDOC_MIMETYPE))
return CXXSource;
if (mt == QLatin1String(CppTools::Constants::MOC_MIMETYPE))
return CXXSource;
return Unclassified; return Unclassified;
} }

View File

@@ -42,6 +42,7 @@ const char OBJECTIVE_C_SOURCE_MIMETYPE[] = "text/x-objcsrc";
const char OBJECTIVE_CPP_SOURCE_MIMETYPE[] = "text/x-objc++src"; const char OBJECTIVE_CPP_SOURCE_MIMETYPE[] = "text/x-objc++src";
const char CPP_HEADER_MIMETYPE[] = "text/x-c++hdr"; const char CPP_HEADER_MIMETYPE[] = "text/x-c++hdr";
const char QDOC_MIMETYPE[] = "text/x-qdoc"; const char QDOC_MIMETYPE[] = "text/x-qdoc";
const char MOC_MIMETYPE[] = "text/x-moc";
// QSettings keys for use by the "New Class" wizards. // QSettings keys for use by the "New Class" wizards.
const char CPPTOOLS_SETTINGSGROUP[] = "CppTools"; const char CPPTOOLS_SETTINGSGROUP[] = "CppTools";

View File

@@ -281,18 +281,6 @@ QString targetTriple(ProjectExplorer::Project *project, const Core::Id &toolchai
return QString(); return QString();
} }
bool projectHasMsvc2015Toolchain(ProjectExplorer::Project *project)
{
if (project) {
if (ProjectExplorer::Target *target = project->activeTarget()) {
if (ProjectExplorer::RunConfiguration *runConfig = target->activeRunConfiguration())
return runConfig->abi().osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor;
}
}
return false;
}
} }
/*! /*!
@@ -355,7 +343,8 @@ void ProjectPartBuilder::evaluateProjectPartToolchain(
projectPart->toolchainDefines = toolChain->predefinedMacros(commandLineFlags); projectPart->toolchainDefines = toolChain->predefinedMacros(commandLineFlags);
projectPart->toolchainType = toolChain->typeId(); projectPart->toolchainType = toolChain->typeId();
projectPart->isMsvc2015Toolchain = projectHasMsvc2015Toolchain(projectPart->project); projectPart->isMsvc2015Toolchain
= toolChain->targetAbi().osFlavor() == ProjectExplorer::Abi::WindowsMsvc2015Flavor;
projectPart->targetTriple = targetTriple(projectPart->project, toolChain->typeId()); projectPart->targetTriple = targetTriple(projectPart->project, toolChain->typeId());
projectPart->updateLanguageFeatures(); projectPart->updateLanguageFeatures();
} }

View File

@@ -31,7 +31,7 @@ namespace Debugger {
namespace Icons { namespace Icons {
const Utils::Icon ANALYZER_CONTROL_START({ const Utils::Icon ANALYZER_CONTROL_START({
{QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor}, {QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunToolBarColor},
{QLatin1String(":/images/analyzer_overlay_small.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/images/analyzer_overlay_small.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon MODE_ANALYZE_CLASSIC( const Utils::Icon MODE_ANALYZE_CLASSIC(
QLatin1String(":/images/mode_analyze.png")); QLatin1String(":/images/mode_analyze.png"));

View File

@@ -820,6 +820,7 @@ void Breakpoint::setEnabled(bool on) const
return; return;
b->m_params.enabled = on; b->m_params.enabled = on;
b->updateMarkerIcon(); b->updateMarkerIcon();
b->update();
if (b->m_engine) { if (b->m_engine) {
b->m_state = BreakpointChangeRequested; b->m_state = BreakpointChangeRequested;
b->scheduleSynchronization(); b->scheduleSynchronization();

View File

@@ -1839,8 +1839,11 @@ void DebuggerEngine::validateExecutable(DebuggerRunParameters *sp)
return; return;
if (sp->languages == QmlLanguage) if (sp->languages == QmlLanguage)
return; return;
QString binary = sp->inferior.executable;
if (binary.isEmpty()) QString symbolFile = sp->symbolFile;
if (symbolFile.isEmpty())
symbolFile = sp->inferior.executable;
if (symbolFile.isEmpty())
return; return;
const bool warnOnRelease = boolSetting(WarnOnReleaseBuilds); const bool warnOnRelease = boolSetting(WarnOnReleaseBuilds);
@@ -1856,11 +1859,11 @@ void DebuggerEngine::validateExecutable(DebuggerRunParameters *sp)
"experience for this binary format."); "experience for this binary format.");
return; return;
} else if (warnOnRelease) { } else if (warnOnRelease) {
if (!binary.endsWith(QLatin1String(".exe"), Qt::CaseInsensitive)) if (!symbolFile.endsWith(QLatin1String(".exe"), Qt::CaseInsensitive))
binary.append(QLatin1String(".exe")); symbolFile.append(QLatin1String(".exe"));
QString errorMessage; QString errorMessage;
QStringList rc; QStringList rc;
if (getPDBFiles(binary, &rc, &errorMessage) && !rc.isEmpty()) if (getPDBFiles(symbolFile, &rc, &errorMessage) && !rc.isEmpty())
return; return;
if (!errorMessage.isEmpty()) { if (!errorMessage.isEmpty()) {
detailedWarning.append(QLatin1Char('\n')); detailedWarning.append(QLatin1Char('\n'));
@@ -1881,11 +1884,11 @@ void DebuggerEngine::validateExecutable(DebuggerRunParameters *sp)
return; return;
} }
Utils::ElfReader reader(binary); Utils::ElfReader reader(symbolFile);
Utils::ElfData elfData = reader.readHeaders(); Utils::ElfData elfData = reader.readHeaders();
QString error = reader.errorString(); QString error = reader.errorString();
Internal::showMessage(_("EXAMINING ") + binary, LogDebug); Internal::showMessage(_("EXAMINING ") + symbolFile, LogDebug);
QByteArray msg = "ELF SECTIONS: "; QByteArray msg = "ELF SECTIONS: ";
static QList<QByteArray> interesting; static QList<QByteArray> interesting;

View File

@@ -47,23 +47,33 @@ const Utils::Icon TRACEPOINT({
const Utils::Icon CONTINUE( const Utils::Icon CONTINUE(
QLatin1String(":/debugger/images/debugger_continue.png")); QLatin1String(":/debugger/images/debugger_continue.png"));
const Utils::Icon CONTINUE_FLAT({ const Utils::Icon CONTINUE_FLAT({
{QLatin1String(":/debugger/images/debugger_continue_1_mask.png"), Utils::Theme::IconsInterruptColor}, {QLatin1String(":/debugger/images/debugger_continue_1_mask.png"), Utils::Theme::IconsInterruptToolBarColor},
{QLatin1String(":/debugger/images/debugger_continue_2_mask.png"), Utils::Theme::IconsRunColor}, {QLatin1String(":/debugger/images/debugger_continue_2_mask.png"), Utils::Theme::IconsRunToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_CONTINUE_SMALL({ const Utils::Icon DEBUG_CONTINUE_SMALL({
{QLatin1String(":/projectexplorer/images/continue_1_small.png"), Utils::Theme::IconsInterruptColor}, {QLatin1String(":/projectexplorer/images/continue_1_small.png"), Utils::Theme::IconsInterruptColor},
{QLatin1String(":/projectexplorer/images/continue_2_small.png"), Utils::Theme::IconsRunColor}, {QLatin1String(":/projectexplorer/images/continue_2_small.png"), Utils::Theme::IconsRunColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon DEBUG_CONTINUE_SMALL_TOOLBAR({
{QLatin1String(":/projectexplorer/images/continue_1_small.png"), Utils::Theme::IconsInterruptToolBarColor},
{QLatin1String(":/projectexplorer/images/continue_2_small.png"), Utils::Theme::IconsRunToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon INTERRUPT( const Utils::Icon INTERRUPT(
QLatin1String(":/debugger/images/debugger_interrupt.png")); QLatin1String(":/debugger/images/debugger_interrupt.png"));
const Utils::Icon INTERRUPT_FLAT({ const Utils::Icon INTERRUPT_FLAT({
{QLatin1String(":/debugger/images/debugger_interrupt_mask.png"), Utils::Theme::IconsInterruptColor}, {QLatin1String(":/debugger/images/debugger_interrupt_mask.png"), Utils::Theme::IconsInterruptToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_INTERRUPT_SMALL({ const Utils::Icon DEBUG_INTERRUPT_SMALL({
{QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor}, {QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon DEBUG_INTERRUPT_SMALL_TOOLBAR({
{QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_EXIT_SMALL({ const Utils::Icon DEBUG_EXIT_SMALL({
{QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopColor}, {QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon DEBUG_EXIT_SMALL_TOOLBAR({
{QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon LOCATION({ const Utils::Icon LOCATION({
{QLatin1String(":/debugger/images/location_background.png"), Utils::Theme::IconsCodeModelOverlayForegroundColor}, {QLatin1String(":/debugger/images/location_background.png"), Utils::Theme::IconsCodeModelOverlayForegroundColor},
@@ -85,15 +95,21 @@ const Utils::Icon RECORD_OFF({
{QLatin1String(":/debugger/images/recordoutline.png"), Utils::Theme::IconsBaseColor}}, Utils::Icon::Tint | Utils::Icon::DropShadow); {QLatin1String(":/debugger/images/recordoutline.png"), Utils::Theme::IconsBaseColor}}, Utils::Icon::Tint | Utils::Icon::DropShadow);
const Utils::Icon STEP_OVER({ const Utils::Icon STEP_OVER({
{QLatin1String(":/debugger/images/debugger_stepover_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon STEP_OVER_TOOLBAR({
{QLatin1String(":/debugger/images/debugger_stepover_small.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/debugger/images/debugger_stepover_small.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon STEP_OVER_TOOLBUTTON({
{QLatin1String(":/debugger/images/debugger_stepover_small.png"), Utils::Theme::TextColorNormal}}, Utils::Icon::Tint);
const Utils::Icon STEP_INTO({ const Utils::Icon STEP_INTO({
{QLatin1String(":/debugger/images/debugger_stepinto_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon STEP_INTO_TOOLBAR({
{QLatin1String(":/debugger/images/debugger_stepinto_small.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/debugger/images/debugger_stepinto_small.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon STEP_OUT({ const Utils::Icon STEP_OUT({
{QLatin1String(":/debugger/images/debugger_stepout_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon STEP_OUT_TOOLBAR({
{QLatin1String(":/debugger/images/debugger_stepout_small.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/debugger/images/debugger_stepout_small.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon RESTART({ const Utils::Icon RESTART({
{QLatin1String(":/debugger/images/debugger_restart_small.png"), Utils::Theme::IconsRunColor}}); {QLatin1String(":/debugger/images/debugger_restart_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon RESTART_TOOLBAR({
{QLatin1String(":/debugger/images/debugger_restart_small.png"), Utils::Theme::IconsRunToolBarColor}});
const Utils::Icon SINGLE_INSTRUCTION_MODE({ const Utils::Icon SINGLE_INSTRUCTION_MODE({
{QLatin1String(":/debugger/images/debugger_singleinstructionmode.png"), Utils::Theme::IconsBaseColor}}); {QLatin1String(":/debugger/images/debugger_singleinstructionmode.png"), Utils::Theme::IconsBaseColor}});

View File

@@ -655,6 +655,9 @@ public:
void updateWatchersHeader(int section, int, int newSize) void updateWatchersHeader(int section, int, int newSize)
{ {
if (m_shuttingDown)
return;
m_watchersView->header()->resizeSection(section, newSize); m_watchersView->header()->resizeSection(section, newSize);
m_returnView->header()->resizeSection(section, newSize); m_returnView->header()->resizeSection(section, newSize);
} }
@@ -1004,7 +1007,7 @@ public:
SnapshotHandler *m_snapshotHandler = 0; SnapshotHandler *m_snapshotHandler = 0;
bool m_shuttingDown = false; bool m_shuttingDown = false;
DebuggerEngine *m_currentEngine = 0; QPointer<DebuggerEngine> m_currentEngine;
DebuggerSettings *m_debuggerSettings = 0; DebuggerSettings *m_debuggerSettings = 0;
QStringList m_arguments; QStringList m_arguments;
DebuggerToolTipManager m_toolTipManager; DebuggerToolTipManager m_toolTipManager;
@@ -1346,14 +1349,14 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
this, &DebuggerPluginPrivate::updateWatchersHeader, Qt::QueuedConnection); this, &DebuggerPluginPrivate::updateWatchersHeader, Qt::QueuedConnection);
auto act = m_continueAction = new QAction(tr("Continue"), this); auto act = m_continueAction = new QAction(tr("Continue"), this);
act->setIcon(Icon::combinedIcon({Icons::DEBUG_CONTINUE_SMALL.icon(), continueSideBarIcon})); act->setIcon(Icon::combinedIcon({Icons::DEBUG_CONTINUE_SMALL_TOOLBAR.icon(), continueSideBarIcon}));
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecContinue); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecContinue);
act = m_exitAction = new QAction(tr("Stop Debugger"), this); act = m_exitAction = new QAction(tr("Stop Debugger"), this);
act->setIcon(Icons::DEBUG_EXIT_SMALL.icon()); act->setIcon(Icons::DEBUG_EXIT_SMALL_TOOLBAR.icon());
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecExit); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecExit);
auto interruptIcon = Icon::combinedIcon({Icons::DEBUG_INTERRUPT_SMALL.icon(), interruptSideBarIcon}); auto interruptIcon = Icon::combinedIcon({Icons::DEBUG_INTERRUPT_SMALL_TOOLBAR.icon(), interruptSideBarIcon});
act = m_interruptAction = new QAction(tr("Interrupt"), this); act = m_interruptAction = new QAction(tr("Interrupt"), this);
act->setIcon(interruptIcon); act->setIcon(interruptIcon);
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecInterrupt); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecInterrupt);
@@ -1370,19 +1373,19 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
act = m_resetAction = new QAction(tr("Restart Debugging"),this); act = m_resetAction = new QAction(tr("Restart Debugging"),this);
act->setToolTip(tr("Restart the debugging session.")); act->setToolTip(tr("Restart the debugging session."));
act->setIcon(Icons::RESTART.icon()); act->setIcon(Icons::RESTART_TOOLBAR.icon());
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleReset); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleReset);
act = m_nextAction = new QAction(tr("Step Over"), this); act = m_nextAction = new QAction(tr("Step Over"), this);
act->setIcon(Icons::STEP_OVER.icon()); act->setIcon(Icons::STEP_OVER_TOOLBAR.icon());
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecNext); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecNext);
act = m_stepAction = new QAction(tr("Step Into"), this); act = m_stepAction = new QAction(tr("Step Into"), this);
act->setIcon(Icons::STEP_INTO.icon()); act->setIcon(Icons::STEP_INTO_TOOLBAR.icon());
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecStep); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecStep);
act = m_stepOutAction = new QAction(tr("Step Out"), this); act = m_stepOutAction = new QAction(tr("Step Out"), this);
act->setIcon(Icons::STEP_OUT.icon()); act->setIcon(Icons::STEP_OUT_TOOLBAR.icon());
connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecStepOut); connect(act, &QAction::triggered, this, &DebuggerPluginPrivate::handleExecStepOut);
act = m_runToLineAction = new QAction(tr("Run to Line"), this); act = m_runToLineAction = new QAction(tr("Run to Line"), this);
@@ -1440,7 +1443,7 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
act = m_startAction = new QAction(this); act = m_startAction = new QAction(this);
const QIcon sideBarIcon = const QIcon sideBarIcon =
Icon::sideBarIcon(ProjectExplorer::Icons::DEBUG_START, ProjectExplorer::Icons::DEBUG_START_FLAT); Icon::sideBarIcon(ProjectExplorer::Icons::DEBUG_START, ProjectExplorer::Icons::DEBUG_START_FLAT);
const QIcon debuggerIcon = Icon::combinedIcon({ProjectExplorer::Icons::DEBUG_START_SMALL.icon(), sideBarIcon}); const QIcon debuggerIcon = Icon::combinedIcon({ProjectExplorer::Icons::DEBUG_START_SMALL_TOOLBAR.icon(), sideBarIcon});
act->setIcon(debuggerIcon); act->setIcon(debuggerIcon);
act->setText(tr("Start Debugging")); act->setText(tr("Start Debugging"));
connect(act, &QAction::triggered, [] { ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE); }); connect(act, &QAction::triggered, [] { ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::DEBUG_RUN_MODE); });
@@ -1775,12 +1778,12 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
// Toolbar // Toolbar
ToolbarDescription toolbar; ToolbarDescription toolbar;
toolbar.addAction(m_visibleStartAction); toolbar.addAction(m_visibleStartAction);
toolbar.addAction(m_exitAction); toolbar.addAction(ActionManager::command(Constants::STOP)->action());
toolbar.addAction(m_nextAction); toolbar.addAction(ActionManager::command(Constants::NEXT)->action());
toolbar.addAction(m_stepAction); toolbar.addAction(ActionManager::command(Constants::STEP)->action());
toolbar.addAction(m_stepOutAction); toolbar.addAction(ActionManager::command(Constants::STEPOUT)->action());
toolbar.addAction(m_resetAction); toolbar.addAction(ActionManager::command(Constants::RESET)->action());
toolbar.addAction(m_operateByInstructionAction); toolbar.addAction(ActionManager::command(Constants::OPERATE_BY_INSTRUCTION)->action());
if (isReverseDebuggingEnabled()) { if (isReverseDebuggingEnabled()) {
m_reverseToolButton = new QToolButton; m_reverseToolButton = new QToolButton;
@@ -2359,6 +2362,9 @@ void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine)
if (m_currentEngine == engine) if (m_currentEngine == engine)
return; return;
if (m_shuttingDown)
return;
if (m_currentEngine) if (m_currentEngine)
m_currentEngine->resetLocation(); m_currentEngine->resetLocation();
m_currentEngine = engine; m_currentEngine = engine;
@@ -2742,6 +2748,8 @@ void DebuggerPluginPrivate::aboutToSaveSession()
void DebuggerPluginPrivate::showStatusMessage(const QString &msg0, int timeout) void DebuggerPluginPrivate::showStatusMessage(const QString &msg0, int timeout)
{ {
if (m_shuttingDown)
return;
showMessage(msg0, LogStatus); showMessage(msg0, LogStatus);
QString msg = msg0; QString msg = msg0;
msg.replace(QChar::LineFeed, QLatin1String("; ")); msg.replace(QChar::LineFeed, QLatin1String("; "));
@@ -2751,6 +2759,12 @@ void DebuggerPluginPrivate::showStatusMessage(const QString &msg0, int timeout)
void DebuggerPluginPrivate::coreShutdown() void DebuggerPluginPrivate::coreShutdown()
{ {
m_shuttingDown = true; m_shuttingDown = true;
if (currentEngine()) {
if (currentEngine()->state() != Debugger::DebuggerNotReady) {
currentEngine()->setTargetState(Debugger::DebuggerFinished);
currentEngine()->abortDebugger();
}
}
} }
const CPlusPlus::Snapshot &cppCodeModelSnapshot() const CPlusPlus::Snapshot &cppCodeModelSnapshot()
@@ -2887,6 +2901,8 @@ void DebuggerPluginPrivate::runControlStarted(DebuggerEngine *engine)
void DebuggerPluginPrivate::runControlFinished(DebuggerEngine *engine) void DebuggerPluginPrivate::runControlFinished(DebuggerEngine *engine)
{ {
if (m_shuttingDown)
return;
showStatusMessage(tr("Debugger finished.")); showStatusMessage(tr("Debugger finished."));
m_snapshotHandler->removeSnapshot(engine); m_snapshotHandler->removeSnapshot(engine);
if (m_snapshotHandler->size() == 0) { if (m_snapshotHandler->size() == 0) {
@@ -3535,7 +3551,7 @@ QAction *createStartAction()
QAction *createStopAction() QAction *createStopAction()
{ {
auto action = new QAction(DebuggerMainWindow::tr("Stop"), DebuggerPlugin::instance()); auto action = new QAction(DebuggerMainWindow::tr("Stop"), DebuggerPlugin::instance());
action->setIcon(Core::Icons::STOP_SMALL.icon()); action->setIcon(Core::Icons::STOP_SMALL_TOOLBAR.icon());
action->setEnabled(true); action->setEnabled(true);
return action; return action;
} }
@@ -3672,7 +3688,8 @@ void DebuggerUnitTests::testStateMachine()
QTestEventLoop::instance().exitLoop(); QTestEventLoop::instance().exitLoop();
}); });
// QTestEventLoop::instance().enterLoop(20); QTestEventLoop::instance().enterLoop(5);
EditorManager::closeAllEditors(false);
} }

View File

@@ -79,6 +79,7 @@ public:
QString remoteChannel; QString remoteChannel;
QSsh::SshConnectionParameters connParams; QSsh::SshConnectionParameters connParams;
bool remoteSetupNeeded = false; bool remoteSetupNeeded = false;
QString symbolFile;
// Used by Mer plugin (3rd party) // Used by Mer plugin (3rd party)
QMap<QString, QString> sourcePathMap; QMap<QString, QString> sourcePathMap;
@@ -92,7 +93,6 @@ public:
QVector<QByteArray> expectedSignals; QVector<QByteArray> expectedSignals;
// For QNX debugging // For QNX debugging
QString remoteExecutable;
bool useCtrlCStub = false; bool useCtrlCStub = false;
// Used by Android to avoid false positives on warnOnRelease // Used by Android to avoid false positives on warnOnRelease

View File

@@ -164,10 +164,10 @@ void GdbRemoteServerEngine::setupInferior()
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
setLinuxOsAbi(); setLinuxOsAbi();
const DebuggerRunParameters &rp = runParameters(); const DebuggerRunParameters &rp = runParameters();
QString executableFileName; QString symbolFile;
if (!rp.inferior.executable.isEmpty()) { if (!rp.symbolFile.isEmpty()) {
QFileInfo fi(rp.inferior.executable); QFileInfo fi(rp.symbolFile);
executableFileName = fi.absoluteFilePath(); symbolFile = fi.absoluteFilePath();
} }
//const QByteArray sysroot = sp.sysroot.toLocal8Bit(); //const QByteArray sysroot = sp.sysroot.toLocal8Bit();
@@ -208,14 +208,14 @@ void GdbRemoteServerEngine::setupInferior()
if (boolSetting(TargetAsync)) if (boolSetting(TargetAsync))
runCommand({"set target-async on", NoFlags, CB(handleSetTargetAsync)}); runCommand({"set target-async on", NoFlags, CB(handleSetTargetAsync)});
if (executableFileName.isEmpty()) { if (symbolFile.isEmpty()) {
showMessage(tr("No symbol file given."), StatusBar); showMessage(tr("No symbol file given."), StatusBar);
callTargetRemote(); callTargetRemote();
return; return;
} }
if (!executableFileName.isEmpty()) { if (!symbolFile.isEmpty()) {
runCommand({"-file-exec-and-symbols \"" + executableFileName.toLocal8Bit() + '"', runCommand({"-file-exec-and-symbols \"" + symbolFile.toLocal8Bit() + '"',
NoFlags, CB(handleFileExecAndSymbols)}); NoFlags, CB(handleFileExecAndSymbols)});
} }
} }
@@ -310,7 +310,7 @@ void GdbRemoteServerEngine::handleTargetExtendedRemote(const DebuggerResponse &r
runCommand({"attach " + QByteArray::number(runParameters().attachPID), runCommand({"attach " + QByteArray::number(runParameters().attachPID),
NoFlags, CB(handleTargetExtendedAttach)}); NoFlags, CB(handleTargetExtendedAttach)});
} else { } else {
runCommand({"-gdb-set remote exec-file " + runParameters().remoteExecutable.toLatin1(), runCommand({"-gdb-set remote exec-file " + runParameters().inferior.executable.toLatin1(),
NoFlags, CB(handleTargetExtendedAttach)}); NoFlags, CB(handleTargetExtendedAttach)});
} }
} else { } else {
@@ -342,8 +342,9 @@ void GdbRemoteServerEngine::handleTargetQnx(const DebuggerResponse &response)
showMessage(_("INFERIOR STARTED")); showMessage(_("INFERIOR STARTED"));
showMessage(msgAttachedToStoppedInferior(), StatusBar); showMessage(msgAttachedToStoppedInferior(), StatusBar);
const qint64 pid = isMasterEngine() ? runParameters().attachPID : masterEngine()->runParameters().attachPID; const DebuggerRunParameters &rp = isMasterEngine() ? runParameters() : masterEngine()->runParameters();
const QString remoteExecutable = isMasterEngine() ? runParameters().remoteExecutable : masterEngine()->runParameters().remoteExecutable; const qint64 pid = rp.attachPID;
const QString remoteExecutable = rp.inferior.executable;
if (pid > -1) if (pid > -1)
runCommand({"attach " + QByteArray::number(pid), NoFlags, CB(handleAttach)}); runCommand({"attach " + QByteArray::number(pid), NoFlags, CB(handleAttach)});
else if (!remoteExecutable.isEmpty()) else if (!remoteExecutable.isEmpty())
@@ -403,12 +404,11 @@ void GdbRemoteServerEngine::runEngine()
{ {
QTC_ASSERT(state() == EngineRunRequested, qDebug() << state()); QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
const QString remoteExecutable = runParameters().remoteExecutable; if (runParameters().useContinueInsteadOfRun) {
if (!remoteExecutable.isEmpty()) {
runCommand({"-exec-run", RunRequest, CB(handleExecRun)});
} else {
notifyEngineRunAndInferiorStopOk(); notifyEngineRunAndInferiorStopOk();
continueInferiorInternal(); continueInferiorInternal();
} else {
runCommand({"-exec-run", RunRequest, CB(handleExecRun)});
} }
} }

View File

@@ -374,7 +374,7 @@ LogWindow::LogWindow(QWidget *parent)
m_commandEdit->setHistoryCompleter(QLatin1String("DebuggerInput")); m_commandEdit->setHistoryCompleter(QLatin1String("DebuggerInput"));
auto repeatButton = new QToolButton(this); auto repeatButton = new QToolButton(this);
repeatButton->setIcon(Icons::STEP_OVER_TOOLBUTTON.icon()); repeatButton->setIcon(Icons::STEP_OVER.icon());
repeatButton->setFixedSize(QSize(18, 18)); repeatButton->setFixedSize(QSize(18, 18));
repeatButton->setToolTip(tr("Repeat last command for debug reasons.")); repeatButton->setToolTip(tr("Repeat last command for debug reasons."));

View File

@@ -1256,7 +1256,8 @@ void WatchHandler::cleanup()
saveWatchers(); saveWatchers();
m_model->reinitialize(); m_model->reinitialize();
emit m_model->updateFinished(); emit m_model->updateFinished();
m_model->m_separatedView->hide(); if (Internal::mainWindow())
m_model->m_separatedView->hide();
} }
static bool sortByName(const TreeItem *a, const TreeItem *b) static bool sortByName(const TreeItem *a, const TreeItem *b)

View File

@@ -128,7 +128,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing setAttribute(Qt::WA_QuitOnClose, false); // don't prevent Qt Creator from closing
} }
if (style != SideBarWidget) { if (style != SideBarWidget) {
m_toggleSideBarAction = new QAction(Core::Icons::TOGGLE_SIDEBAR.icon(), m_toggleSideBarAction = new QAction(Core::Icons::TOGGLE_SIDEBAR_TOOLBAR.icon(),
QCoreApplication::translate("Core", Core::Constants::TR_SHOW_SIDEBAR), QCoreApplication::translate("Core", Core::Constants::TR_SHOW_SIDEBAR),
toolBar); toolBar);
m_toggleSideBarAction->setCheckable(true); m_toggleSideBarAction->setCheckable(true);
@@ -164,7 +164,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome); connect(m_homeAction, &QAction::triggered, this, &HelpWidget::goHome);
layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_homeAction, cmd)); layout->addWidget(Core::Command::toolButtonWithAppendedShortcut(m_homeAction, cmd));
m_backAction = new QAction(Core::Icons::PREV.icon(), tr("Back"), toolBar); m_backAction = new QAction(Core::Icons::PREV_TOOLBAR.icon(), tr("Back"), toolBar);
connect(m_backAction, &QAction::triggered, this, &HelpWidget::backward); connect(m_backAction, &QAction::triggered, this, &HelpWidget::backward);
m_backMenu = new QMenu(toolBar); m_backMenu = new QMenu(toolBar);
connect(m_backMenu, &QMenu::aboutToShow, this, &HelpWidget::updateBackMenu); connect(m_backMenu, &QMenu::aboutToShow, this, &HelpWidget::updateBackMenu);
@@ -175,7 +175,7 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
button->setPopupMode(QToolButton::DelayedPopup); button->setPopupMode(QToolButton::DelayedPopup);
layout->addWidget(button); layout->addWidget(button);
m_forwardAction = new QAction(Core::Icons::NEXT.icon(), tr("Forward"), toolBar); m_forwardAction = new QAction(Core::Icons::NEXT_TOOLBAR.icon(), tr("Forward"), toolBar);
connect(m_forwardAction, &QAction::triggered, this, &HelpWidget::forward); connect(m_forwardAction, &QAction::triggered, this, &HelpWidget::forward);
m_forwardMenu = new QMenu(toolBar); m_forwardMenu = new QMenu(toolBar);
connect(m_forwardMenu, &QMenu::aboutToShow, this, &HelpWidget::updateForwardMenu); connect(m_forwardMenu, &QMenu::aboutToShow, this, &HelpWidget::updateForwardMenu);

View File

@@ -260,10 +260,10 @@ void ImageViewer::updatePauseAction()
bool isMovie = d->file->type() == ImageViewerFile::TypeMovie; bool isMovie = d->file->type() == ImageViewerFile::TypeMovie;
if (isMovie && !d->file->isPaused()) { if (isMovie && !d->file->isPaused()) {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation")); d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.icon()); d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL_TOOLBAR.icon());
} else { } else {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation")); d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation"));
d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.icon()); d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL_TOOLBAR.icon());
d->ui_toolbar.toolButtonPlayPause->setEnabled(isMovie); d->ui_toolbar.toolButtonPlayPause->setEnabled(isMovie);
} }
} }

View File

@@ -42,7 +42,7 @@ IosRunControl::IosRunControl(IosRunConfiguration *rc)
, m_runner(new IosRunner(this, rc, false, QmlDebug::NoQmlDebugServices)) , m_runner(new IosRunner(this, rc, false, QmlDebug::NoQmlDebugServices))
, m_running(false) , m_running(false)
{ {
setIcon(Core::Icons::RUN_SMALL); setIcon(Core::Icons::RUN_SMALL_TOOLBAR);
} }
IosRunControl::~IosRunControl() IosRunControl::~IosRunControl()

View File

@@ -157,7 +157,7 @@ AppOutputPane::AppOutputPane() :
setObjectName(QLatin1String("AppOutputPane")); // Used in valgrind engine setObjectName(QLatin1String("AppOutputPane")); // Used in valgrind engine
// Rerun // Rerun
m_reRunButton->setIcon(Core::Icons::RUN_SMALL.icon()); m_reRunButton->setIcon(Core::Icons::RUN_SMALL_TOOLBAR.icon());
m_reRunButton->setToolTip(tr("Re-run this run-configuration")); m_reRunButton->setToolTip(tr("Re-run this run-configuration"));
m_reRunButton->setAutoRaise(true); m_reRunButton->setAutoRaise(true);
m_reRunButton->setEnabled(false); m_reRunButton->setEnabled(false);
@@ -165,7 +165,7 @@ AppOutputPane::AppOutputPane() :
this, &AppOutputPane::reRunRunControl); this, &AppOutputPane::reRunRunControl);
// Stop // Stop
m_stopAction->setIcon(Core::Icons::STOP_SMALL.icon()); m_stopAction->setIcon(Core::Icons::STOP_SMALL_TOOLBAR.icon());
m_stopAction->setToolTip(tr("Stop")); m_stopAction->setToolTip(tr("Stop"));
m_stopAction->setEnabled(false); m_stopAction->setEnabled(false);
@@ -643,7 +643,7 @@ void AppOutputPane::enableButtons(const RunControl *rc, bool isRunning)
m_zoomOutButton->setEnabled(true); m_zoomOutButton->setEnabled(true);
} else { } else {
m_reRunButton->setEnabled(false); m_reRunButton->setEnabled(false);
m_reRunButton->setIcon(Core::Icons::RUN_SMALL.icon()); m_reRunButton->setIcon(Core::Icons::RUN_SMALL_TOOLBAR.icon());
m_attachButton->setEnabled(false); m_attachButton->setEnabled(false);
m_attachButton->setToolTip(msgAttachDebuggerTooltip()); m_attachButton->setToolTip(msgAttachDebuggerTooltip());
m_stopAction->setEnabled(false); m_stopAction->setEnabled(false);

View File

@@ -63,7 +63,7 @@ LocalApplicationRunControl::LocalApplicationRunControl(RunConfiguration *rc, Cor
: RunControl(rc, mode) : RunControl(rc, mode)
{ {
setRunnable(rc->runnable()); setRunnable(rc->runnable());
setIcon(Core::Icons::RUN_SMALL); setIcon(Core::Icons::RUN_SMALL_TOOLBAR);
connect(&m_applicationLauncher, &ApplicationLauncher::appendMessage, connect(&m_applicationLauncher, &ApplicationLauncher::appendMessage,
this, static_cast<void(RunControl::*)(const QString &, Utils::OutputFormat)>(&RunControl::appendMessage)); this, static_cast<void(RunControl::*)(const QString &, Utils::OutputFormat)>(&RunControl::appendMessage));
connect(&m_applicationLauncher, &ApplicationLauncher::processStarted, connect(&m_applicationLauncher, &ApplicationLauncher::processStarted,

View File

@@ -686,7 +686,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
ActionContainer *runMenu = ActionManager::createMenu(Constants::RUNMENUCONTEXTMENU); ActionContainer *runMenu = ActionManager::createMenu(Constants::RUNMENUCONTEXTMENU);
runMenu->setOnAllDisabledBehavior(ActionContainer::Hide); runMenu->setOnAllDisabledBehavior(ActionContainer::Hide);
QIcon runIcon = Utils::Icon::sideBarIcon(Icons::RUN, Icons::RUN_FLAT); QIcon runIcon = Utils::Icon::sideBarIcon(Icons::RUN, Icons::RUN_FLAT);
runIcon.addPixmap(Core::Icons::RUN_SMALL.pixmap()); runIcon.addPixmap(Core::Icons::RUN_SMALL_TOOLBAR.pixmap());
runMenu->menu()->setIcon(runIcon); runMenu->menu()->setIcon(runIcon);
runMenu->menu()->setTitle(tr("Run")); runMenu->menu()->setTitle(tr("Run"));
msubProjectContextMenu->addMenu(runMenu, ProjectExplorer::Constants::G_PROJECT_RUN); msubProjectContextMenu->addMenu(runMenu, ProjectExplorer::Constants::G_PROJECT_RUN);
@@ -884,7 +884,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
mbuild->addAction(cmd, Constants::G_BUILD_CLEAN); mbuild->addAction(cmd, Constants::G_BUILD_CLEAN);
// cancel build action // cancel build action
dd->m_cancelBuildAction = new QAction(Core::Icons::STOP_SMALL.icon(), tr("Cancel Build"), this); dd->m_cancelBuildAction = new QAction(Core::Icons::STOP_SMALL_TOOLBAR.icon(), tr("Cancel Build"), this);
cmd = ActionManager::registerAction(dd->m_cancelBuildAction, Constants::CANCELBUILD); cmd = ActionManager::registerAction(dd->m_cancelBuildAction, Constants::CANCELBUILD);
mbuild->addAction(cmd, Constants::G_BUILD_CANCEL); mbuild->addAction(cmd, Constants::G_BUILD_CANCEL);

View File

@@ -45,17 +45,20 @@ const Utils::Icon REBUILD({
const Utils::Icon RUN( const Utils::Icon RUN(
QLatin1String(":/projectexplorer/images/run.png")); QLatin1String(":/projectexplorer/images/run.png"));
const Utils::Icon RUN_FLAT({ const Utils::Icon RUN_FLAT({
{QLatin1String(":/projectexplorer/images/run_mask.png"), Utils::Theme::IconsRunColor}}); {QLatin1String(":/projectexplorer/images/run_mask.png"), Utils::Theme::IconsRunToolBarColor}});
const Utils::Icon WINDOW( const Utils::Icon WINDOW(
QLatin1String(":/projectexplorer/images/window.png")); QLatin1String(":/projectexplorer/images/window.png"));
const Utils::Icon DEBUG_START( const Utils::Icon DEBUG_START(
QLatin1String(":/projectexplorer/images/debugger_start.png")); QLatin1String(":/projectexplorer/images/debugger_start.png"));
const Utils::Icon DEBUG_START_FLAT({ const Utils::Icon DEBUG_START_FLAT({
{QLatin1String(":/projectexplorer/images/run_mask.png"), Utils::Theme::IconsRunColor}, {QLatin1String(":/projectexplorer/images/run_mask.png"), Utils::Theme::IconsRunToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_START_SMALL({ const Utils::Icon DEBUG_START_SMALL({
{QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor}, {QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::MenuTintedStyle);
const Utils::Icon DEBUG_START_SMALL_TOOLBAR({
{QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunToolBarColor},
{QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}}); {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon BUILDSTEP_MOVEUP({ const Utils::Icon BUILDSTEP_MOVEUP({

View File

@@ -1059,7 +1059,7 @@ RunControl *PythonRunControlFactory::create(RunConfiguration *runConfiguration,
PythonRunControl::PythonRunControl(PythonRunConfiguration *rc, Core::Id mode) PythonRunControl::PythonRunControl(PythonRunConfiguration *rc, Core::Id mode)
: RunControl(rc, mode), m_running(false) : RunControl(rc, mode), m_running(false)
{ {
setIcon(Core::Icons::RUN_SMALL); setIcon(Core::Icons::RUN_SMALL_TOOLBAR);
m_interpreter = rc->interpreter(); m_interpreter = rc->interpreter();
m_mainScript = rc->mainScript(); m_mainScript = rc->mainScript();

View File

@@ -385,4 +385,17 @@ MetaInfo {
} }
Type {
name: "QtQuick.Controls.TreeView"
icon: ":/componentsplugin/images/window16.png"
ItemLibraryEntry {
name: "TreeView"
category: "Qt Quick - Controls"
libraryIcon: ":/componentsplugin/images/window.png"
version: "1.4"
requiredImport: "QtQuick.Controls"
}
}
} }

View File

@@ -67,6 +67,7 @@ Runnable QmlProjectRunConfiguration::runnable() const
r.executable = executable(); r.executable = executable();
r.commandLineArguments = commandLineArguments(); r.commandLineArguments = commandLineArguments();
r.runMode = ApplicationLauncher::Gui; r.runMode = ApplicationLauncher::Gui;
r.environment = extraAspect<QmlProjectEnvironmentAspect>()->environment();
r.workingDirectory = canonicalCapsPath(target()->project()->projectFilePath() r.workingDirectory = canonicalCapsPath(target()->project()->projectFilePath()
.toFileInfo().absolutePath()); .toFileInfo().absolutePath());
return r; return r;

View File

@@ -65,8 +65,8 @@ static DebuggerStartParameters createDebuggerStartParameters(QnxRunConfiguration
params.startMode = AttachToRemoteServer; params.startMode = AttachToRemoteServer;
params.useCtrlCStub = true; params.useCtrlCStub = true;
params.inferior.executable = runConfig->localExecutableFilePath(); params.inferior.executable = runConfig->remoteExecutableFilePath();
params.remoteExecutable = runConfig->remoteExecutableFilePath(); params.symbolFile = runConfig->localExecutableFilePath();
params.remoteChannel = device->sshParameters().host + QLatin1String(":-1"); params.remoteChannel = device->sshParameters().host + QLatin1String(":-1");
params.remoteSetupNeeded = true; params.remoteSetupNeeded = true;
params.closeMode = KillAtClose; params.closeMode = KillAtClose;

View File

@@ -43,7 +43,7 @@ public:
RemoteLinuxRunControl::RemoteLinuxRunControl(RunConfiguration *rc) RemoteLinuxRunControl::RemoteLinuxRunControl(RunConfiguration *rc)
: RunControl(rc, ProjectExplorer::Constants::NORMAL_RUN_MODE), d(new RemoteLinuxRunControlPrivate) : RunControl(rc, ProjectExplorer::Constants::NORMAL_RUN_MODE), d(new RemoteLinuxRunControlPrivate)
{ {
setIcon(Core::Icons::RUN_SMALL); setIcon(Core::Icons::RUN_SMALL_TOOLBAR);
setRunnable(rc->runnable()); setRunnable(rc->runnable());
d->running = false; d->running = false;

View File

@@ -101,10 +101,10 @@ RunControl *RemoteLinuxRunControlFactory::create(RunConfiguration *runConfig, Co
return 0; return 0;
} }
QString localExecutable; QString symbolFile;
if (auto rlrc = qobject_cast<RemoteLinuxRunConfiguration *>(runConfig)) if (auto rlrc = qobject_cast<RemoteLinuxRunConfiguration *>(runConfig))
localExecutable = rlrc->localExecutableFilePath(); symbolFile = rlrc->localExecutableFilePath();
if (localExecutable.isEmpty()) { if (symbolFile.isEmpty()) {
*errorMessage = tr("Cannot debug: Local executable is not set."); *errorMessage = tr("Cannot debug: Local executable is not set.");
return 0; return 0;
} }
@@ -120,14 +120,14 @@ RunControl *RemoteLinuxRunControlFactory::create(RunConfiguration *runConfig, Co
} }
if (aspect->useCppDebugger()) { if (aspect->useCppDebugger()) {
aspect->setUseMultiProcess(true); aspect->setUseMultiProcess(true);
params.inferior.executable = stdRunnable.executable;
params.inferior.commandLineArguments = stdRunnable.commandLineArguments; params.inferior.commandLineArguments = stdRunnable.commandLineArguments;
if (aspect->useQmlDebugger()) { if (aspect->useQmlDebugger()) {
params.inferior.commandLineArguments.prepend(QLatin1Char(' ')); params.inferior.commandLineArguments.prepend(QLatin1Char(' '));
params.inferior.commandLineArguments.prepend(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices)); params.inferior.commandLineArguments.prepend(QmlDebug::qmlDebugTcpArguments(QmlDebug::QmlDebuggerServices));
} }
params.inferior.commandLineArguments = localExecutable;
params.remoteChannel = dev->sshParameters().host + QLatin1String(":-1"); params.remoteChannel = dev->sshParameters().host + QLatin1String(":-1");
params.remoteExecutable = stdRunnable.executable; params.symbolFile = symbolFile;
} }
DebuggerRunControl * const runControl = createDebuggerRunControl(params, runConfig, errorMessage, mode); DebuggerRunControl * const runControl = createDebuggerRunControl(params, runConfig, errorMessage, mode);

View File

@@ -370,7 +370,7 @@ CallgrindTool::CallgrindTool(QObject *parent)
// pause action // pause action
m_pauseAction = action = new QAction(this); m_pauseAction = action = new QAction(this);
action->setCheckable(true); action->setCheckable(true);
action->setIcon(Core::Icons::INTERRUPT_SMALL.icon()); action->setIcon(Core::Icons::INTERRUPT_SMALL_TOOLBAR.icon());
//action->setText(tr("Ignore")); //action->setText(tr("Ignore"));
action->setToolTip(tr("Pause event logging. No events are counted which will speed up program execution during profiling.")); action->setToolTip(tr("Pause event logging. No events are counted which will speed up program execution during profiling."));
connect(action, &QAction::toggled, this, &CallgrindTool::pauseToggled); connect(action, &QAction::toggled, this, &CallgrindTool::pauseToggled);
@@ -379,14 +379,14 @@ CallgrindTool::CallgrindTool(QObject *parent)
// go back // go back
m_goBack = action = new QAction(this); m_goBack = action = new QAction(this);
action->setDisabled(true); action->setDisabled(true);
action->setIcon(Core::Icons::PREV.icon()); action->setIcon(Core::Icons::PREV_TOOLBAR.icon());
action->setToolTip(tr("Go back one step in history. This will select the previously selected item.")); action->setToolTip(tr("Go back one step in history. This will select the previously selected item."));
connect(action, &QAction::triggered, &m_stackBrowser, &StackBrowser::goBack); connect(action, &QAction::triggered, &m_stackBrowser, &StackBrowser::goBack);
// go forward // go forward
m_goNext = action = new QAction(this); m_goNext = action = new QAction(this);
action->setDisabled(true); action->setDisabled(true);
action->setIcon(Core::Icons::NEXT.icon()); action->setIcon(Core::Icons::NEXT_TOOLBAR.icon());
action->setToolTip(tr("Go forward one step in history.")); action->setToolTip(tr("Go forward one step in history."));
connect(action, &QAction::triggered, &m_stackBrowser, &StackBrowser::goNext); connect(action, &QAction::triggered, &m_stackBrowser, &StackBrowser::goNext);

View File

@@ -355,7 +355,7 @@ MemcheckTool::MemcheckTool(QObject *parent)
// Go to previous leak. // Go to previous leak.
action = new QAction(this); action = new QAction(this);
action->setDisabled(true); action->setDisabled(true);
action->setIcon(Core::Icons::PREV.icon()); action->setIcon(Core::Icons::PREV_TOOLBAR.icon());
action->setToolTip(tr("Go to previous leak.")); action->setToolTip(tr("Go to previous leak."));
connect(action, &QAction::triggered, m_errorView, &MemcheckErrorView::goBack); connect(action, &QAction::triggered, m_errorView, &MemcheckErrorView::goBack);
m_goBack = action; m_goBack = action;
@@ -363,7 +363,7 @@ MemcheckTool::MemcheckTool(QObject *parent)
// Go to next leak. // Go to next leak.
action = new QAction(this); action = new QAction(this);
action->setDisabled(true); action->setDisabled(true);
action->setIcon(Core::Icons::NEXT.icon()); action->setIcon(Core::Icons::NEXT_TOOLBAR.icon());
action->setToolTip(tr("Go to next leak.")); action->setToolTip(tr("Go to next leak."));
connect(action, &QAction::triggered, m_errorView, &MemcheckErrorView::goNext); connect(action, &QAction::triggered, m_errorView, &MemcheckErrorView::goNext);
m_goNext = action; m_goNext = action;

View File

@@ -56,7 +56,7 @@ WinRtRunControl::WinRtRunControl(WinRtRunConfiguration *runConfiguration, Core::
, m_state(StoppedState) , m_state(StoppedState)
, m_runner(0) , m_runner(0)
{ {
setIcon(Core::Icons::RUN_SMALL); setIcon(Core::Icons::RUN_SMALL_TOOLBAR);
} }
void WinRtRunControl::start() void WinRtRunControl::start()

View File

@@ -5,6 +5,6 @@ HEADERS += $$PWD/registryaccess.h
LIBS *= -lpsapi LIBS *= -lpsapi
# PS API and registry functions # PS API and registry functions
win32-msvc* { msvc {
LIBS *= -ladvapi32 LIBS *= -ladvapi32
} }

View File

@@ -258,6 +258,20 @@ TEST_F(ClangCompletionContextAnalyzer, ParameteTwoWithSpaceAtCall)
ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClangAfterLeftParen, -5, -3, positionInText)); ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClangAfterLeftParen, -5, -3, positionInText));
} }
TEST_F(ClangCompletionContextAnalyzer, WhitespaceAfterFunctionName)
{
auto analyzer = runAnalyzer("foo (@");
ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClangAfterLeftParen, -5, 0, positionInText));
}
TEST_F(ClangCompletionContextAnalyzer, AfterOpeningParenthesis)
{
auto analyzer = runAnalyzer("(@");
ASSERT_THAT(analyzer, HasResult(CCA::PassThroughToLibClang, 0, 0, positionInText));
}
TEST_F(ClangCompletionContextAnalyzer, ParameteOneAtSignal) TEST_F(ClangCompletionContextAnalyzer, ParameteOneAtSignal)
{ {
auto analyzer = runAnalyzer("SIGNAL(@"); auto analyzer = runAnalyzer("SIGNAL(@");