aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2016-11-16 16:04:59 +0100
committerEike Ziller <eike.ziller@qt.io>2016-11-16 16:04:59 +0100
commit4026864f38488d40c5bf11310f8192b525373456 (patch)
tree4fc1dcc6431259a950c91c2db2ed4fb1c77a6991
parent6e17882bfc1c0ea5cc3f9e09ef8739b20153943e (diff)
parent82818cb90bde1dcc4dd1fa6c0c2c9608e61429c2 (diff)
Merge remote-tracking branch 'origin/4.2'
Conflicts: src/plugins/clangrefactoring/refactoringengine.cpp src/tools/clangrefactoringbackend/source/symbolfinder.cpp Change-Id: I7c1c87f3b8ade43a07f6668565501042e967fa8b
-rw-r--r--README.md5
-rw-r--r--doc/src/editors/creator-clang-codemodel.qdoc2
-rw-r--r--qbs/modules/libclang/functions.js4
-rw-r--r--share/qtcreator/debugger/dumper.py29
-rw-r--r--share/qtcreator/debugger/gdbbridge.py44
-rw-r--r--share/qtcreator/debugger/lldbbridge.py7
-rw-r--r--share/qtcreator/debugger/misctypes.py6
-rw-r--r--share/qtcreator/debugger/qttypes.py11
-rw-r--r--share/qtcreator/debugger/stdtypes.py9
-rw-r--r--share/qtcreator/themes/flat-dark.creatortheme2
-rw-r--r--share/qtcreator/themes/flat-light.creatortheme2
-rw-r--r--share/qtcreator/themes/flat.creatortheme2
-rw-r--r--share/qtcreator/translations/qtcreator_ru.ts613
-rw-r--r--share/qtcreator/welcomescreen/welcomescreen.qml10
-rw-r--r--src/libs/utils/mapreduce.h60
-rw-r--r--src/libs/utils/smallstringmemory.h8
-rw-r--r--src/plugins/autotest/autotest.qrc10
-rw-r--r--src/plugins/autotest/autotesticons.h34
-rw-r--r--src/plugins/autotest/autotestplugin.cpp1
-rw-r--r--src/plugins/autotest/images/blacklisted_fail.pngbin520 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/blacklisted_pass.pngbin519 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/debug.pngbin621 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/fail.pngbin600 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/fatal.pngbin597 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/pass.pngbin595 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/skip.pngbin368 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/warn.pngbin621 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/xfail.pngbin547 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/xpass.pngbin599 -> 0 bytes
-rw-r--r--src/plugins/autotest/testcodeparser.cpp29
-rw-r--r--src/plugins/autotest/testcodeparser.h6
-rw-r--r--src/plugins/autotest/testnavigationwidget.cpp2
-rw-r--r--src/plugins/autotest/testresultmodel.cpp29
-rw-r--r--src/plugins/autotest/testtreemodel.cpp5
-rw-r--r--src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp23
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp21
-rw-r--r--src/plugins/clangcodemodel/clangutils.h1
-rw-r--r--src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp4
-rw-r--r--src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h3
-rw-r--r--src/plugins/clangrefactoring/refactoringengine.cpp5
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp17
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.h4
-rw-r--r--src/plugins/coreplugin/actionmanager/actionmanager.cpp2
-rw-r--r--src/plugins/coreplugin/actionmanager/command.cpp2
-rw-r--r--src/plugins/coreplugin/editortoolbar.cpp6
-rw-r--r--src/plugins/cppeditor/cppquickfixes.cpp2
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp27
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.h7
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp4
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.cpp8
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.h4
-rw-r--r--src/plugins/debugger/debuggerdialogs.cpp4
-rw-r--r--src/plugins/debugger/debuggerkitinformation.cpp21
-rw-r--r--src/plugins/debugger/debuggerkitinformation.h13
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp6
-rw-r--r--src/plugins/debugger/debuggertooltipmanager.cpp7
-rw-r--r--src/plugins/debugger/debuggertooltipmanager.h1
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp5
-rw-r--r--src/plugins/projectexplorer/projectimporter.h2
-rw-r--r--src/plugins/projectexplorer/projectwindow.cpp12
-rw-r--r--src/plugins/projectexplorer/projectwindow.h1
-rw-r--r--src/plugins/projectexplorer/targetsetuppage.h3
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp24
-rw-r--r--src/plugins/welcome/welcomeplugin.cpp15
-rw-r--r--src/plugins/winrt/WinRt.json.in1
-rw-r--r--src/shared/clang/clang_installation.pri4
-rw-r--r--src/tools/clangrefactoringbackend/source/clangrefactoringbackend_global.h2
-rw-r--r--src/tools/clangrefactoringbackend/source/clangtool.cpp2
-rw-r--r--src/tools/clangrefactoringbackend/source/sourcelocationsutils.h2
-rw-r--r--tests/auto/debugger/tst_dumpers.cpp36
-rw-r--r--tests/auto/mapreduce/tst_mapreduce.cpp2
-rw-r--r--tests/unit/unittest/filesystem-utilities.h4
72 files changed, 693 insertions, 544 deletions
diff --git a/README.md b/README.md
index ef348fb758b..ad73f244a13 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,8 @@ Prerequisites:
* cmake
* On Mac OS X: latest Xcode
* On Linux: g++ 4.8 or later
-* LLVM 3.8.0 or later (optional, needed for the Clang Code Model)
+* LLVM 3.9.0 or later (optional, needed for the Clang Code Model)
+* Qbs 1.7.x (optional, sources also contain Qbs itself)
The installed toolchains have to match the one Qt was compiled with.
@@ -33,6 +34,8 @@ You can build Qt Creator with
# Optional, needed for the Clang Code Model:
export LLVM_INSTALL_DIR=/path/to/llvm (or "set" on Windows)
+ # Optional, needed to let the QbsProjectManager plugin use system Qbs:
+ export QBS_INSTALL_DIR=/path/to/qbs
cd $SOURCE_DIRECTORY
qmake -r
diff --git a/doc/src/editors/creator-clang-codemodel.qdoc b/doc/src/editors/creator-clang-codemodel.qdoc
index dbf90235c55..52b506ecf3d 100644
--- a/doc/src/editors/creator-clang-codemodel.qdoc
+++ b/doc/src/editors/creator-clang-codemodel.qdoc
@@ -132,7 +132,7 @@
\list 1
- \li Acquire Clang 3.8.0 or higher in one of the following ways:
+ \li Acquire Clang 3.9.0 or higher in one of the following ways:
\list
diff --git a/qbs/modules/libclang/functions.js b/qbs/modules/libclang/functions.js
index 49f2512423d..5ad07af8fa6 100644
--- a/qbs/modules/libclang/functions.js
+++ b/qbs/modules/libclang/functions.js
@@ -1,7 +1,7 @@
var Environment = loadExtension("qbs.Environment")
var File = loadExtension("qbs.File")
var FileInfo = loadExtension("qbs.FileInfo")
-var MinimumLLVMVersion = "3.8.0"
+var MinimumLLVMVersion = "3.9.0"
var Process = loadExtension("qbs.Process")
function readOutput(executable, args)
@@ -28,7 +28,7 @@ function llvmConfig(qbs, qtcFunctions)
{
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
var llvmConfigVariants = [
- "llvm-config", "llvm-config-3.8", "llvm-config-3.9", "llvm-config-4.0", "llvm-config-4.1"
+ "llvm-config", "llvm-config-3.9", "llvm-config-4.0", "llvm-config-4.1"
];
// Prefer llvm-config* from LLVM_INSTALL_DIR
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index b637eef4100..259cad968a7 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -574,7 +574,7 @@ class DumperBase:
res = []
for item in targs[::-1]:
c = ord(item[0])
- if c == '-' or (c >= 48 and c < 58):
+ if c in (45, 46) or (c >= 48 and c < 58): # '-', '.' or digit.
if item.find('.') > -1:
res.append(float(item))
else:
@@ -2759,6 +2759,20 @@ class DumperBase:
self.targetValue = None # For references.
self.isBaseClass = None
+ def copy(self):
+ val = self.dumper.Value(self.dumper)
+ val.dumper = self.dumper
+ val.name = self.name
+ val.type = self.type
+ val.ldata = self.ldata
+ val.laddress = self.laddress
+ val.lIsInScope = self.lIsInScope
+ val.ldisplay = self.ldisplay
+ val.lbitpos = self.lbitpos
+ val.lbitsize = self.lbitsize
+ val.targetValue = self.targetValue
+ return val
+
def check(self):
if self.laddress is not None and not self.dumper.isInt(self.laddress):
error('INCONSISTENT ADDRESS: %s' % type(self.laddress))
@@ -2848,12 +2862,18 @@ class DumperBase:
members = self.members(True)
for member in members:
#warn('CHECKING FIELD %s' % member.name)
+ if member.type.code == TypeCodeTypedef:
+ member = member.detypedef()
if member.name == name:
return member
for member in members:
#warn('CHECKING BASE %s' % member.name)
#if member.name == name:
# return member
+ if member.type.code == TypeCodeTypedef:
+ member = member.detypedef()
+ if member.name == name:
+ return member
if member.type.code == TypeCodeStruct:
res = member.findMemberByName(name)
if res is not None:
@@ -2979,6 +2999,9 @@ class DumperBase:
res = []
anonNumber = 0
for field in fields:
+ if isinstance(field, self.dumper.Value):
+ res.append(field)
+ continue
if field.isBaseClass and not includeBases:
continue
if field.name is None or len(field.name) == 0:
@@ -3029,10 +3052,8 @@ class DumperBase:
self.check()
if self.type.code != TypeCodeTypedef:
error("WRONG")
- val = self.dumper.Value(self.dumper)
+ val = self.copy()
val.type = self.type.ltarget
- val.ldata = self.ldata
- val.laddress = self.laddress
#warn("DETYPEDEF FROM: %s" % self)
#warn("DETYPEDEF TO: %s" % val)
return val
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index 9877c54c290..3612dcdb4fb 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -1014,30 +1014,34 @@ class Dumper(DumperBase):
if not self.currentQtNamespaceGuess is None:
return self.currentQtNamespaceGuess
- # This only works when called from a valid frame.
- try:
- cand = 'QArrayData::shared_null'
- symbol = gdb.lookup_symbol(cand)[0]
- if symbol:
- ns = symbol.name[:-len(cand)]
- self.qtNamespaceToReport = ns
- self.qtNamespace = lambda: ns
- return ns
- except:
- pass
+ for objfile in gdb.objfiles():
+ name = objfile.filename
+ if name.find('/libQt5Core') >= 0:
+ ns = ''
- try:
- # This is Qt, but not 5.x.
- cand = 'QByteArray::shared_null'
- symbol = gdb.lookup_symbol(cand)[0]
- if symbol:
- ns = symbol.name[:-len(cand)]
+ # This only works when called from a valid frame.
+ try:
+ cand = 'QArrayData::shared_null'
+ symbol = gdb.lookup_symbol(cand)[0]
+ if symbol:
+ ns = symbol.name[:-len(cand)]
+ except:
+ try:
+ # Some GDB 7.11.1 on Arch Linux.
+ cand = 'QArrayData::shared_null[0]'
+ val = gdb.parse_and_eval(cand)
+ if val.type is not None:
+ typeobj = val.type.unqualified()
+ ns = typeobj.name[:-len('QArrayData')]
+ except:
+ pass
+
+ # This might be wrong, but we can't do better: We found
+ # a libQt5Core and could not extract a namespace.
+ # The best guess is that there isn't any.
self.qtNamespaceToReport = ns
self.qtNamespace = lambda: ns
- self.fallbackQtVersion = 0x40800
return ns
- except:
- pass
self.currentQtNamespaceGuess = ''
return ''
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 51b9ce1babd..5f257fb324d 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -247,7 +247,7 @@ class Dumper(DumperBase):
if bitsize > 0:
#bitpos = bitpos % bitsize
bitpos = bitpos % 8 # Reported type is always wrapping type!
- fieldBits[f.name] = (bitsize, bitpos)
+ fieldBits[f.name] = (bitsize, bitpos, f.IsBitfield())
# Normal members and non-empty base classes.
for i in range(fakeValue.GetNumChildren()):
@@ -259,11 +259,12 @@ class Dumper(DumperBase):
nativeFieldType = nativeField.GetType()
if field.name in fieldBits:
- (field.lbitsize, field.lbitpos) = fieldBits[field.name]
+ (field.lbitsize, field.lbitpos, isBitfield) = fieldBits[field.name]
else:
field.lbitsize = nativeFieldType.GetByteSize() * 8
+ isBitfield = False
- if field.lbitsize != nativeFieldType.GetByteSize() * 8:
+ if isBitfield:
field.ltype = self.createBitfieldType(self.typeName(nativeFieldType), field.lbitsize)
else:
fakeMember = fakeValue.GetChildAtIndex(i)
diff --git a/share/qtcreator/debugger/misctypes.py b/share/qtcreator/debugger/misctypes.py
index e15844dc379..0abab3713a8 100644
--- a/share/qtcreator/debugger/misctypes.py
+++ b/share/qtcreator/debugger/misctypes.py
@@ -62,7 +62,7 @@ def qdump____m512d(d, value):
d.putArrayData(value.address(), 8, d.lookupType('double'))
def qdump____m128i(d, value):
- data = d.hexencode(value.data())
+ data = d.hexencode(value.data(16))
d.putValue(':'.join('%04x' % int(data[i:i+4], 16) for i in xrange(0, 32, 4)))
if d.isExpanded():
with Children(d):
@@ -73,7 +73,7 @@ def qdump____m128i(d, value):
d.putArrayItem('uint64x2', addr, 2, 'unsigned long long')
def qdump____m256i(d, value):
- data = d.hexencode(value.data())
+ data = d.hexencode(value.data(32))
d.putValue(':'.join('%04x' % int(data[i:i+4], 16) for i in xrange(0, 64, 4)))
if d.isExpanded():
with Children(d):
@@ -84,7 +84,7 @@ def qdump____m256i(d, value):
d.putArrayItem('uint64x4', addr, 4, 'unsigned long long')
def qdump____m512i(d, value):
- data = d.hexencode(value.data())
+ data = d.hexencode(value.data(64))
d.putValue(':'.join('%04x' % int(data[i:i+4], 16) for i in xrange(0, 64, 4))
+ ', ' + ':'.join('%04x' % int(data[i:i+4], 16) for i in xrange(64, 128, 4)))
if d.isExpanded():
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index 57a7ed57d07..65f4e1fbdd9 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -38,13 +38,9 @@ def qdump__QBasicAtomicInt(d, value):
def qdump__QAtomicPointer(d, value):
- d.putType(value.type)
- p = value.extractPointer()
- d.putValue('@0x%x' % p)
- d.putNumChild(1 if p else 0)
- if d.isExpanded():
- with Children(d):
- d.putSubItem('[pointee]', value.dereference())
+ d.putItem(value.cast(value.type[0].pointer()))
+ d.putBetterType(value.type)
+
def qform__QByteArray():
return [Latin1StringFormat, SeparateLatin1StringFormat,
@@ -1064,6 +1060,7 @@ def qdump__QRegExp(d, value):
privAddress = d.extractPointer(value)
(eng, pattern) = d.split('p{QString}', privAddress)
d.putStringValue(pattern)
+ d.putNumChild(1)
if d.isExpanded():
with Children(d):
d.call('void', value, 'capturedTexts') # Warm up internal cache.
diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py
index 77fc8812bb7..5fa4522cfe5 100644
--- a/share/qtcreator/debugger/stdtypes.py
+++ b/share/qtcreator/debugger/stdtypes.py
@@ -511,10 +511,17 @@ def qdump__std____1__map__const_iterator(d, value):
def qdump__std____1__set__iterator(d, value):
d.putEmptyValue()
+ d.putNumChild(1)
+ if value.type.name.endswith("::iterator"):
+ treeTypeName = value.type.name[:-len("::iterator")]
+ elif value.type.name.endswith("::const_iterator"):
+ treeTypeName = value.type.name[:-len("::const_iterator")]
+ treeType = d.lookupType(treeTypeName)
+ keyType = treeType[0]
if d.isExpanded():
with Children(d):
node = value['__ptr_'].dereference()['__value_']
- node = node.cast(value.type[0])
+ node = node.cast(keyType)
d.putSubItem('value', node)
def qdump__std____1__set_const_iterator(d, value):
diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme
index bf3b181a28f..5e8f7d3e11f 100644
--- a/share/qtcreator/themes/flat-dark.creatortheme
+++ b/share/qtcreator/themes/flat-dark.creatortheme
@@ -124,7 +124,7 @@ TextColorHighlight=ffff0000
TextColorLink=textColorLink
TextColorLinkVisited=textColorLinkVisited
TextColorNormal=text
-TodoItemTextColor=text
+TodoItemTextColor=ff000000
ToggleButtonBackgroundColor=shadowBackground
ToolBarBackgroundColor=shadowBackground
TreeViewArrowColorNormal=hoverBackground
diff --git a/share/qtcreator/themes/flat-light.creatortheme b/share/qtcreator/themes/flat-light.creatortheme
index ae978557363..18746658a13 100644
--- a/share/qtcreator/themes/flat-light.creatortheme
+++ b/share/qtcreator/themes/flat-light.creatortheme
@@ -122,7 +122,7 @@ TextColorHighlight=ffff0000
TextColorLink=ff007af4
TextColorLinkVisited=ffa57aff
TextColorNormal=text
-TodoItemTextColor=text
+TodoItemTextColor=ff000000
ToggleButtonBackgroundColor=shadowBackground
ToolBarBackgroundColor=shadowBackground
TreeViewArrowColorNormal=hoverBackground
diff --git a/share/qtcreator/themes/flat.creatortheme b/share/qtcreator/themes/flat.creatortheme
index a4790bbbcc4..472353a6ac7 100644
--- a/share/qtcreator/themes/flat.creatortheme
+++ b/share/qtcreator/themes/flat.creatortheme
@@ -120,7 +120,7 @@ TextColorHighlight=ffff0000
TextColorLink=ff007af4
TextColorLinkVisited=ffa57aff
TextColorNormal=text
-TodoItemTextColor=text
+TodoItemTextColor=ff000000
ToggleButtonBackgroundColor=shadowBackground
ToolBarBackgroundColor=shadowBackground
TreeViewArrowColorNormal=hoverBackground
diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts
index 9c618509070..7ada6cbbc78 100644
--- a/share/qtcreator/translations/qtcreator_ru.ts
+++ b/share/qtcreator/translations/qtcreator_ru.ts
@@ -2,177 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="ru">
<context>
- <name></name>
- <message>
- <source>Zoom In</source>
- <translation>Увеличить</translation>
- </message>
- <message>
- <source>Zoom In (Ctrl + + / Ctrl + Wheel)</source>
- <translation>Увеличить (Ctrl++ / Ctrl+Колёсико)</translation>
- </message>
- <message>
- <source>Zoom Out</source>
- <translation>Уменьшить</translation>
- </message>
- <message>
- <source>Zoom Out (Ctrl + - / Ctrl + Wheel)</source>
- <translation>Уменьшить (Ctrl+- / Ctrl+Колёсико)</translation>
- </message>
- <message>
- <source>Fit to View</source>
- <translation>Растянуть на окно</translation>
- </message>
- <message>
- <source>Fit to View (F11)</source>
- <translation>Растянуть на окно (F11)</translation>
- </message>
- <message>
- <source>Panning</source>
- <translation>Панорамирование</translation>
- </message>
- <message>
- <source>Panning (Shift)</source>
- <translation>Панорамирование (Shift)</translation>
- </message>
- <message>
- <source>Magnifier</source>
- <translation>Лупа</translation>
- </message>
- <message>
- <source>Magnifier Tool (Alt)</source>
- <translation>Лупа (Alt)</translation>
- </message>
- <message>
- <source>Navigator</source>
- <translation>Навигатор</translation>
- </message>
- <message>
- <source>Navigator (Ctrl+E)</source>
- <translation>Навигатор (Ctrl+E)</translation>
- </message>
- <message>
- <source>Copy</source>
- <translation>Копировать</translation>
- </message>
- <message>
- <source>Copy (Ctrl + C)</source>
- <translation>Копировать (Ctrl+C)</translation>
- </message>
- <message>
- <source>Cut</source>
- <translation>Вырезать</translation>
- </message>
- <message>
- <source>Cut (Ctrl + X)</source>
- <translation>Вырезать (Ctrl+X)</translation>
- </message>
- <message>
- <source>Paste</source>
- <translation>Вставить</translation>
- </message>
- <message>
- <source>Paste (Ctrl + V)</source>
- <translation>Вставить (Ctrl+V)</translation>
- </message>
- <message>
- <source>Screenshot</source>
- <translation>Снимок экрана</translation>
- </message>
- <message>
- <source>Screenshot (Ctrl + Shift + C)</source>
- <translation>Снимок экрана (Ctrl+Shift+C)</translation>
- </message>
- <message>
- <source>Export to Image</source>
- <translation>В изображение</translation>
- </message>
- <message>
- <source>Toggle Full Namespace</source>
- <translation>Переключить пространство имён</translation>
- </message>
- <message>
- <source>Align Left</source>
- <translation>По левому краю</translation>
- </message>
- <message>
- <source>Align Left (Ctrl+L,1)</source>
- <translation>По левому краю (Ctrl + L,1)</translation>
- </message>
- <message>
- <source>Align Right</source>
- <translation>По правому краю</translation>
- </message>
- <message>
- <source>Align Right (Ctrl+L,2)</source>
- <translation>По правому краю (Ctrl+L,2)</translation>
- </message>
- <message>
- <source>Align Top</source>
- <translation>По верху</translation>
- </message>
- <message>
- <source>Align Top (Ctrl+L,3)</source>
- <translation>По верху (Ctrl+L,3)</translation>
- </message>
- <message>
- <source>Align Bottom</source>
- <translation>По низу</translation>
- </message>
- <message>
- <source>Align Bottom (Ctrl+L,4)</source>
- <translation>По низу (Ctrl+L,4)</translation>
- </message>
- <message>
- <source>Align Horizontal</source>
- <translation>Выравнить гоизонтально</translation>
- </message>
- <message>
- <source>Align Horizontal (Ctrl+L,5)</source>
- <translation>Выравнить гоизонтально (Ctrl+L,5)</translation>
- </message>
- <message>
- <source>Align Vertical</source>
- <translation>Выравнить вертикально</translation>
- </message>
- <message>
- <source>Align Vertical (Ctrl+L,6)</source>
- <translation>Выравнить гоизонтально (Ctrl+L,6)</translation>
- </message>
- <message>
- <source>Adjust Width</source>
- <translation>Подогнать ширину</translation>
- </message>
- <message>
- <source>Adjust Width (Ctrl+L,7)</source>
- <translation>Подогнать ширину (Ctrl+L,7)</translation>
- </message>
- <message>
- <source>Adjust Height</source>
- <translation>Подогнать высоту</translation>
- </message>
- <message>
- <source>Adjust Height (Ctrl+L,8)</source>
- <translation>Подогнать высоту (Ctrl+L,8)</translation>
- </message>
- <message>
- <source>Adjust Size</source>
- <translation>Подогнать размер</translation>
- </message>
- <message>
- <source>Adjust Size (Ctrl+L,9)</source>
- <translation>Подогнать размер (Ctrl+L,9)</translation>
- </message>
- <message>
- <source>Show Statistics...</source>
- <translation>Показать статистику...</translation>
- </message>
- <message>
- <source>Show Statistics</source>
- <translation>Показать статистику</translation>
- </message>
-</context>
-<context>
<name>AddSignalHandlerDialog</name>
<message>
<source>Implement Signal Handler</source>
@@ -4129,7 +3958,7 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<translation>Генератор CMake не создаёт файл CodeBlocks. Qt Creator не сможет обрабатывать проект CMake.</translation>
</message>
<message>
- <source>Generator: %1&lt;br&gt;Extra Generator: %2</source>
+ <source>Generator: %1&lt;br&gt;Extra generator: %2</source>
<translation>Генератор: %1&lt;br&gt;Дополнительный генератор: %2</translation>
</message>
<message>
@@ -4259,8 +4088,8 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<translation>Настройка «%1»</translation>
</message>
<message>
- <source>*** cmake process crashed!</source>
- <translation>*** процесс cmake аварийно завершился!</translation>
+ <source>*** cmake process crashed.</source>
+ <translation>*** процесс cmake аварийно завершился.</translation>
</message>
<message>
<source>*** cmake process exited with exit code %1.</source>
@@ -4454,7 +4283,7 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<translation>Изменить...</translation>
</message>
<message>
- <source>CMake Generator:</source>
+ <source>CMake generator:</source>
<translation>Генератор CMake:</translation>
</message>
<message>
@@ -4474,7 +4303,7 @@ For example, &quot;Revision: 15&quot; will leave the branch at revision 15.</sou
<translation>Генератор:</translation>
</message>
<message>
- <source>Extra Generator:</source>
+ <source>Extra generator:</source>
<translation>Дополнительный генератор:</translation>
</message>
<message>
@@ -8627,6 +8456,10 @@ Do you want to kill it?</source>
<context>
<name>Core::Internal::ThemeChooser</name>
<message>
+ <source>Current theme: %1</source>
+ <translation>Текущая тема: %1</translation>
+ </message>
+ <message>
<source>Restart Required</source>
<translation>Требуется перезапуск</translation>
</message>
@@ -11100,10 +10933,6 @@ Flags: %3</source>
<translation>Пут&amp;ь:</translation>
</message>
<message>
- <source>&lt;p&gt;Specifying the module (base name of the library or executable) for function or file type breakpoints can significantly speed up debugger start-up times (CDB, LLDB).</source>
- <translation>&lt;p&gt;Указание модуля (имени библиотеки или программы) для точек останова на функциях или исходниках может значительно повысить скорость запуска отладчика (CDB, LLDB).</translation>
- </message>
- <message>
<source>&amp;Module:</source>
<translation>&amp;Модуль:</translation>
</message>
@@ -11160,14 +10989,6 @@ Flags: %3</source>
<translation>Изменить выбранные точки останова...</translation>
</message>
<message>
- <source>Associate Breakpoint With All Threads</source>
- <translation>Сопоставить точку останова со всеми потоками</translation>
- </message>
- <message>
- <source>Associate Breakpoint With Thread %1</source>
- <translation>Сопоставить точку останова с потоком %1</translation>
- </message>
- <message>
<source>Disable Selected Breakpoints</source>
<translation>Деактивировать выбранные точки останова</translation>
</message>
@@ -11320,6 +11141,14 @@ Flags: %3</source>
<translation>Имя функции:</translation>
</message>
<message>
+ <source>Associate Breakpoint with All Threads</source>
+ <translation>Сопоставить точку останова со всеми потоками</translation>
+ </message>
+ <message>
+ <source>Associate Breakpoint with Thread %1</source>
+ <translation>Сопоставить точку останова с потоком %1</translation>
+ </message>
+ <message>
<source>Line Number:</source>
<translation>Номер строки:</translation>
</message>
@@ -11360,6 +11189,10 @@ Flags: %3</source>
<translation>Точка остановка на инициировании сигнала QML</translation>
</message>
<message>
+ <source>&lt;p&gt;Specifying the module (base name of the library or executable) for function or file type breakpoints can significantly speed up debugger startup times (CDB, LLDB).</source>
+ <translation>&lt;p&gt;Указание модуля (имени библиотеки или программы) для точек останова на функциях или исходниках может значительно повысить скорость запуска отладчика (CDB, LLDB).</translation>
+ </message>
+ <message>
<source>Function</source>
<translation>Функция</translation>
</message>
@@ -11624,17 +11457,6 @@ Flags: %3</source>
<context>
<name>Debugger::Internal::CommonOptionsPage</name>
<message>
- <source>Stop when %1() is called</source>
- <translation>Остановиться на вызове %1()</translation>
- </message>
- <message>
- <source>Always adds a breakpoint on the &lt;i&gt;%1()&lt;/i&gt; function.</source>
- <translation>Всегда устанавливать точку останова на функцию &lt;i&gt;%1()&lt;/i&gt;.</translation>
- </message>
-</context>
-<context>
- <name>Debugger::Internal::CommonOptionsPageWidget</name>
- <message>
<source>Behavior</source>
<translation>Поведение</translation>
</message>
@@ -11643,40 +11465,16 @@ Flags: %3</source>
<translation>Чередование цвета строк в представлении отладчика</translation>
</message>
<message>
- <source>Debugger font size follows main editor</source>
- <translation>Размер шрифта отладчика соответствует редактору</translation>
- </message>
- <message>
- <source>Use tooltips in main editor while debugging</source>
- <translation>Использовать подсказки в основном редакторе при отладке</translation>
- </message>
- <message>
<source>Changes the font size in the debugger views when the font size in the main editor changes.</source>
<translation>Менять размер шрифта в окне отладчика при изменении его в основном окне редактора.</translation>
</message>
<message>
- <source>Switch to previous mode on debugger exit</source>
- <translation>Переключаться в предыдущий режим при завершении отладчика</translation>
- </message>
- <message>
- <source>Bring Qt Creator to foreground when application interrupts</source>
- <translation>Переходить в окно Qt Creator при прерывании приложения</translation>
- </message>
- <message>
- <source>Enables a full file path in breakpoints by default also for GDB.</source>
- <translation>Включение полного пути к исходным файлам для точек останова так же для GDB.</translation>
- </message>
- <message>
- <source>Registers Qt Creator for debugging crashed applications.</source>
- <translation>Зарегистрировать Qt Creator для отладки приложений, завершённых аварийно.</translation>
- </message>
- <message>
- <source>Shows a warning when starting the debugger on a binary with insufficient debug information.</source>
- <translation>Показывать предупреждение при запуске отладчика на программе без отладочной информации.</translation>
+ <source>Debugger font size follows main editor</source>
+ <translation>Размер шрифта отладчика соответствует редактору</translation>
</message>
<message>
- <source>Show QML object tree</source>
- <translation>Показывать дерево объектов QML</translation>
+ <source>Use tooltips in main editor while debugging</source>
+ <translation>Использовать подсказки в основном редакторе при отладке</translation>
</message>
<message>
<source>Stopping and stepping in the debugger will automatically open views associated with the current location.</source>
@@ -11699,14 +11497,34 @@ Flags: %3</source>
<translation>Включение закрытия автоматически открытых обзоров памяти при завершении отладки.</translation>
</message>
<message>
+ <source>Switch to previous mode on debugger exit</source>
+ <translation>Переключаться в предыдущий режим при завершении отладчика</translation>
+ </message>
+ <message>
+ <source>Bring Qt Creator to foreground when application interrupts</source>
+ <translation>Переходить в окно Qt Creator при прерывании приложения</translation>
+ </message>
+ <message>
<source>Shows QML object tree in Locals and Expressions when connected and not stepping.</source>
<translation>Показывать дерево объектов QML в окне «Переменные и выражения» при подключении, но не при пошаговой отладке.</translation>
</message>
<message>
+ <source>Show QML object tree</source>
+ <translation>Показывать дерево объектов QML</translation>
+ </message>
+ <message>
+ <source>Enables a full file path in breakpoints by default also for GDB.</source>
+ <translation>Включение по умолчанию полного пути к исходным файлам для точек останова также и для GDB.</translation>
+ </message>
+ <message>
<source>Set breakpoints using a full absolute path</source>
<translation>Задавать полный путь к точкам останова</translation>
</message>
<message>
+ <source>Registers Qt Creator for debugging crashed applications.</source>
+ <translation>Зарегистрировать Qt Creator для отладки приложений, завершённых аварийно.</translation>
+ </message>
+ <message>
<source>Use Qt Creator for post-mortem debugging</source>
<translation>Назначить Qt Creator системным отладчиком</translation>
</message>
@@ -11715,6 +11533,10 @@ Flags: %3</source>
<translation>Предупреждать при отладке «выпускаемых» сборок</translation>
</message>
<message>
+ <source>Shows a warning when starting the debugger on a binary with insufficient debug information.</source>
+ <translation>Показывать предупреждение при запуске отладчика на программе без отладочной информации.</translation>
+ </message>
+ <message>
<source>Keep editor stationary when stepping</source>
<translation>Сохранять позицию редактора при пошаговой отладке</translation>
</message>
@@ -11730,6 +11552,14 @@ Flags: %3</source>
<source>&lt;unlimited&gt;</source>
<translation>&lt;бесконечна&gt;</translation>
</message>
+ <message>
+ <source>Stop when %1() is called</source>
+ <translation>Остановиться на вызове %1()</translation>
+ </message>
+ <message>
+ <source>Always adds a breakpoint on the &lt;i&gt;%1()&lt;/i&gt; function.</source>
+ <translation>Всегда устанавливать точку останова на функцию &lt;i&gt;%1()&lt;/i&gt;.</translation>
+ </message>
</context>
<context>
<name>Debugger::Internal::Console</name>
@@ -13939,7 +13769,7 @@ Do you want to retry?</source>
<translation>Шестнадцатеричный</translation>
</message>
<message>
- <source>DecimalFormat</source>
+ <source>Decimal</source>
<translation>Десятичный</translation>
</message>
<message>
@@ -14675,6 +14505,18 @@ Do you want to retry?</source>
<translation>Автоматический</translation>
</message>
<message>
+ <source>Note: Evaluators will be re-evaluated after each step. For details, see the &lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-debug-mode.html#locals-and-expressions&quot;&gt;documentation&lt;/a&gt;.</source>
+ <translation>Замечание: выражения вычисляются после каждого шага. Подробнее читайте в &lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-debug-mode.html#locals-and-expressions&quot;&gt;документации&lt;/a&gt;.</translation>
+ </message>
+ <message>
+ <source>Stop the program when the data at the address is modified.</source>
+ <translation>Останавливать программу при изменении данных по указанному адресу.</translation>
+ </message>
+ <message>
+ <source>Stop the program when the data at the address given by the expression is modified.</source>
+ <translation>Останавливать программу при изменении данных по адресу, заданному выражением.</translation>
+ </message>
+ <message>
<source>Raw Data</source>
<translation>Сырые данные</translation>
</message>
@@ -14761,10 +14603,6 @@ Do you want to retry?</source>
<translation>Введите выражение для вычисления.</translation>
</message>
<message>
- <source>Note: Evaluators will be re-evaluated after each step. For details check the &lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-debug-mode.html#locals-and-expressions&quot;&gt;documentation&lt;/a&gt;.</source>
- <translation>Замечание: выражения вычисляются после каждого шага. Подробнее читайте в &lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-debug-mode.html#locals-and-expressions&quot;&gt;документации&lt;/a&gt;.</translation>
- </message>
- <message>
<source>New Evaluated Expression</source>
<translation>Новое вычисляемое выражение</translation>
</message>
@@ -14809,10 +14647,6 @@ Do you want to retry?</source>
<translation>Добавить контрольную точку на адрес объекта (0x%1)</translation>
</message>
<message>
- <source>Setting a data breakpoint on an address will cause the program to stop when the data at the address is modified.</source>
- <translation>Установка контрольной точки на адрес приведёт к остановке программы при изменении данных по этому адресу.</translation>
- </message>
- <message>
<source>Add Data Breakpoint at Pointer&apos;s Address (0x%1)</source>
<translation>Добавить контрольную точку по адресу указателя (0x%1)</translation>
</message>
@@ -14829,10 +14663,6 @@ Do you want to retry?</source>
<translation>Добавить контрольную точку на вычисляемый адрес</translation>
</message>
<message>
- <source>Setting a data breakpoint on an expression will cause the program to stop when the data at the address given by the expression is modified.</source>
- <translation>Установка контрольной точки на адрес приведёт к остановке программы при изменении данных по этому адресу.</translation>
- </message>
- <message>
<source>Open Memory Editor</source>
<translation>Открыть редактор памяти</translation>
</message>
@@ -17542,6 +17372,10 @@ Would you like to terminate it?</source>
<translation>скопирован</translation>
</message>
<message>
+ <source>typechange</source>
+ <translation>смена типа</translation>
+ </message>
+ <message>
<source> by both</source>
<translation> обоими</translation>
</message>
@@ -20352,38 +20186,6 @@ Ids must begin with a lowercase letter.</source>
<source>Simulator application process error %1</source>
<translation>Приложение из эмулятора вернуло ошибку %1</translation>
</message>
- <message>
- <source>Application install on Simulator failed. %1</source>
- <translation>Не удалось установить приложение на эмулятор. %1</translation>
- </message>
- <message>
- <source>Application install on Simulator failed. Simulator not running.</source>
- <translation>Не удалось установить приложение на эмулятор. Он не запущен.</translation>
- </message>
- <message>
- <source>Application launch on Simulator failed. Invalid Bundle path %1</source>
- <translation>Запуск приложения на эмуляторе не удался. Неверный путь пакета %1</translation>
- </message>
- <message>
- <source>Spawning the Application process on Simulator failed.</source>
- <translation>Не удалось породить процесс приложения на эмуляторе.</translation>
- </message>
- <message>
- <source>Application launch on Simulator failed. Simulator not running.</source>
- <translation>Не удалось запустить приложение на эмуляторе. Он не запущен.</translation>
- </message>
- <message>
- <source>Application launch on Simulator failed. %1</source>
- <translation>Запуск приложения на эмуляторе не удался. %1</translation>
- </message>
- <message>
- <source>Spawning the Application process on Simulator failed. Spawning timed out.</source>
- <translation>Не удалось породить процесс приложения на эмуляторе. Время порождения истекло.</translation>
- </message>
- <message>
- <source>Simulator application process error %1</source>
- <translation>Приложение из эмулятора вернуло ошибку %1</translation>
- </message>
</context>
<context>
<name>IosDeployStepWidget</name>
@@ -21403,6 +21205,10 @@ Ids must begin with a lowercase letter.</source>
<translation>Исходник Nim</translation>
</message>
<message>
+ <source>Nim script file </source>
+ <translation>Файл сценария Nim</translation>
+ </message>
+ <message>
<source>Qt Creator Python project file</source>
<translation>Проект Qt Creator для Python</translation>
</message>
@@ -21423,6 +21229,14 @@ Ids must begin with a lowercase letter.</source>
<translation>Файл QML</translation>
</message>
<message>
+ <source>Linguist compiled translations</source>
+ <translation>Скомпилированные переводы Linguist</translation>
+ </message>
+ <message>
+ <source>Linguist source translations</source>
+ <translation>Исходные переводы Linguist</translation>
+ </message>
+ <message>
<source>SCXML State Chart</source>
<translation>Диаграмма состояний SCXML</translation>
</message>
@@ -21503,14 +21317,6 @@ Ids must begin with a lowercase letter.</source>
<translation>Файл проекта QML</translation>
</message>
<message>
- <source>Linguist translated messages (machine-readable)</source>
- <translation>Сообщения переведенные через Linguist (удобные для машины)</translation>
- </message>
- <message>
- <source>Linguist message catalog</source>
- <translation>Каталог сообщений Linguist</translation>
- </message>
- <message>
<source>Qt Resource file</source>
<translation>Файл ресурсов Qt</translation>
</message>
@@ -24524,11 +24330,11 @@ cannot be found in the path.</source>
<translation>Имя в файловой системе:</translation>
</message>
<message>
- <source>Select a file as icon</source>
- <translation>Выберите файл значка</translation>
+ <source>Select Icon File</source>
+ <translation>Выбор файла значка</translation>
</message>
<message>
- <source>Reset to the device default icon</source>
+ <source>Reset to Device Default Icon</source>
<translation>Назначить стандартный для устройства значок</translation>
</message>
<message>
@@ -24960,6 +24766,14 @@ to project &quot;%2&quot;.</source>
<translation>Проекты</translation>
</message>
<message>
+ <source>Import Existing Build...</source>
+ <translation>Импорт сборки...</translation>
+ </message>
+ <message>
+ <source>Manage Kits...</source>
+ <translation>Управление...</translation>
+ </message>
+ <message>
<source>Import directory</source>
<translation>Импортируемый каталог</translation>
</message>
@@ -25112,17 +24926,6 @@ to project &quot;%2&quot;.</source>
</message>
</context>
<context>
- <name>ProjectExplorer::Internal::SelectorModel</name>
- <message>
- <source>Import Existing Build...</source>
- <translation>Импорт сборки...</translation>
- </message>
- <message>
- <source>Manage Kits...</source>
- <translation>Управление...</translation>
- </message>
-</context>
-<context>
<name>ProjectExplorer::Internal::SessionDialog</name>
<message>
<source>Session Manager</source>
@@ -26182,7 +25985,7 @@ Preselects a desktop Qt for building the application if available.</source>
</message>
<message>
<source>Material</source>
- <translation type="unfinished">Материальный</translation>
+ <translation>Материальный</translation>
</message>
<message>
<source>Universal</source>
@@ -26317,6 +26120,14 @@ Preselects a desktop Qt for building the application if available.</source>
<translation>Файл Nim</translation>
</message>
<message>
+ <source>Creates an empty Nim script file using UTF-8 charset.</source>
+ <translation>Создание пустого файла сценария Nim с использованием кодировки UTF-8.</translation>
+ </message>
+ <message>
+ <source>Nim Script File</source>
+ <translation>Файл сценария Nim</translation>
+ </message>
+ <message>
<source>State Chart Name and Location</source>
<translation>Название и размещение диаграммы состояний</translation>
</message>
@@ -28653,9 +28464,8 @@ These files are preserved.</source>
<context>
<name>QbsProjectManager::Internal::QbsProject</name>
<message>
- <source>Failed!</source>
- <translatorcomment>Очень плохое сообщение, скорее всего не дописали</translatorcomment>
- <translation>Ошибка</translation>
+ <source>Failed</source>
+ <translation>Сбой</translation>
</message>
<message>
<source>Could not write project file %1.</source>
@@ -30203,12 +30013,12 @@ Neither the path to the library nor the path to its includes is added to the .pr
<translation>Закрытие сетевого соединения</translation>
</message>
<message>
- <source>Socket state changed to BoundState. This should not happen!</source>
- <translation>Состояние сокета изменилось на BoundState. Это не должно было произойти!</translation>
+ <source>Socket state changed to BoundState. This should not happen.</source>
+ <translation>Состояние сокета изменилось на BoundState. Это не должно было произойти.</translation>
</message>
<message>
- <source>Socket state changed to ListeningState. This should not happen!</source>
- <translation>Состояние сокета изменилось на ListeningState. Это не должно было произойти!</translation>
+ <source>Socket state changed to ListeningState. This should not happen.</source>
+ <translation>Состояние сокета изменилось на ListeningState. Это не должно было произойти.</translation>
</message>
<message>
<source>Unknown state %1</source>
@@ -31628,7 +31438,7 @@ This is independent of the visibility property in QML.</source>
<translation>Файл или каталог не найден.</translation>
</message>
<message>
- <source>QML module not found(%1).
+ <source>QML module not found (%1).
Import paths:
%2
@@ -33474,8 +33284,8 @@ Do you want to retry?</source>
Повторить?</translation>
</message>
<message>
- <source>Failed to connect!</source>
- <translation>Не удалось подключиться!</translation>
+ <source>Failed to connect.</source>
+ <translation>Не удалось подключиться.</translation>
</message>
<message>
<source>Disable Profiling</source>
@@ -36407,6 +36217,177 @@ Description: %4</source>
</message>
</context>
<context>
+ <name>ScxmlEditor::PluginInterface::ActionHandler</name>
+ <message>
+ <source>Zoom In</source>
+ <translation>Увеличить</translation>
+ </message>
+ <message>
+ <source>Zoom In (Ctrl + + / Ctrl + Wheel)</source>
+ <translation>Увеличить (Ctrl++ / Ctrl+Колёсико)</translation>
+ </message>
+ <message>
+ <source>Zoom Out</source>
+ <translation>Уменьшить</translation>
+ </message>
+ <message>
+ <source>Zoom Out (Ctrl + - / Ctrl + Wheel)</source>
+ <translation>Уменьшить (Ctrl+- / Ctrl+Колёсико)</translation>
+ </message>
+ <message>
+ <source>Fit to View</source>
+ <translation>Растянуть на окно</translation>
+ </message>
+ <message>
+ <source>Fit to View (F11)</source>
+ <translation>Растянуть на окно (F11)</translation>
+ </message>
+ <message>
+ <source>Panning</source>
+ <translation>Панорамирование</translation>
+ </message>
+ <message>
+ <source>Panning (Shift)</source>
+ <translation>Панорамирование (Shift)</translation>
+ </message>
+ <message>
+ <source>Magnifier</source>
+ <translation>Лупа</translation>
+ </message>
+ <message>
+ <source>Magnifier Tool (Alt)</source>
+ <translation>Лупа (Alt)</translation>
+ </message>
+ <message>
+ <source>Navigator</source>
+ <translation>Навигатор</translation>
+ </message>
+ <message>
+ <source>Navigator (Ctrl+E)</source>
+ <translation>Навигатор (Ctrl+E)</translation>
+ </message>
+ <message>
+ <source>Copy</source>
+ <translation>Копировать</translation>
+ </message>
+ <message>
+ <source>Copy (Ctrl + C)</source>
+ <translation>Копировать (Ctrl+C)</translation>
+ </message>
+ <message>
+ <source>Cut</source>
+ <translation>Вырезать</translation>
+ </message>
+ <message>
+ <source>Cut (Ctrl + X)</source>
+ <translation>Вырезать (Ctrl+X)</translation>
+ </message>
+ <message>
+ <source>Paste</source>
+ <translation>Вставить</translation>
+ </message>
+ <message>
+ <source>Paste (Ctrl + V)</source>
+ <translation>Вставить (Ctrl+V)</translation>
+ </message>
+ <message>
+ <source>Screenshot</source>
+ <translation>Снимок экрана</translation>
+ </message>
+ <message>
+ <source>Screenshot (Ctrl + Shift + C)</source>
+ <translation>Снимок экрана (Ctrl+Shift+C)</translation>
+ </message>
+ <message>
+ <source>Export to Image</source>
+ <translation>В изображение</translation>
+ </message>
+ <message>
+ <source>Toggle Full Namespace</source>
+ <translation>Переключить пространство имён</translation>
+ </message>
+ <message>
+ <source>Align Left</source>
+ <translation>По левому краю</translation>
+ </message>
+ <message>
+ <source>Align Left (Ctrl+L,1)</source>
+ <translation>По левому краю (Ctrl + L,1)</translation>
+ </message>
+ <message>
+ <source>Align Right</source>
+ <translation>По правому краю</translation>
+ </message>
+ <message>
+ <source>Align Right (Ctrl+L,2)</source>
+ <translation>По правому краю (Ctrl+L,2)</translation>
+ </message>
+ <message>
+ <source>Align Top</source>
+ <translation>По верху</translation>
+ </message>
+ <message>
+ <source>Align Top (Ctrl+L,3)</source>
+ <translation>По верху (Ctrl+L,3)</translation>
+ </message>
+ <message>
+ <source>Align Bottom</source>
+ <translation>По низу</translation>
+ </message>
+ <message>
+ <source>Align Bottom (Ctrl+L,4)</source>
+ <translation>По низу (Ctrl+L,4)</translation>
+ </message>
+ <message>
+ <source>Align Horizontal</source>
+ <translation>Выравнить гоизонтально</translation>
+ </message>
+ <message>
+ <source>Align Horizontal (Ctrl+L,5)</source>
+ <translation>Выравнить гоизонтально (Ctrl+L,5)</translation>
+ </message>
+ <message>
+ <source>Align Vertical</source>
+ <translation>Выравнить вертикально</translation>
+ </message>
+ <message>
+ <source>Align Vertical (Ctrl+L,6)</source>
+ <translation>Выравнить гоизонтально (Ctrl+L,6)</translation>
+ </message>
+ <message>
+ <source>Adjust Width</source>
+ <translation>Подогнать ширину</translation>
+ </message>
+ <message>
+ <source>Adjust Width (Ctrl+L,7)</source>
+ <translation>Подогнать ширину (Ctrl+L,7)</translation>
+ </message>
+ <message>
+ <source>Adjust Height</source>
+ <translation>Подогнать высоту</translation>
+ </message>
+ <message>
+ <source>Adjust Height (Ctrl+L,8)</source>
+ <translation>Подогнать высоту (Ctrl+L,8)</translation>
+ </message>
+ <message>
+ <source>Adjust Size</source>
+ <translation>Подогнать размер</translation>
+ </message>
+ <message>
+ <source>Adjust Size (Ctrl+L,9)</source>
+ <translation>Подогнать размер (Ctrl+L,9)</translation>
+ </message>
+ <message>
+ <source>Show Statistics...</source>
+ <translation>Показать статистику...</translation>
+ </message>
+ <message>
+ <source>Show Statistics</source>
+ <translation>Показать статистику</translation>
+ </message>
+</context>
+<context>
<name>ScxmlEditor::PluginInterface::BaseItem</name>
<message>
<source>Add child</source>
@@ -36981,11 +36962,11 @@ with a password, which you can enter below.</source>
<context>
<name>StatesDelegate</name>
<message>
- <source>Set when condition</source>
+ <source>Set when Condition</source>
<translation>Задать условие when</translation>
</message>
<message>
- <source>Reset when condition</source>
+ <source>Reset when Condition</source>
<translation>Сбросить условие when</translation>
</message>
</context>
@@ -37589,9 +37570,13 @@ with a password, which you can enter below.</source>
<source>Aborting replace.</source>
<translation>Прерывание замены.</translation>
</message>
- <message>
- <source>%1 found</source>
- <translation>найдено: %1</translation>
+ <message numerus="yes">
+ <source>%n found</source>
+ <translation>
+ <numerusform>%n найден</numerusform>
+ <numerusform>%n найдено</numerusform>
+ <numerusform>%n найдено</numerusform>
+ </translation>
</message>
</context>
<context>
@@ -43537,6 +43522,10 @@ should a repository require SSH-authentication (see documentation on SSH and the
<translation>Автоширина</translation>
</message>
<message>
+ <source>&lt;font color=red&gt;Invalid syntax.&lt;/font&gt;</source>
+ <translation>&lt;font color=red&gt;Неверный синтаксис.&lt;/font&gt;</translation>
+ </message>
+ <message>
<source>Box</source>
<translation>Коробкой</translation>
</message>
@@ -43577,10 +43566,6 @@ should a repository require SSH-authentication (see documentation on SSH and the
<translation>Границы</translation>
</message>
<message>
- <source>&lt;font color=red&gt;Invalid syntax!&lt;/font&gt;</source>
- <translation>&lt;font color=red&gt;Неверный синтаксис!&lt;/font&gt;</translation>
- </message>
- <message>
<source>Multi-Selection</source>
<translation>Множественное выделение</translation>
</message>
diff --git a/share/qtcreator/welcomescreen/welcomescreen.qml b/share/qtcreator/welcomescreen/welcomescreen.qml
index 62f3ccee547..36489f8e13b 100644
--- a/share/qtcreator/welcomescreen/welcomescreen.qml
+++ b/share/qtcreator/welcomescreen/welcomescreen.qml
@@ -33,6 +33,16 @@ Item {
property int screenDependHeightDistance: Math.min(50, Math.max(16, height / 30))
+ DropArea {
+ anchors.fill: parent
+ keys: ["text/uri-list"]
+ onDropped: {
+ if ((drop.supportedActions & Qt.CopyAction != 0)
+ && welcomeMode.openDroppedFiles(drop.urls))
+ drop.accept(Qt.CopyAction);
+ }
+ }
+
SideBar {
id: sideBar
model: pagesModel
diff --git a/src/libs/utils/mapreduce.h b/src/libs/utils/mapreduce.h
index 828b16b31f9..607ff5951aa 100644
--- a/src/libs/utils/mapreduce.h
+++ b/src/libs/utils/mapreduce.h
@@ -369,9 +369,12 @@ template <typename ForwardIterator, typename InitFunction, typename MapFunction,
QFuture<ReduceResult>
mapReduce(ForwardIterator begin, ForwardIterator end, InitFunction &&init, MapFunction &&map,
ReduceFunction &&reduce, CleanUpFunction &&cleanup,
- MapReduceOption option = MapReduceOption::Unordered, int size = -1)
+ MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority,
+ int size = -1)
{
- return runAsync(Internal::blockingIteratorMapReduce<
+ return runAsync(priority,
+ Internal::blockingIteratorMapReduce<
ForwardIterator,
typename std::decay<InitFunction>::type,
typename std::decay<MapFunction>::type,
@@ -438,9 +441,11 @@ template <typename Container, typename InitFunction, typename MapFunction,
QFuture<ReduceResult>
mapReduce(Container &&container, InitFunction &&init, MapFunction &&map,
ReduceFunction &&reduce, CleanUpFunction &&cleanup,
- MapReduceOption option = MapReduceOption::Unordered)
+ MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority)
{
- return runAsync(Internal::blockingContainerMapReduce<
+ return runAsync(priority,
+ Internal::blockingContainerMapReduce<
typename std::decay<Container>::type,
typename std::decay<InitFunction>::type,
typename std::decay<MapFunction>::type,
@@ -458,9 +463,11 @@ template <typename Container, typename InitFunction, typename MapFunction,
QFuture<ReduceResult>
mapReduce(std::reference_wrapper<Container> containerWrapper, InitFunction &&init, MapFunction &&map,
ReduceFunction &&reduce, CleanUpFunction &&cleanup,
- MapReduceOption option = MapReduceOption::Unordered)
+ MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority)
{
- return runAsync(Internal::blockingContainerRefMapReduce<
+ return runAsync(priority,
+ Internal::blockingContainerRefMapReduce<
Container,
typename std::decay<InitFunction>::type,
typename std::decay<MapFunction>::type,
@@ -478,14 +485,15 @@ template <typename ForwardIterator, typename MapFunction, typename State, typena
typename MapResult = typename Internal::resultType<MapFunction>::type>
QFuture<StateResult>
mapReduce(ForwardIterator begin, ForwardIterator end, MapFunction &&map, State &&initialState,
- ReduceFunction &&reduce, MapReduceOption option = MapReduceOption::Unordered, int size = -1)
+ ReduceFunction &&reduce, MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority, int size = -1)
{
return mapReduce(begin, end,
Internal::StateWrapper<State>(std::forward<State>(initialState)),
std::forward<MapFunction>(map),
Internal::ReduceWrapper<StateResult, MapResult, ReduceFunction>(std::forward<ReduceFunction>(reduce)),
&Internal::cleanupReportingState<StateResult>,
- option, size);
+ option, priority, size);
}
template <typename Container, typename MapFunction, typename State, typename ReduceFunction,
@@ -493,14 +501,15 @@ template <typename Container, typename MapFunction, typename State, typename Red
typename MapResult = typename Internal::resultType<MapFunction>::type>
QFuture<StateResult>
mapReduce(Container &&container, MapFunction &&map, State &&initialState, ReduceFunction &&reduce,
- MapReduceOption option = MapReduceOption::Unordered)
+ MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority)
{
return mapReduce(std::forward<Container>(container),
Internal::StateWrapper<State>(std::forward<State>(initialState)),
std::forward<MapFunction>(map),
Internal::ReduceWrapper<StateResult, MapResult, ReduceFunction>(std::forward<ReduceFunction>(reduce)),
&Internal::cleanupReportingState<StateResult>,
- option);
+ option, priority);
}
template <typename ForwardIterator, typename MapFunction, typename State, typename ReduceFunction,
@@ -509,12 +518,13 @@ template <typename ForwardIterator, typename MapFunction, typename State, typena
Q_REQUIRED_RESULT
StateResult
mappedReduced(ForwardIterator begin, ForwardIterator end, MapFunction &&map, State &&initialState,
- ReduceFunction &&reduce, MapReduceOption option = MapReduceOption::Unordered, int size = -1)
+ ReduceFunction &&reduce, MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority, int size = -1)
{
return mapReduce(begin, end,
std::forward<MapFunction>(map), std::forward<State>(initialState),
std::forward<ReduceFunction>(reduce),
- option, size).result();
+ option, priority, size).result();
}
template <typename Container, typename MapFunction, typename State, typename ReduceFunction,
@@ -523,38 +533,41 @@ template <typename Container, typename MapFunction, typename State, typename Red
Q_REQUIRED_RESULT
StateResult
mappedReduced(Container &&container, MapFunction &&map, State &&initialState, ReduceFunction &&reduce,
- MapReduceOption option = MapReduceOption::Unordered)
+ MapReduceOption option = MapReduceOption::Unordered,
+ QThread::Priority priority = QThread::InheritPriority)
{
return mapReduce(std::forward<Container>(container), std::forward<MapFunction>(map),
std::forward<State>(initialState), std::forward<ReduceFunction>(reduce),
- option).result();
+ option, priority).result();
}
template <typename ForwardIterator, typename MapFunction,
typename MapResult = typename Internal::resultType<MapFunction>::type>
QFuture<MapResult>
map(ForwardIterator begin, ForwardIterator end, MapFunction &&map,
- MapReduceOption option = MapReduceOption::Ordered, int size = -1)
+ MapReduceOption option = MapReduceOption::Ordered,
+ QThread::Priority priority = QThread::InheritPriority, int size = -1)
{
return mapReduce(begin, end,
&Internal::dummyInit<MapResult>,
std::forward<MapFunction>(map),
Internal::DummyReduce<MapResult>(),
&Internal::dummyCleanup<MapResult>,
- option, size);
+ option, priority, size);
}
template <typename Container, typename MapFunction,
typename MapResult = typename Internal::resultType<MapFunction>::type>
QFuture<MapResult>
-map(Container &&container, MapFunction &&map, MapReduceOption option = MapReduceOption::Ordered)
+map(Container &&container, MapFunction &&map, MapReduceOption option = MapReduceOption::Ordered,
+ QThread::Priority priority = QThread::InheritPriority)
{
return mapReduce(std::forward<Container>(container),
Internal::dummyInit<MapResult>,
std::forward<MapFunction>(map),
Internal::DummyReduce<MapResult>(),
Internal::dummyCleanup<MapResult>,
- option);
+ option, priority);
}
template <template<typename> class ResultContainer, typename ForwardIterator, typename MapFunction,
@@ -562,11 +575,12 @@ template <template<typename> class ResultContainer, typename ForwardIterator, ty
Q_REQUIRED_RESULT
ResultContainer<MapResult>
mapped(ForwardIterator begin, ForwardIterator end, MapFunction &&mapFun,
- MapReduceOption option = MapReduceOption::Ordered, int size = -1)
+ MapReduceOption option = MapReduceOption::Ordered,
+ QThread::Priority priority = QThread::InheritPriority, int size = -1)
{
return Utils::transform<ResultContainer>(map(begin, end,
std::forward<MapFunction>(mapFun),
- option, size).results(),
+ option, priority, size).results(),
[](const MapResult &r) { return r; });
}
@@ -574,11 +588,13 @@ template <template<typename> class ResultContainer, typename Container, typename
typename MapResult = typename Internal::resultType<MapFunction>::type>
Q_REQUIRED_RESULT
ResultContainer<MapResult>
-mapped(Container &&container, MapFunction &&mapFun, MapReduceOption option = MapReduceOption::Ordered)
+mapped(Container &&container, MapFunction &&mapFun,
+ MapReduceOption option = MapReduceOption::Ordered,
+ QThread::Priority priority = QThread::InheritPriority)
{
return Utils::transform<ResultContainer>(map(container,
std::forward<MapFunction>(mapFun),
- option).results(),
+ option, priority).results(),
[](const MapResult &r) { return r; });
}
diff --git a/src/libs/utils/smallstringmemory.h b/src/libs/utils/smallstringmemory.h
index 966d12159d8..c9687a09fb6 100644
--- a/src/libs/utils/smallstringmemory.h
+++ b/src/libs/utils/smallstringmemory.h
@@ -25,6 +25,8 @@
#pragma once
+#include <qsystemdetection.h>
+
#include <cstdlib>
#include <cstring>
#include <memory>
@@ -35,7 +37,7 @@ namespace Memory {
inline char *allocate(std::size_t size)
{
-#ifdef WIN32
+#ifdef Q_OS_WIN32
return static_cast<char*>(_aligned_malloc(size, 64));
#else
return static_cast<char*>(std::malloc(size));
@@ -44,7 +46,7 @@ inline char *allocate(std::size_t size)
inline void deallocate(char *memory)
{
-#ifdef WIN32
+#ifdef Q_OS_WIN32
_aligned_free(memory);
#else
#pragma GCC diagnostic push
@@ -58,7 +60,7 @@ inline void deallocate(char *memory)
inline char *reallocate(char *oldMemory, std::size_t newSize)
{
-#ifdef WIN32
+#ifdef Q_OS_WIN32
return static_cast<char*>(_aligned_realloc(oldMemory, newSize, 64));
#else
return static_cast<char*>(std::realloc(oldMemory, newSize));
diff --git a/src/plugins/autotest/autotest.qrc b/src/plugins/autotest/autotest.qrc
index f92f835e599..6bd7eac6d79 100644
--- a/src/plugins/autotest/autotest.qrc
+++ b/src/plugins/autotest/autotest.qrc
@@ -5,16 +5,6 @@
<file>images/sort@2x.png</file>
<file>images/leafsort.png</file>
<file>images/leafsort@2x.png</file>
- <file>images/debug.png</file>
- <file>images/fail.png</file>
- <file>images/fatal.png</file>
- <file>images/pass.png</file>
- <file>images/skip.png</file>
- <file>images/warn.png</file>
- <file>images/xfail.png</file>
- <file>images/xpass.png</file>
- <file>images/blacklisted_fail.png</file>
- <file>images/blacklisted_pass.png</file>
<file>images/benchmark.png</file>
<file>images/runselected_boxes.png</file>
<file>images/runselected_boxes@2x.png</file>
diff --git a/src/plugins/autotest/autotesticons.h b/src/plugins/autotest/autotesticons.h
index f7845b071f8..ae4a1527cfd 100644
--- a/src/plugins/autotest/autotesticons.h
+++ b/src/plugins/autotest/autotesticons.h
@@ -38,5 +38,39 @@ const Utils::Icon RUN_SELECTED_OVERLAY({
{QLatin1String(":/images/runselected_boxes.png"), Utils::Theme::BackgroundColorDark},
{QLatin1String(":/images/runselected_tickmarks.png"), Utils::Theme::IconsBaseColor}});
+const Utils::Icon RESULT_PASS({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestPassTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_FAIL({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestFailTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_XFAIL({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestXFailTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_XPASS({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestXPassTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_SKIP({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestSkipTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_BLACKLISTEDPASS({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestPassTextColor},
+ {":/projectexplorer/images/buildstepdisable.png", Utils::Theme::PanelTextColorDark}},
+ Utils::Icon::Tint | Utils::Icon::PunchEdges);
+const Utils::Icon RESULT_BLACKLISTEDFAIL({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestFailTextColor},
+ {":/projectexplorer/images/buildstepdisable.png", Utils::Theme::PanelTextColorDark}},
+ Utils::Icon::Tint | Utils::Icon::PunchEdges);
+const Utils::Icon RESULT_BENCHMARK(":/images/benchmark.png");
+const Utils::Icon RESULT_MESSAGEDEBUG({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestDebugTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_MESSAGEWARN({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestWarnTextColor}},
+ Utils::Icon::Tint);
+const Utils::Icon RESULT_MESSAGEFATAL({
+ {":/utils/images/filledcircle.png", Utils::Theme::OutputPanes_TestFatalTextColor}},
+ Utils::Icon::Tint);
+
} // namespace Icons
} // namespace Autotest
diff --git a/src/plugins/autotest/autotestplugin.cpp b/src/plugins/autotest/autotestplugin.cpp
index 976bee11c85..f6e12685fb4 100644
--- a/src/plugins/autotest/autotestplugin.cpp
+++ b/src/plugins/autotest/autotestplugin.cpp
@@ -178,6 +178,7 @@ void AutotestPlugin::onRunSelectedTriggered()
void AutotestPlugin::updateMenuItemsEnabledState()
{
const bool enabled = !TestRunner::instance()->isTestRunning()
+ && TestTreeModel::instance()->parser()->enabled()
&& TestTreeModel::instance()->parser()->state() == TestCodeParser::Idle;
const bool hasTests = TestTreeModel::instance()->hasTests();
diff --git a/src/plugins/autotest/images/blacklisted_fail.png b/src/plugins/autotest/images/blacklisted_fail.png
deleted file mode 100644
index 695e1f92468..00000000000
--- a/src/plugins/autotest/images/blacklisted_fail.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/blacklisted_pass.png b/src/plugins/autotest/images/blacklisted_pass.png
deleted file mode 100644
index bac3ffb1342..00000000000
--- a/src/plugins/autotest/images/blacklisted_pass.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/debug.png b/src/plugins/autotest/images/debug.png
deleted file mode 100644
index e18bd157e4a..00000000000
--- a/src/plugins/autotest/images/debug.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/fail.png b/src/plugins/autotest/images/fail.png
deleted file mode 100644
index 38c0d1463a9..00000000000
--- a/src/plugins/autotest/images/fail.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/fatal.png b/src/plugins/autotest/images/fatal.png
deleted file mode 100644
index 4e0bf77474a..00000000000
--- a/src/plugins/autotest/images/fatal.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/pass.png b/src/plugins/autotest/images/pass.png
deleted file mode 100644
index 33dbe44649e..00000000000
--- a/src/plugins/autotest/images/pass.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/skip.png b/src/plugins/autotest/images/skip.png
deleted file mode 100644
index 9dfea415f16..00000000000
--- a/src/plugins/autotest/images/skip.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/warn.png b/src/plugins/autotest/images/warn.png
deleted file mode 100644
index a813c1dc9a6..00000000000
--- a/src/plugins/autotest/images/warn.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/xfail.png b/src/plugins/autotest/images/xfail.png
deleted file mode 100644
index deeafe7d941..00000000000
--- a/src/plugins/autotest/images/xfail.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/xpass.png b/src/plugins/autotest/images/xpass.png
deleted file mode 100644
index 964bb4a181e..00000000000
--- a/src/plugins/autotest/images/xpass.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp
index bc0845411bc..fe4c1132f1e 100644
--- a/src/plugins/autotest/testcodeparser.cpp
+++ b/src/plugins/autotest/testcodeparser.cpp
@@ -81,7 +81,7 @@ TestCodeParser::~TestCodeParser()
void TestCodeParser::setState(State state)
{
- if (m_parserState == Shutdown)
+ if (m_parserState == Shutdown || !m_enabled)
return;
qCDebug(LOG) << "setState(" << state << "), currentState:" << m_parserState;
// avoid triggering parse before code model parsing has finished, but mark as dirty
@@ -91,17 +91,13 @@ void TestCodeParser::setState(State state)
return;
}
- if ((state == Disabled || state == Idle)
- && (m_parserState == PartialParse || m_parserState == FullParse)) {
+ if ((state == Idle) && (m_parserState == PartialParse || m_parserState == FullParse)) {
qCDebug(LOG) << "Not setting state, parse is running";
return;
}
m_parserState = state;
- if (m_parserState == Disabled) {
- m_fullUpdatePostponed = m_partialUpdatePostponed = false;
- m_postponedFiles.clear();
- } else if (m_parserState == Idle && ProjectExplorer::SessionManager::startupProject()) {
+ if (m_parserState == Idle && ProjectExplorer::SessionManager::startupProject()) {
if (m_fullUpdatePostponed || m_dirty) {
emitUpdateTestTree();
} else if (m_partialUpdatePostponed) {
@@ -115,7 +111,7 @@ void TestCodeParser::setState(State state)
void TestCodeParser::syncTestFrameworks(const QVector<Core::Id> &frameworkIds)
{
- if (m_parserState != Disabled && m_parserState != Idle) {
+ if (m_enabled && m_parserState != Idle) {
// there's a running parse
m_fullUpdatePostponed = m_partialUpdatePostponed = false;
m_postponedFiles.clear();
@@ -129,7 +125,7 @@ void TestCodeParser::syncTestFrameworks(const QVector<Core::Id> &frameworkIds)
QTC_ASSERT(testParser, continue);
m_testCodeParsers.append(testParser);
}
- if (m_parserState != Disabled)
+ if (m_enabled)
updateTestTree();
}
@@ -211,7 +207,7 @@ void TestCodeParser::onProjectPartsUpdated(ProjectExplorer::Project *project)
{
if (project != ProjectExplorer::SessionManager::startupProject())
return;
- if (m_codeModelParsing || m_parserState == Disabled)
+ if (m_codeModelParsing || !m_enabled)
m_fullUpdatePostponed = true;
else
emitUpdateTestTree();
@@ -276,7 +272,6 @@ bool TestCodeParser::postponed(const QStringList &fileList)
m_partialUpdatePostponed = true;
}
return true;
- case Disabled:
case Shutdown:
break;
}
@@ -297,7 +292,9 @@ static void parseFileForTests(const QVector<ITestParser *> &parsers,
void TestCodeParser::scanForTests(const QStringList &fileList)
{
- if (m_parserState == Disabled || m_parserState == Shutdown) {
+ if (m_parserState == Shutdown)
+ return;
+ if (!m_enabled) {
m_dirty = true;
if (fileList.isEmpty()) {
m_fullUpdatePostponed = true;
@@ -357,7 +354,8 @@ void TestCodeParser::scanForTests(const QStringList &fileList)
[this](QFutureInterface<TestParseResultPtr> &fi, const QString &file) {
parseFileForTests(m_testCodeParsers, fi, file);
},
- Utils::MapReduceOption::Unordered);
+ Utils::MapReduceOption::Unordered,
+ QThread::LowestPriority);
m_futureWatcher.setFuture(future);
if (list.size() > 5) {
Core::ProgressManager::addTask(future, tr("Scanning for Tests"),
@@ -419,11 +417,6 @@ void TestCodeParser::onFinished()
}
m_dirty = false;
break;
- case Disabled: // can happen if all Test related widgets become hidden while parsing
- qCDebug(LOG) << "emitting parsingFinished (onFinished, Disabled)";
- emit parsingFinished();
- qCDebug(LOG) << QDateTime::currentDateTime().toString("hh:mm:ss.zzz") << "ParsingFin";
- break;
case Shutdown:
qCDebug(LOG) << "Shutdown complete - not emitting parsingFinished (onFinished)";
break;
diff --git a/src/plugins/autotest/testcodeparser.h b/src/plugins/autotest/testcodeparser.h
index 9967c3d08b8..2c68d143f2f 100644
--- a/src/plugins/autotest/testcodeparser.h
+++ b/src/plugins/autotest/testcodeparser.h
@@ -49,7 +49,6 @@ public:
Idle,
PartialParse,
FullParse,
- Disabled,
Shutdown
};
@@ -57,6 +56,8 @@ public:
virtual ~TestCodeParser();
void setState(State state);
State state() const { return m_parserState; }
+ void setEnabled(bool enabled) { m_enabled = enabled; }
+ bool enabled() const { return m_enabled; }
bool isParsing() const { return m_parserState == PartialParse || m_parserState == FullParse; }
void setDirty() { m_dirty = true; }
void syncTestFrameworks(const QVector<Core::Id> &frameworkIds);
@@ -95,6 +96,7 @@ private:
TestTreeModel *m_model;
+ bool m_enabled = false;
bool m_codeModelParsing = false;
bool m_fullUpdatePostponed = false;
bool m_partialUpdatePostponed = false;
@@ -102,7 +104,7 @@ private:
bool m_singleShotScheduled = false;
bool m_reparseTimerTimedOut = false;
QSet<QString> m_postponedFiles;
- State m_parserState = Disabled;
+ State m_parserState = Idle;
QFutureWatcher<TestParseResultPtr> m_futureWatcher;
QVector<ITestParser *> m_testCodeParsers; // ptrs are still owned by TestFrameworkManager
QTimer m_reparseTimer;
diff --git a/src/plugins/autotest/testnavigationwidget.cpp b/src/plugins/autotest/testnavigationwidget.cpp
index 4618520019c..1972638714b 100644
--- a/src/plugins/autotest/testnavigationwidget.cpp
+++ b/src/plugins/autotest/testnavigationwidget.cpp
@@ -115,7 +115,7 @@ TestNavigationWidget::~TestNavigationWidget()
void TestNavigationWidget::contextMenuEvent(QContextMenuEvent *event)
{
const bool enabled = !TestRunner::instance()->isTestRunning()
- && m_model->parser()->state() == TestCodeParser::Idle;
+ && m_model->parser()->enabled() && m_model->parser()->state() == TestCodeParser::Idle;
const bool hasTests = m_model->hasTests();
QMenu menu;
diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp
index 2d4ddfd19ad..51dcbca4268 100644
--- a/src/plugins/autotest/testresultmodel.cpp
+++ b/src/plugins/autotest/testresultmodel.cpp
@@ -23,6 +23,7 @@
**
****************************************************************************/
+#include "autotesticons.h"
#include "testresultdelegate.h"
#include "testresultmodel.h"
@@ -46,20 +47,20 @@ TestResultItem::~TestResultItem()
}
static QIcon testResultIcon(Result::Type result) {
- static QIcon icons[] = {
- QIcon(QLatin1String(":/images/pass.png")),
- QIcon(QLatin1String(":/images/fail.png")),
- QIcon(QLatin1String(":/images/xfail.png")),
- QIcon(QLatin1String(":/images/xpass.png")),
- QIcon(QLatin1String(":/images/skip.png")),
- QIcon(QLatin1String(":/images/blacklisted_pass.png")),
- QIcon(QLatin1String(":/images/blacklisted_fail.png")),
- QIcon(QLatin1String(":/images/benchmark.png")),
- QIcon(QLatin1String(":/images/debug.png")),
- QIcon(QLatin1String(":/images/debug.png")), // Info get's the same handling as Debug for now
- QIcon(QLatin1String(":/images/warn.png")),
- QIcon(QLatin1String(":/images/fatal.png")),
- QIcon(QLatin1String(":/images/fatal.png")), // System get's same handling as Fatal for now
+ const static QIcon icons[] = {
+ Icons::RESULT_PASS.icon(),
+ Icons::RESULT_FAIL.icon(),
+ Icons::RESULT_XFAIL.icon(),
+ Icons::RESULT_XPASS.icon(),
+ Icons::RESULT_SKIP.icon(),
+ Icons::RESULT_BLACKLISTEDPASS.icon(),
+ Icons::RESULT_BLACKLISTEDFAIL.icon(),
+ Icons::RESULT_BENCHMARK.icon(),
+ Icons::RESULT_MESSAGEDEBUG.icon(),
+ Icons::RESULT_MESSAGEDEBUG.icon(), // Info gets the same handling as Debug for now
+ Icons::RESULT_MESSAGEWARN.icon(),
+ Icons::RESULT_MESSAGEFATAL.icon(),
+ Icons::RESULT_MESSAGEFATAL.icon(), // System gets same handling as Fatal for now
}; // provide an icon for unknown??
if (result < 0 || result >= Result::MessageInternal) {
diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp
index 62b801d5033..6aba8e413c4 100644
--- a/src/plugins/autotest/testtreemodel.cpp
+++ b/src/plugins/autotest/testtreemodel.cpp
@@ -90,6 +90,7 @@ void TestTreeModel::setupParsingConnections()
if (!m_connectionsInitialized)
m_parser->setDirty();
+ m_parser->setEnabled(true);
m_parser->setState(TestCodeParser::Idle);
if (m_connectionsInitialized)
return;
@@ -117,13 +118,13 @@ void TestTreeModel::setupParsingConnections()
void TestTreeModel::disableParsing()
{
if (!m_refCounter.deref() && !AutotestPlugin::instance()->settings()->alwaysParse)
- m_parser->setState(TestCodeParser::Disabled);
+ m_parser->setEnabled(false);
}
void TestTreeModel::disableParsingFromSettings()
{
if (!m_refCounter.load())
- m_parser->setState(TestCodeParser::Disabled);
+ m_parser->setEnabled(false);
}
bool TestTreeModel::setData(const QModelIndex &index, const QVariant &value, int role)
diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
index 82f06b59949..769d2d0e377 100644
--- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
+++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
@@ -401,9 +401,30 @@ static QStringList warningOptions(CppTools::ProjectPart *projectPart)
return CppTools::codeModelSettings()->clangDiagnosticConfig().commandLineOptions();
}
+static QStringList precompiledHeaderOptions(
+ const QString& filePath,
+ CppTools::ProjectPart *projectPart)
+{
+ using namespace CppTools;
+
+ if (CppTools::getPchUsage() == CompilerOptionsBuilder::PchUsage::None)
+ return QStringList();
+
+ if (projectPart->precompiledHeaders.contains(filePath))
+ return QStringList();
+
+ const CppTools::ProjectPart theProjectPart = projectPartForLanguageOption(projectPart);
+ CppTools::CompilerOptionsBuilder builder(theProjectPart);
+ builder.addPrecompiledHeaderOptions(CompilerOptionsBuilder::PchUsage::Use);
+
+ return builder.options();
+}
+
static QStringList fileArguments(const QString &filePath, CppTools::ProjectPart *projectPart)
{
- return languageOptions(filePath, projectPart) + warningOptions(projectPart);
+ return languageOptions(filePath, projectPart)
+ + warningOptions(projectPart)
+ + precompiledHeaderOptions(filePath, projectPart);
}
ClangBackEnd::FileContainer
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index 1d704c8a88b..5bdf36051d3 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -192,27 +192,6 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, ProjectFile::Kind
return LibClangOptionsBuilder::build(pPart, fileKind);
}
-/// @return Option to speed up parsing with precompiled header
-QStringList createPCHInclusionOptions(const QStringList &pchFiles)
-{
- QStringList opts;
-
- foreach (const QString &pchFile, pchFiles) {
- if (QFile(pchFile).exists()) {
- opts += QLatin1String("-include-pch");
- opts += pchFile;
- }
- }
-
- return opts;
-}
-
-/// @return Option to speed up parsing with precompiled header
-QStringList createPCHInclusionOptions(const QString &pchFile)
-{
- return createPCHInclusionOptions(QStringList() << pchFile);
-}
-
ProjectPart::Ptr projectPartForFile(const QString &filePath)
{
if (const auto parser = CppTools::BaseEditorDocumentParser::get(filePath))
diff --git a/src/plugins/clangcodemodel/clangutils.h b/src/plugins/clangcodemodel/clangutils.h
index 4bdc6c00d43..dcec4491397 100644
--- a/src/plugins/clangcodemodel/clangutils.h
+++ b/src/plugins/clangcodemodel/clangutils.h
@@ -34,7 +34,6 @@ QStringList createClangOptions(const CppTools::ProjectPart::Ptr &pPart,
CppTools::ProjectFile::Kind fileKind);
QStringList createClangOptions(const CppTools::ProjectPart::Ptr &pPart,
const QString &fileName = QString());
-QStringList createPCHInclusionOptions(const QString &pchFile);
CppTools::ProjectPart::Ptr projectPartForFile(const QString &filePath);
CppTools::ProjectPart::Ptr projectPartForFileBasedOnProcessor(const QString &filePath);
diff --git a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp
index 5fa28940f5a..4500d011156 100644
--- a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp
+++ b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.cpp
@@ -117,7 +117,8 @@ void RefactoringCompilerOptionsBuilder::addExtraOptions()
}
Utils::SmallStringVector RefactoringCompilerOptionsBuilder::build(CppTools::ProjectPart *projectPart,
- CppTools::ProjectFile::Kind fileKind)
+ CppTools::ProjectFile::Kind fileKind,
+ PchUsage pchUsage)
{
if (projectPart == nullptr)
return Utils::SmallStringVector();
@@ -138,6 +139,7 @@ Utils::SmallStringVector RefactoringCompilerOptionsBuilder::build(CppTools::Proj
optionsBuilder.addPredefinedMacrosAndHeaderPathsOptions();
optionsBuilder.addWrappedQtHeadersIncludePath();
optionsBuilder.addHeaderPathOptions();
+ optionsBuilder.addPrecompiledHeaderOptions(pchUsage);
optionsBuilder.addProjectConfigFileInclude();
optionsBuilder.addMsvcCompatibilityVersion();
diff --git a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h
index 9a11573e8d0..74532dea162 100644
--- a/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h
+++ b/src/plugins/clangrefactoring/refactoringcompileroptionsbuilder.h
@@ -41,7 +41,8 @@ class RefactoringCompilerOptionsBuilder : public CppTools::CompilerOptionsBuilde
{
public:
static Utils::SmallStringVector build(CppTools::ProjectPart *projectPart,
- CppTools::ProjectFile::Kind fileKind);
+ CppTools::ProjectFile::Kind fileKind,
+ PchUsage pchUsage);
private:
RefactoringCompilerOptionsBuilder(CppTools::ProjectPart *projectPart);
diff --git a/src/plugins/clangrefactoring/refactoringengine.cpp b/src/plugins/clangrefactoring/refactoringengine.cpp
index 7a7564bba82..442d1560e8e 100644
--- a/src/plugins/clangrefactoring/refactoringengine.cpp
+++ b/src/plugins/clangrefactoring/refactoringengine.cpp
@@ -32,6 +32,8 @@
#include <refactoringserverinterface.h>
#include <requestsourcelocationforrenamingmessage.h>
+#include <cpptools/cpptoolsreuse.h>
+
#include <QTextCursor>
#include <QTextDocument>
@@ -59,7 +61,8 @@ void RefactoringEngine::startLocalRenaming(const QTextCursor &textCursor,
client.setLocalRenamingCallback(std::move(renameSymbolsCallback));
auto commandLine = RefactoringCompilerOptionsBuilder::build(projectPart,
- fileKindInProjectPart(projectPart, filePath.toString()));
+ fileKindInProjectPart(projectPart, filePath.toString()),
+ CppTools::getPchUsage());
commandLine.push_back(filePath.toString());
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
index 10cb6115ba5..2a8a5f58c9d 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
@@ -40,6 +40,7 @@
#include <cpptools/compileroptionsbuilder.h>
#include <cpptools/cppmodelmanager.h>
#include <cpptools/cppprojectfile.h>
+#include <cpptools/cpptoolsreuse.h>
#include <cpptools/projectinfo.h>
#include <projectexplorer/abi.h>
@@ -165,7 +166,8 @@ class ClangStaticAnalyzerOptionsBuilder : public CompilerOptionsBuilder
{
public:
static QStringList build(const CppTools::ProjectPart &projectPart,
- CppTools::ProjectFile::Kind fileKind)
+ CppTools::ProjectFile::Kind fileKind,
+ PchUsage pchUsage)
{
ClangStaticAnalyzerOptionsBuilder optionsBuilder(projectPart);
@@ -184,6 +186,7 @@ public:
optionsBuilder.undefineClangVersionMacrosForMsvc();
optionsBuilder.undefineCppLanguageFeatureMacrosForMsvc2015();
optionsBuilder.addHeaderPathOptions();
+ optionsBuilder.addPrecompiledHeaderOptions(pchUsage);
optionsBuilder.addMsvcCompatibilityVersion();
if (type != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
@@ -243,10 +246,17 @@ private:
QString includeOption() const override
{
if (m_isMsvcToolchain)
- return QLatin1String("/I");
+ return QLatin1String("/FI");
return CompilerOptionsBuilder::includeOption();
}
+ QString includeDirOption() const override
+ {
+ if (m_isMsvcToolchain)
+ return QLatin1String("/I");
+ return CompilerOptionsBuilder::includeDirOption();
+ }
+
QString defineOption() const override
{
if (m_isMsvcToolchain)
@@ -376,8 +386,9 @@ static AnalyzeUnits unitsToAnalyzeFromProjectParts(const QList<ProjectPart::Ptr>
continue;
QTC_CHECK(file.kind != ProjectFile::Unclassified);
if (ProjectFile::isSource(file.kind)) {
+ const CompilerOptionsBuilder::PchUsage pchUsage = CppTools::getPchUsage();
const QStringList arguments
- = ClangStaticAnalyzerOptionsBuilder::build(*projectPart.data(), file.kind);
+ = ClangStaticAnalyzerOptionsBuilder::build(*projectPart.data(), file.kind, pchUsage);
unitsToAnalyze << AnalyzeUnit(file.path, arguments);
}
}
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.h b/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.h
index fb86bc1f942..dbccc365506 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.h
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerutils.h
@@ -58,12 +58,12 @@ public:
bool isSupportedVersion() const
{
- return majorNumber == 3 && minorNumber == 8;
+ return majorNumber == 3 && minorNumber == 9;
}
static QString supportedVersionAsString()
{
- return QLatin1String("3.8");
+ return QLatin1String("3.9");
}
QString toString() const
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp
index e3771101b75..526542a6175 100644
--- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp
+++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp
@@ -163,6 +163,8 @@ ActionManager::ActionManager(QObject *parent)
{
m_instance = this;
d = new ActionManagerPrivate;
+ if (Utils::HostOsInfo::isMacHost())
+ QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus);
}
/*!
diff --git a/src/plugins/coreplugin/actionmanager/command.cpp b/src/plugins/coreplugin/actionmanager/command.cpp
index 3e737290ae3..cdbbe200e3a 100644
--- a/src/plugins/coreplugin/actionmanager/command.cpp
+++ b/src/plugins/coreplugin/actionmanager/command.cpp
@@ -306,8 +306,6 @@ static QString msgActionWarning(QAction *newAction, Id id, QAction *oldAction)
void Action::addOverrideAction(QAction *action, const Context &context, bool scriptable)
{
- if (Utils::HostOsInfo::isMacHost())
- action->setIconVisibleInMenu(false);
// disallow TextHeuristic menu role, because it doesn't work with translations,
// e.g. QTCREATORBUG-13101
if (action->menuRole() == QAction::TextHeuristicRole)
diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp
index 466598129f8..de912d6f2c4 100644
--- a/src/plugins/coreplugin/editortoolbar.cpp
+++ b/src/plugins/coreplugin/editortoolbar.cpp
@@ -159,12 +159,6 @@ EditorToolBar::EditorToolBar(QWidget *parent) :
d->m_forwardButton->setDefaultAction(d->m_goForwardAction);
- if (Utils::HostOsInfo::isMacHost()) {
- d->m_horizontalSplitAction->setIconVisibleInMenu(false);
- d->m_verticalSplitAction->setIconVisibleInMenu(false);
- d->m_splitNewWindowAction->setIconVisibleInMenu(false);
- }
-
d->m_splitButton->setIcon(Utils::Icons::SPLIT_HORIZONTAL_TOOLBAR.icon());
d->m_splitButton->setToolTip(tr("Split"));
d->m_splitButton->setPopupMode(QToolButton::InstantPopup);
diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp
index 6fd02fd873a..a4382a3d849 100644
--- a/src/plugins/cppeditor/cppquickfixes.cpp
+++ b/src/plugins/cppeditor/cppquickfixes.cpp
@@ -4817,7 +4817,7 @@ void MoveFuncDefOutside::match(const CppQuickFixInterface &interface, QuickFixOp
}
}
- if (!funcAST)
+ if (!funcAST || !funcAST->symbol)
return;
bool isHeaderFile = false;
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index 01378ec88e2..d99692536dd 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -112,7 +112,7 @@ void CompilerOptionsBuilder::enableExceptions()
void CompilerOptionsBuilder::addHeaderPathOptions()
{
typedef ProjectPartHeaderPath HeaderPath;
- const QString defaultPrefix = includeOption();
+ const QString defaultPrefix = includeDirOption();
QStringList result;
@@ -141,6 +141,24 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
m_options.append(result);
}
+void CompilerOptionsBuilder::addPrecompiledHeaderOptions(PchUsage pchUsage)
+{
+ if (pchUsage == PchUsage::None)
+ return;
+
+ QStringList result;
+
+ const QString includeOptionString = includeOption();
+ foreach (const QString &pchFile, m_projectPart.precompiledHeaders) {
+ if (QFile::exists(pchFile)) {
+ result += includeOptionString;
+ result += QDir::toNativeSeparators(pchFile);
+ }
+ }
+
+ m_options.append(result);
+}
+
void CompilerOptionsBuilder::addToolchainAndProjectDefines()
{
addDefines(m_projectPart.toolchainDefines);
@@ -376,7 +394,7 @@ void CompilerOptionsBuilder::addDefineFloat128ForMingw()
addDefine("#define __float128 void");
}
-QString CompilerOptionsBuilder::includeOption() const
+QString CompilerOptionsBuilder::includeDirOption() const
{
return QLatin1String("-I");
}
@@ -399,6 +417,11 @@ QString CompilerOptionsBuilder::undefineOption() const
return QLatin1String("-U");
}
+QString CompilerOptionsBuilder::includeOption() const
+{
+ return QLatin1String("-include");
+}
+
static bool isGccOrMinGwToolchain(const Core::Id &toolchainType)
{
return toolchainType == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID
diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h
index ced3c0af1ba..75b0c4f530d 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.h
+++ b/src/plugins/cpptools/compileroptionsbuilder.h
@@ -34,6 +34,11 @@ namespace CppTools {
class CPPTOOLS_EXPORT CompilerOptionsBuilder
{
public:
+ enum class PchUsage {
+ None,
+ Use
+ };
+
CompilerOptionsBuilder(const ProjectPart &projectPart);
virtual ~CompilerOptionsBuilder() {}
@@ -48,6 +53,7 @@ public:
virtual void addTargetTriple();
virtual void enableExceptions();
void addHeaderPathOptions();
+ void addPrecompiledHeaderOptions(PchUsage pchUsage);
void addToolchainAndProjectDefines();
void addDefines(const QByteArray &defineDirectives);
virtual void addLanguageOption(ProjectFile::Kind fileKind);
@@ -67,6 +73,7 @@ protected:
virtual QString defineOption() const;
virtual QString undefineOption() const;
virtual QString includeOption() const;
+ virtual QString includeDirOption() const;
const ProjectPart m_projectPart;
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index 8859aef78eb..7bc34c903c5 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -346,9 +346,9 @@ void CheckSymbols::run()
_usages << QVector<Result>::fromList(_macroUses);
flush();
}
- }
- emit codeWarningsUpdated(_doc, _diagMsgs);
+ emit codeWarningsUpdated(_doc, _diagMsgs);
+ }
reportFinished();
}
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp
index 7a21b4c6da6..fcb3c8b878e 100644
--- a/src/plugins/cpptools/cpptoolsreuse.cpp
+++ b/src/plugins/cpptools/cpptoolsreuse.cpp
@@ -288,4 +288,12 @@ bool fileSizeExceedsLimit(const QFileInfo &fileInfo, int sizeLimitInMb)
return false;
}
+CompilerOptionsBuilder::PchUsage getPchUsage()
+{
+ const QSharedPointer<CppCodeModelSettings> cms = codeModelSettings();
+ if (cms->pchUsage() == CppCodeModelSettings::PchUse_None)
+ return CompilerOptionsBuilder::PchUsage::None;
+ return CompilerOptionsBuilder::PchUsage::Use;
+}
+
} // CppTools
diff --git a/src/plugins/cpptools/cpptoolsreuse.h b/src/plugins/cpptools/cpptoolsreuse.h
index b60eceeb64c..46ef50d7b16 100644
--- a/src/plugins/cpptools/cpptoolsreuse.h
+++ b/src/plugins/cpptools/cpptoolsreuse.h
@@ -29,6 +29,8 @@
#include <texteditor/texteditor.h>
+#include <cpptools/compileroptionsbuilder.h>
+
#include <cplusplus/CppDocument.h>
QT_BEGIN_NAMESPACE
@@ -72,6 +74,8 @@ void CPPTOOLS_EXPORT switchHeaderSource();
class CppCodeModelSettings;
QSharedPointer<CppCodeModelSettings> CPPTOOLS_EXPORT codeModelSettings();
+CompilerOptionsBuilder::PchUsage CPPTOOLS_EXPORT getPchUsage();
+
int indexerFileSizeLimitInMb();
bool fileSizeExceedsLimit(const QFileInfo &fileInfo, int sizeLimitInMb);
diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp
index 416c27eaccd..d950a26b3f8 100644
--- a/src/plugins/debugger/debuggerdialogs.cpp
+++ b/src/plugins/debugger/debuggerdialogs.cpp
@@ -107,7 +107,7 @@ DebuggerKitChooser::DebuggerKitChooser(Mode mode, QWidget *parent)
{
setKitMatcher([this](const Kit *k) {
// Match valid debuggers and restrict local debugging to compatible toolchains.
- if (!DebuggerKitInformation::isValidDebugger(k))
+ if (DebuggerKitInformation::configurationErrors(k))
return false;
if (m_mode == LocalDebugging)
return ToolChainKitInformation::targetAbi(k).os() == m_hostAbi.os();
@@ -223,7 +223,7 @@ StartApplicationDialog::StartApplicationDialog(QWidget *parent)
d->kitChooser = new KitChooser(this);
d->kitChooser->setKitMatcher([this](const Kit *k) {
- return DebuggerKitInformation::isValidDebugger(k);
+ return !DebuggerKitInformation::configurationErrors(k);
});
d->kitChooser->populate();
diff --git a/src/plugins/debugger/debuggerkitinformation.cpp b/src/plugins/debugger/debuggerkitinformation.cpp
index 6aaaa4074cb..115e630dfb1 100644
--- a/src/plugins/debugger/debuggerkitinformation.cpp
+++ b/src/plugins/debugger/debuggerkitinformation.cpp
@@ -191,15 +191,7 @@ void DebuggerKitInformation::fix(Kit *k)
// Check the configuration errors and return a flag mask. Provide a quick check and
// a verbose one with a list of errors.
-enum DebuggerConfigurationErrors {
- NoDebugger = 0x1,
- DebuggerNotFound = 0x2,
- DebuggerNotExecutable = 0x4,
- DebuggerNeedsAbsolutePath = 0x8,
- DebuggerDoesNotMatch = 0x10
-};
-
-static unsigned debuggerConfigurationErrors(const Kit *k)
+DebuggerKitInformation::ConfigurationErrors DebuggerKitInformation::configurationErrors(const Kit *k)
{
QTC_ASSERT(k, return NoDebugger);
@@ -210,7 +202,7 @@ static unsigned debuggerConfigurationErrors(const Kit *k)
if (item->command().isEmpty())
return NoDebugger;
- unsigned result = 0;
+ ConfigurationErrors result = NoConfigurationError;
const QFileInfo fi = item->command().toFileInfo();
if (!fi.exists() || fi.isDir())
result |= DebuggerNotFound;
@@ -257,17 +249,12 @@ StandardRunnable DebuggerKitInformation::runnable(const Kit *kit)
return runnable;
}
-bool DebuggerKitInformation::isValidDebugger(const Kit *k)
-{
- return debuggerConfigurationErrors(k) == 0;
-}
-
QList<Task> DebuggerKitInformation::validateDebugger(const Kit *k)
{
QList<Task> result;
- const unsigned errors = debuggerConfigurationErrors(k);
- if (!errors)
+ const ConfigurationErrors errors = configurationErrors(k);
+ if (errors == NoConfigurationError)
return result;
QString path;
diff --git a/src/plugins/debugger/debuggerkitinformation.h b/src/plugins/debugger/debuggerkitinformation.h
index cae68aaf5ae..cbe438e3f56 100644
--- a/src/plugins/debugger/debuggerkitinformation.h
+++ b/src/plugins/debugger/debuggerkitinformation.h
@@ -52,8 +52,19 @@ public:
static const DebuggerItem *debugger(const ProjectExplorer::Kit *kit);
static ProjectExplorer::StandardRunnable runnable(const ProjectExplorer::Kit *kit);
+ enum ConfigurationError
+ {
+ NoConfigurationError = 0x0,
+ NoDebugger = 0x1,
+ DebuggerNotFound = 0x2,
+ DebuggerNotExecutable = 0x4,
+ DebuggerNeedsAbsolutePath = 0x8,
+ DebuggerDoesNotMatch = 0x10
+ };
+ Q_DECLARE_FLAGS(ConfigurationErrors, ConfigurationError)
+
static QList<ProjectExplorer::Task> validateDebugger(const ProjectExplorer::Kit *k);
- static bool isValidDebugger(const ProjectExplorer::Kit *k);
+ static ConfigurationErrors configurationErrors(const ProjectExplorer::Kit *k);
ProjectExplorer::KitConfigWidget *createConfigWidget(ProjectExplorer::Kit *k) const override;
void addToMacroExpander(ProjectExplorer::Kit *kit, Utils::MacroExpander *expander) const override;
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index bdc94011a13..6437643f512 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -583,7 +583,7 @@ static std::function<bool(const Kit *)> cdbMatcher(char wordWidth = 0)
{
return [wordWidth](const Kit *k) -> bool {
if (DebuggerKitInformation::engineType(k) != CdbEngineType
- || !DebuggerKitInformation::isValidDebugger(k)) {
+ || DebuggerKitInformation::configurationErrors(k)) {
return false;
}
if (wordWidth)
@@ -1125,13 +1125,13 @@ static Kit *guessKitFromParameters(const DebuggerRunParameters &rp)
// Try exact abis.
kit = KitManager::find(KitMatcher([abis](const Kit *k) -> bool {
const Abi tcAbi = ToolChainKitInformation::targetAbi(k);
- return abis.contains(tcAbi) && DebuggerKitInformation::isValidDebugger(k);
+ return abis.contains(tcAbi) && !DebuggerKitInformation::configurationErrors(k);
}));
if (!kit) {
// Or something compatible.
kit = KitManager::find(KitMatcher([abis](const Kit *k) -> bool {
const Abi tcAbi = ToolChainKitInformation::targetAbi(k);
- return DebuggerKitInformation::isValidDebugger(k)
+ return !DebuggerKitInformation::configurationErrors(k)
&& Utils::contains(abis, [tcAbi](const Abi &a) { return a.isCompatibleWith(tcAbi); });
}));
}
diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp
index 1235adb7237..fad3fd09c01 100644
--- a/src/plugins/debugger/debuggertooltipmanager.cpp
+++ b/src/plugins/debugger/debuggertooltipmanager.cpp
@@ -692,13 +692,6 @@ bool DebuggerToolTipContext::isSame(const DebuggerToolTipContext &other) const
&& filesMatch(fileName, other.fileName);
}
-void DebuggerToolTipContext::appendFormatRequest(DebuggerCommand *cmd) const
-{
- cmd->arg("expression", expression);
- cmd->arg("fileName", fileName);
- cmd->arg("iname", iname);
-}
-
QString DebuggerToolTipContext::toolTip() const
{
return DebuggerToolTipManager::tr("Expression %1 in function %2 from line %3 to %4")
diff --git a/src/plugins/debugger/debuggertooltipmanager.h b/src/plugins/debugger/debuggertooltipmanager.h
index 78f48d97692..33324ccf45e 100644
--- a/src/plugins/debugger/debuggertooltipmanager.h
+++ b/src/plugins/debugger/debuggertooltipmanager.h
@@ -49,7 +49,6 @@ public:
bool isValid() const { return !expression.isEmpty(); }
bool matchesFrame(const StackFrame &frame) const;
bool isSame(const DebuggerToolTipContext &other) const;
- void appendFormatRequest(DebuggerCommand *cmd) const;
QString toolTip() const;
QString fileName;
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 53f94c4f6b3..b9b40694789 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1687,9 +1687,6 @@ void GdbEngine::handleShowVersion(const DebuggerResponse &response)
else
runCommand({"set target-async off", ConsoleCommand});
- if (runParameters().multiProcess)
- runCommand({"set detach-on-fork off", ConsoleCommand});
-
//runCommand("set build-id-verbose 2", ConsoleCommand);
}
}
@@ -4047,7 +4044,7 @@ void GdbEngine::startGdb(const QStringList &args)
runCommand({"set auto-solib-add on", ConsoleCommand});
}
- if (boolSetting(MultiInferior)) {
+ if (boolSetting(MultiInferior) || runParameters().multiProcess) {
//runCommand("set follow-exec-mode new");
runCommand({"set detach-on-fork off"});
}
diff --git a/src/plugins/projectexplorer/projectimporter.h b/src/plugins/projectexplorer/projectimporter.h
index 2c21a738317..c89e44555f0 100644
--- a/src/plugins/projectexplorer/projectimporter.h
+++ b/src/plugins/projectexplorer/projectimporter.h
@@ -39,7 +39,7 @@ class Project;
class Target;
// Documentation inside.
-class PROJECTEXPLORER_EXPORT ProjectImporter
+class PROJECTEXPLORER_EXPORT ProjectImporter : public QObject
{
public:
ProjectImporter(const Utils::FileName &path);
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 328f2591904..b1642c91b07 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -518,6 +518,9 @@ public:
ProjectWindow::ProjectWindow()
{
setBackgroundRole(QPalette::Base);
+
+ // Request custom context menu but do not provide any to avoid
+ // the creation of the dock window selection menu.
setContextMenuPolicy(Qt::CustomContextMenu);
auto selectorModel = new SelectorModel(this, [this](QWidget *panel) { setPanel(panel); });
@@ -553,15 +556,6 @@ ProjectWindow::ProjectWindow()
auto selectorDock = addDockForWidget(selectorView, true);
addDockWidget(Qt::LeftDockWidgetArea, selectorDock);
-
- connect(this, &QWidget::customContextMenuRequested,
- selectorModel, &SelectorModel::openContextMenu);
-}
-
-void ProjectWindow::contextMenuEvent(QContextMenuEvent *event)
-{
- Q_UNUSED(event)
- // Do nothing to avoid creation of the dock window selection menu.
}
void ProjectWindow::setPanel(QWidget *panel)
diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h
index aa61d412967..87694ad0852 100644
--- a/src/plugins/projectexplorer/projectwindow.h
+++ b/src/plugins/projectexplorer/projectwindow.h
@@ -56,7 +56,6 @@ public:
ProjectWindow();
private:
- void contextMenuEvent(QContextMenuEvent *event) override;
void setPanel(QWidget *panel);
};
diff --git a/src/plugins/projectexplorer/targetsetuppage.h b/src/plugins/projectexplorer/targetsetuppage.h
index d004143634b..8f589506294 100644
--- a/src/plugins/projectexplorer/targetsetuppage.h
+++ b/src/plugins/projectexplorer/targetsetuppage.h
@@ -32,6 +32,7 @@
#include <utils/wizardpage.h>
+#include <QPointer>
#include <QString>
#include <QMap>
@@ -109,7 +110,7 @@ private:
KitMatcher m_requiredMatcher;
KitMatcher m_preferredMatcher;
- ProjectImporter *m_importer = nullptr;
+ QPointer<ProjectImporter> m_importer = nullptr;
QLayout *m_baseLayout = nullptr;
QString m_projectPath;
QString m_defaultShadowBuildLocation;
diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
index 4b891ce6eee..354612a3c24 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
@@ -666,20 +666,24 @@ static bool isInLayoutable(NodeAbstractProperty &parentProperty)
static void reparentModelNodeToNodeProperty(NodeAbstractProperty &parentProperty, const ModelNode &modelNode)
{
- if (!modelNode.hasParentProperty() || parentProperty != modelNode.parentProperty()) {
- if (isInLayoutable(parentProperty)) {
- removePosition(modelNode);
- parentProperty.reparentHere(modelNode);
- } else {
- if (QmlItemNode::isValidQmlItemNode(modelNode)) {
- QPointF scenePosition = QmlItemNode(modelNode).instanceScenePosition();
+ try {
+ if (!modelNode.hasParentProperty() || parentProperty != modelNode.parentProperty()) {
+ if (isInLayoutable(parentProperty)) {
+ removePosition(modelNode);
parentProperty.reparentHere(modelNode);
- if (!scenePosition.isNull())
- setScenePosition(modelNode, scenePosition);
} else {
- parentProperty.reparentHere(modelNode);
+ if (QmlItemNode::isValidQmlItemNode(modelNode)) {
+ QPointF scenePosition = QmlItemNode(modelNode).instanceScenePosition();
+ parentProperty.reparentHere(modelNode);
+ if (!scenePosition.isNull())
+ setScenePosition(modelNode, scenePosition);
+ } else {
+ parentProperty.reparentHere(modelNode);
+ }
}
}
+ } catch (const RewritingException &exception) { //better safe than sorry! There always might be cases where we fail
+ exception.showException();
}
}
diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp
index 884eeb30db5..bb445eb6361 100644
--- a/src/plugins/welcome/welcomeplugin.cpp
+++ b/src/plugins/welcome/welcomeplugin.cpp
@@ -52,6 +52,7 @@
#include <QDir>
#include <QQmlPropertyMap>
#include <QQuickImageProvider>
+#include <QTimer>
#include <QtQuickWidgets/QQuickWidget>
#include <QtQml/QQmlContext>
@@ -135,6 +136,8 @@ public:
QStringList recentProjectsShortcuts() const { return m_recentProjectsShortcuts; }
QStringList sessionsShortcuts() const { return m_sessionsShortcuts; }
+ Q_INVOKABLE bool openDroppedFiles(const QList<QUrl> &urls);
+
public slots:
void setActivePlugin(int pos)
{
@@ -307,6 +310,18 @@ void WelcomeMode::initPlugins()
m_welcomePage->setSource(QUrl::fromLocalFile(path));
}
+bool WelcomeMode::openDroppedFiles(const QList<QUrl> &urls)
+{
+ const QList<QUrl> localUrls = Utils::filtered(urls, &QUrl::isLocalFile);
+ if (!localUrls.isEmpty()) {
+ QTimer::singleShot(0, [localUrls]() {
+ ICore::openFiles(Utils::transform(localUrls, &QUrl::toLocalFile), ICore::SwitchMode);
+ });
+ return true;
+ }
+ return false;
+}
+
void WelcomeMode::welcomePluginAdded(QObject *obj)
{
IWelcomePage *page = qobject_cast<IWelcomePage*>(obj);
diff --git a/src/plugins/winrt/WinRt.json.in b/src/plugins/winrt/WinRt.json.in
index 66b4e18402d..9cccdba66f1 100644
--- a/src/plugins/winrt/WinRt.json.in
+++ b/src/plugins/winrt/WinRt.json.in
@@ -2,7 +2,6 @@
\"Name\" : \"WinRt\",
\"Version\" : \"$$QTCREATOR_VERSION\",
\"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
- \"Experimental\" : true,
\"Platform\" : \"Windows (8.1|10)\",
\"Vendor\" : \"The Qt Company Ltd\",
\"Copyright\" : \"(C) 2016 The Qt Company Ltd\",
diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri
index ae8f359859e..35474b8faa7 100644
--- a/src/shared/clang/clang_installation.pri
+++ b/src/shared/clang/clang_installation.pri
@@ -97,8 +97,8 @@ LIBTOOLING_LIBS += $$CLANGTOOLING_LIBS $$LLVM_STATIC_LIBS
contains(QMAKE_DEFAULT_INCDIRS, $$LLVM_INCLUDEPATH): LLVM_INCLUDEPATH =
isEmpty(LLVM_VERSION): error("Cannot determine clang version at $$LLVM_INSTALL_DIR")
-!versionIsAtLeast($$LLVM_VERSION, 3, 8, 0): {
- error("LLVM/Clang version >= 3.8.0 required, version provided: $$LLVM_VERSION")
+!versionIsAtLeast($$LLVM_VERSION, 3, 9, 0): {
+ error("LLVM/Clang version >= 3.9.0 required, version provided: $$LLVM_VERSION")
}
unix:LLVM_CXXFLAGS = -fno-rtti -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
diff --git a/src/tools/clangrefactoringbackend/source/clangrefactoringbackend_global.h b/src/tools/clangrefactoringbackend/source/clangrefactoringbackend_global.h
index fc286b8780e..30d4b2e1a08 100644
--- a/src/tools/clangrefactoringbackend/source/clangrefactoringbackend_global.h
+++ b/src/tools/clangrefactoringbackend/source/clangrefactoringbackend_global.h
@@ -35,7 +35,7 @@ namespace ClangBackEnd {
using USRName = llvm::SmallVector<char, 128>;
// use std::filesystem::path if it is supported by all compilers
-#ifdef WIN32
+#ifdef _WIN32
const char nativeSeperator = '\\';
#else
const char nativeSeperator = '/';
diff --git a/src/tools/clangrefactoringbackend/source/clangtool.cpp b/src/tools/clangrefactoringbackend/source/clangtool.cpp
index 99f724e39ab..d447121379b 100644
--- a/src/tools/clangrefactoringbackend/source/clangtool.cpp
+++ b/src/tools/clangrefactoringbackend/source/clangtool.cpp
@@ -33,7 +33,7 @@ namespace {
std::string toNativePath(std::string &&path)
{
-#ifdef WIN32
+#ifdef _WIN32
std::replace(path.begin(), path.end(), '/', '\\');
#endif
diff --git a/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h b/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h
index 6e963190a63..8e3dba86b22 100644
--- a/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h
+++ b/src/tools/clangrefactoringbackend/source/sourcelocationsutils.h
@@ -61,7 +61,7 @@ Utils::SmallString fromNativePath(Container container)
{
Utils::SmallString path(container.data(), container.size());
-#ifdef WIN32
+#ifdef _WIN32
std::replace(path.begin(), path.end(), '\\', '/');
#endif
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index 786201dfcba..0c78e88ff63 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -587,6 +587,7 @@ struct Profile
{
Profile(const QByteArray &contents) : contents(contents) {}
+ QByteArray includes;
QByteArray contents;
};
@@ -609,6 +610,7 @@ struct BoostProfile : public Profile
contents = QByteArray("INCLUDEPATH += ") + boostIncPath.constData();
else
contents = "macx:INCLUDEPATH += /usr/local/include";
+ includes = "#include <boost/version.hpp>\n";
}
};
@@ -668,6 +670,7 @@ public:
const Data &operator+(const Profile &profile) const
{
profileExtra += profile.contents;
+ includes += profile.includes;
return *this;
}
@@ -2752,6 +2755,7 @@ void tst_Dumpers::dumper_data()
"int pos1 = re.indexIn(str1); unused(&pos1);\n"
"int pos2 = re.indexIn(str2); unused(&pos2);\n")
+ CoreProfile()
+ + UseDebugImage()
+ Check("re", "\"a(.*)b(.*)c\"", "@QRegExp")
+ Check("re.captures.0", "[0]", "\"a1121b344c\"", "@QString")
+ Check("re.captures.1", "[1]", "\"1121\"", "@QString")
@@ -2931,6 +2935,31 @@ void tst_Dumpers::dumper_data()
" QSharedDataPointer<EmployeeData> d;\n"
" };\n";
+ QTest::newRow("QAtomicPointer")
+ << Data("#include <QAtomicPointer>\n"
+ "#include <QStringList>\n\n"
+ "template <class T> struct Pointer : QAtomicPointer<T> {\n"
+ " Pointer(T *value = 0) : QAtomicPointer<T>(value) {}\n"
+ "};\n\n"
+ "struct SomeStruct {\n"
+ " int a = 1;\n"
+ " long b = 2;\n"
+ " double c = 3.0;\n"
+ " QString d = \"4\";\n"
+ " QList<QString> e = {\"5\", \"6\" };\n"
+ "};\n\n"
+ "typedef Pointer<SomeStruct> SomeStructPointer;\n\n",
+
+ "SomeStruct *s = new SomeStruct; unused(s);\n"
+ "SomeStructPointer p(s); unused(p);\n"
+ "Pointer<SomeStruct> pp(s); unused(pp);\n"
+ "QAtomicPointer<SomeStruct> ppp(s); unused(ppp);\n")
+ + Cxx11Profile()
+ + Check("p.@1.a", "1", "int")
+ + Check("p.@1.e", "<2 items>", "@QList<@QString>")
+ + Check("pp.@1.a", "1", "int")
+ + Check("ppp.a", "1", "int");
+
QTest::newRow("QScopedPointer")
<< Data("#include <QScopedPointer>\n"
@@ -5982,19 +6011,20 @@ void tst_Dumpers::dumper_data()
+ Check("tt.@2.@1.v", "45", "int") % LldbEngine
+ Check("dd.@1.@1.a", "1", "int") // B::a
- + Check("dd.@2.@1.a", "1", "int") // C::a
+ // C::a - fails with command line LLDB 3.8/360.x
+ + Check("dd.@2.@1.a", "1", "int") % NoLldbEngine // C::a
+ Check("dd.@1.b", "2", "int")
+ Check("dd.@2.c", "3", "int")
+ Check("dd.d", "4", "int")
+ Check("dp.@1.@1.a", "1", "int") // B::a
- + Check("dp.@2.@1.a", "1", "int") // C::a
+ + Check("dp.@2.@1.a", "1", "int") % NoLldbEngine // C::a
+ Check("dp.@1.b", "2", "int")
+ Check("dp.@2.c", "3", "int")
+ Check("dp.d", "4", "int")
+ Check("dr.@1.@1.a", "1", "int") // B::a
- + Check("dr.@2.@1.a", "1", "int") // C::a
+ + Check("dr.@2.@1.a", "1", "int") % NoLldbEngine // C::a
+ Check("dr.@1.b", "2", "int")
+ Check("dr.@2.c", "3", "int")
+ Check("dr.d", "4", "int");
diff --git a/tests/auto/mapreduce/tst_mapreduce.cpp b/tests/auto/mapreduce/tst_mapreduce.cpp
index aaa80de424d..413d8753602 100644
--- a/tests/auto/mapreduce/tst_mapreduce.cpp
+++ b/tests/auto/mapreduce/tst_mapreduce.cpp
@@ -214,7 +214,7 @@ void tst_MapReduce::map()
QCOMPARE(container, QList<int>({4, 10, 2}));
Utils::map(container.begin(), container.end(), [](int &x) { x *= 2; },
- Utils::MapReduceOption::Unordered, 3).waitForFinished();
+ Utils::MapReduceOption::Unordered, QThread::InheritPriority, 3).waitForFinished();
QCOMPARE(container, QList<int>({8, 20, 4}));
}
diff --git a/tests/unit/unittest/filesystem-utilities.h b/tests/unit/unittest/filesystem-utilities.h
index b102a596dcc..36b3e5ed703 100644
--- a/tests/unit/unittest/filesystem-utilities.h
+++ b/tests/unit/unittest/filesystem-utilities.h
@@ -28,7 +28,7 @@
#include <string>
// use std::filesystem::path if it is supported by all compilers
-#ifdef WIN32
+#ifdef _WIN32
const char nativeSeperator = '\\';
#else
const char nativeSeperator = '/';
@@ -37,7 +37,7 @@ const char nativeSeperator = '/';
inline
std::string toNativePath(std::string &&path)
{
-#ifdef WIN32
+#ifdef _WIN32
std::replace(path.begin(), path.end(), '/', '\\');
#endif