aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md24
-rw-r--r--doc/images/qtcreator-add-resource.pngbin39060 -> 15216 bytes
-rw-r--r--doc/images/qtcreator-autotests-options.pngbin0 -> 10347 bytes
-rw-r--r--doc/images/qtcreator-autotests.pngbin16602 -> 20591 bytes
-rw-r--r--doc/images/qtcreator-gerrit-options.pngbin20915 -> 6697 bytes
-rw-r--r--doc/images/qtcreator-gs-build-example-kit-selector.pngbin7372 -> 4737 bytes
-rw-r--r--doc/images/qtcreator-gs-build-example-open.pngbin20884 -> 17812 bytes
-rw-r--r--doc/images/qtcreator-textfinder-contents.pngbin22113 -> 8280 bytes
-rw-r--r--doc/images/qtcreator-vcs-diff.pngbin89832 -> 11999 bytes
-rw-r--r--doc/images/qtcreator-vcs-log.pngbin70811 -> 0 bytes
-rw-r--r--doc/images/qtcreator-vcs-pane.pngbin14435 -> 5859 bytes
-rw-r--r--doc/images/qtcreator-vcs-show.pngbin0 -> 35887 bytes
-rw-r--r--doc/src/analyze/creator-clang-static-analyzer.qdoc2
-rw-r--r--doc/src/howto/creator-autotest.qdoc97
-rw-r--r--doc/src/howto/creator-ui.qdoc11
-rw-r--r--doc/src/howto/creator-vcs.qdoc10
-rw-r--r--doc/src/overview/creator-configuring.qdoc4
-rw-r--r--doc/src/overview/creator-overview.qdoc6
-rw-r--r--doc/src/overview/creator-testing.qdoc2
-rw-r--r--doc/src/projects/creator-projects-creating.qdoc4
-rw-r--r--doc/src/projects/creator-projects-settings-overview.qdoc4
-rw-r--r--qtcreatordata.pri (renamed from share/qtcreator/static.pri)2
-rwxr-xr-x[-rw-r--r--]scripts/dependencyinfo.py0
-rwxr-xr-x[-rw-r--r--]scripts/gcc2tasks.pl0
-rwxr-xr-x[-rw-r--r--]scripts/hasCopyright.pl0
-rwxr-xr-x[-rw-r--r--]scripts/msvc2tasks.pl0
-rwxr-xr-x[-rw-r--r--]scripts/mytasks.pl0
-rw-r--r--share/qtcreator/debugger/dumper.py25
-rw-r--r--share/qtcreator/debugger/gdbbridge.py14
-rw-r--r--share/qtcreator/debugger/lldbbridge.py14
-rw-r--r--share/qtcreator/debugger/qttypes.py16
-rw-r--r--share/qtcreator/debugger/stdtypes.py9
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp3
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri24
-rw-r--r--share/qtcreator/static.pro25
-rw-r--r--share/qtcreator/themes/dark.creatortheme12
-rw-r--r--share/qtcreator/themes/default.creatortheme12
-rw-r--r--share/qtcreator/themes/defaultflat.creatortheme30
-rw-r--r--share/qtcreator/translations/translations.pro24
-rw-r--r--src/libs/cplusplus/Icons.cpp259
-rw-r--r--src/libs/cplusplus/Icons.h34
-rw-r--r--src/libs/cplusplus/OverviewModel.cpp3
-rw-r--r--src/libs/cplusplus/OverviewModel.h2
-rw-r--r--src/libs/cplusplus/cplusplus.qbs24
-rw-r--r--src/libs/cplusplus/cplusplus.qrc47
-rw-r--r--src/libs/cplusplus/images/class.pngbin573 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/classmemberfunction.pngbin0 -> 139 bytes
-rw-r--r--src/libs/cplusplus/images/classmemberfunction@2x.pngbin0 -> 168 bytes
-rw-r--r--src/libs/cplusplus/images/classmembervariable.pngbin0 -> 136 bytes
-rw-r--r--src/libs/cplusplus/images/classmembervariable@2x.pngbin0 -> 165 bytes
-rw-r--r--src/libs/cplusplus/images/classparent.pngbin0 -> 155 bytes
-rw-r--r--src/libs/cplusplus/images/classparent@2x.pngbin0 -> 175 bytes
-rw-r--r--src/libs/cplusplus/images/classrelation.pngbin0 -> 106 bytes
-rw-r--r--src/libs/cplusplus/images/classrelation@2x.pngbin0 -> 114 bytes
-rw-r--r--src/libs/cplusplus/images/classrelationbackground.pngbin0 -> 121 bytes
-rw-r--r--src/libs/cplusplus/images/classrelationbackground@2x.pngbin0 -> 133 bytes
-rw-r--r--src/libs/cplusplus/images/enum.pngbin359 -> 112 bytes
-rw-r--r--src/libs/cplusplus/images/enum@2x.pngbin0 -> 118 bytes
-rw-r--r--src/libs/cplusplus/images/enumerator.pngbin478 -> 124 bytes
-rw-r--r--src/libs/cplusplus/images/enumerator@2x.pngbin0 -> 129 bytes
-rw-r--r--src/libs/cplusplus/images/func.pngbin583 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/func_priv.pngbin656 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/func_priv_st.pngbin685 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/func_prot.pngbin647 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/func_prot_st.pngbin679 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/func_st.pngbin651 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/keyword.pngbin341 -> 139 bytes
-rw-r--r--src/libs/cplusplus/images/keyword@2x.pngbin0 -> 143 bytes
-rw-r--r--src/libs/cplusplus/images/macro.pngbin405 -> 133 bytes
-rw-r--r--src/libs/cplusplus/images/macro@2x.pngbin0 -> 217 bytes
-rw-r--r--src/libs/cplusplus/images/member.pngbin0 -> 169 bytes
-rw-r--r--src/libs/cplusplus/images/member@2x.pngbin0 -> 202 bytes
-rw-r--r--src/libs/cplusplus/images/namespace.pngbin377 -> 130 bytes
-rw-r--r--src/libs/cplusplus/images/namespace@2x.pngbin0 -> 169 bytes
-rw-r--r--src/libs/cplusplus/images/private.pngbin0 -> 112 bytes
-rw-r--r--src/libs/cplusplus/images/private@2x.pngbin0 -> 165 bytes
-rw-r--r--src/libs/cplusplus/images/privatebackground.pngbin0 -> 144 bytes
-rw-r--r--src/libs/cplusplus/images/privatebackground@2x.pngbin0 -> 153 bytes
-rw-r--r--src/libs/cplusplus/images/protected.pngbin0 -> 115 bytes
-rw-r--r--src/libs/cplusplus/images/protected@2x.pngbin0 -> 177 bytes
-rw-r--r--src/libs/cplusplus/images/protectedbackground.pngbin0 -> 216 bytes
-rw-r--r--src/libs/cplusplus/images/protectedbackground@2x.pngbin0 -> 385 bytes
-rw-r--r--src/libs/cplusplus/images/signal.pngbin393 -> 199 bytes
-rw-r--r--src/libs/cplusplus/images/signal@2x.pngbin0 -> 374 bytes
-rw-r--r--src/libs/cplusplus/images/slot.pngbin498 -> 188 bytes
-rw-r--r--src/libs/cplusplus/images/slot@2x.pngbin0 -> 210 bytes
-rw-r--r--src/libs/cplusplus/images/slot_priv.pngbin468 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/slot_prot.pngbin452 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/static.pngbin164 -> 120 bytes
-rw-r--r--src/libs/cplusplus/images/static@2x.pngbin0 -> 159 bytes
-rw-r--r--src/libs/cplusplus/images/staticbackground.pngbin0 -> 131 bytes
-rw-r--r--src/libs/cplusplus/images/staticbackground@2x.pngbin0 -> 173 bytes
-rw-r--r--src/libs/cplusplus/images/struct.pngbin641 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/var.pngbin530 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/var_priv.pngbin632 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/var_priv_st.pngbin676 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/var_prot.pngbin619 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/var_prot_st.pngbin658 -> 0 bytes
-rw-r--r--src/libs/cplusplus/images/var_st.pngbin629 -> 0 bytes
-rw-r--r--src/libs/qmljs/images/element.pngbin573 -> 0 bytes
-rw-r--r--src/libs/qmljs/images/func.pngbin583 -> 0 bytes
-rw-r--r--src/libs/qmljs/images/property.pngbin530 -> 0 bytes
-rw-r--r--src/libs/qmljs/images/publicmember.pngbin583 -> 0 bytes
-rw-r--r--src/libs/qmljs/qmljs-lib.pri4
-rw-r--r--src/libs/qmljs/qmljs.qbs12
-rw-r--r--src/libs/qmljs/qmljs.qrc8
-rw-r--r--src/libs/qmljs/qmljsicons.cpp28
-rw-r--r--src/libs/qmljs/qmljsicons.h10
-rw-r--r--src/libs/qtcreatorcdbext/containers.cpp38
-rw-r--r--src/libs/qtcreatorcdbext/knowntype.h3
-rw-r--r--src/libs/qtcreatorcdbext/symbolgroupvalue.cpp2
-rw-r--r--src/libs/utils/theme/theme.h15
-rw-r--r--src/plugins/android/androidruncontrol.cpp5
-rw-r--r--src/plugins/autotest/autotest.qrc2
-rw-r--r--src/plugins/autotest/images/class.pngbin573 -> 0 bytes
-rw-r--r--src/plugins/autotest/images/func.pngbin468 -> 0 bytes
-rw-r--r--src/plugins/autotest/testresultspane.cpp7
-rw-r--r--src/plugins/autotest/testtreeitem.cpp6
-rw-r--r--src/plugins/clangcodemodel/clangassistproposalitem.cpp29
-rw-r--r--src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp9
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp1
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp2
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp133
-rw-r--r--src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h9
-rw-r--r--src/plugins/classview/classview.pro3
-rw-r--r--src/plugins/classview/classview.qbs1
-rw-r--r--src/plugins/classview/classview.qrc5
-rw-r--r--src/plugins/classview/classviewnavigationwidget.cpp5
-rw-r--r--src/plugins/classview/classviewtreeitemmodel.cpp21
-rw-r--r--src/plugins/classview/images/hierarchicalmode.pngbin573 -> 0 bytes
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildstep.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp9
-rw-r--r--src/plugins/cmakeprojectmanager/cmakekitinformation.cpp13
-rw-r--r--src/plugins/cmakeprojectmanager/cmakekitinformation.h2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.cpp66
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.h3
-rw-r--r--src/plugins/coreplugin/core.qrc8
-rw-r--r--src/plugins/coreplugin/coreicons.cpp10
-rw-r--r--src/plugins/coreplugin/coreicons.h5
-rw-r--r--src/plugins/coreplugin/coreplugin.qbs3
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp4
-rw-r--r--src/plugins/coreplugin/fancytabwidget.cpp14
-rw-r--r--src/plugins/coreplugin/images/boundingrect.png (renamed from src/plugins/qmldesigner/components/formeditor/boundingrect.png)bin108 -> 108 bytes
-rw-r--r--src/plugins/coreplugin/images/boundingrect@2x.png (renamed from src/plugins/qmldesigner/components/formeditor/boundingrect@2x.png)bin122 -> 122 bytes
-rw-r--r--src/plugins/coreplugin/images/interrupt_small.png (renamed from src/plugins/projectexplorer/images/interrupt_small.png)bin94 -> 94 bytes
-rw-r--r--src/plugins/coreplugin/images/interrupt_small@2x.png (renamed from src/plugins/projectexplorer/images/interrupt_small@2x.png)bin98 -> 98 bytes
-rw-r--r--src/plugins/coreplugin/images/run_small.png (renamed from src/plugins/projectexplorer/images/run_small.png)bin130 -> 130 bytes
-rw-r--r--src/plugins/coreplugin/images/run_small@2x.png (renamed from src/plugins/projectexplorer/images/run_small@2x.png)bin187 -> 187 bytes
-rw-r--r--src/plugins/coreplugin/images/stop_small.png (renamed from src/plugins/projectexplorer/images/stop_small.png)bin94 -> 94 bytes
-rw-r--r--src/plugins/coreplugin/images/stop_small@2x.png (renamed from src/plugins/projectexplorer/images/stop_small@2x.png)bin98 -> 98 bytes
-rw-r--r--src/plugins/coreplugin/locator/images/locator.pngbin767 -> 0 bytes
-rw-r--r--src/plugins/coreplugin/locator/images/reload.pngbin735 -> 0 bytes
-rw-r--r--src/plugins/coreplugin/locator/locator.pri3
-rw-r--r--src/plugins/coreplugin/locator/locator.qrc6
-rw-r--r--src/plugins/coreplugin/locator/locatorwidget.cpp2
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp4
-rw-r--r--src/plugins/coreplugin/manhattanstyle.cpp3
-rw-r--r--src/plugins/cppeditor/cppelementevaluator.cpp2
-rw-r--r--src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp3
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp8
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.h1
-rw-r--r--src/plugins/cpptools/cppcompletionassist.cpp20
-rw-r--r--src/plugins/cpptools/cppcompletionassistprocessor.h3
-rw-r--r--src/plugins/cpptools/projectpart.h1
-rw-r--r--src/plugins/cpptools/projectpartbuilder.cpp18
-rw-r--r--src/plugins/cpptools/searchsymbols.cpp3
-rw-r--r--src/plugins/cpptools/searchsymbols.h2
-rw-r--r--src/plugins/debugger/analyzer/analyzericons.h4
-rw-r--r--src/plugins/debugger/analyzer/images/analyzer_overlay_small.pngbin109 -> 103 bytes
-rw-r--r--src/plugins/debugger/analyzer/images/analyzer_overlay_small@2x.pngbin118 -> 113 bytes
-rw-r--r--src/plugins/debugger/debugger.qrc16
-rw-r--r--src/plugins/debugger/debuggerengine.cpp34
-rw-r--r--src/plugins/debugger/debuggericons.h28
-rw-r--r--src/plugins/debugger/debuggermainwindow.cpp27
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp5
-rw-r--r--src/plugins/debugger/debuggerruncontrol.cpp3
-rw-r--r--src/plugins/debugger/gdb/coregdbadapter.cpp9
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp12
-rw-r--r--src/plugins/debugger/gdb/gdbengine.h1
-rw-r--r--src/plugins/debugger/gdb/remotegdbserveradapter.cpp1
-rw-r--r--src/plugins/debugger/images/continue_overlay_small.pngbin163 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/continue_overlay_small@2x.pngbin277 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/debugger_continue_1_mask.pngbin0 -> 97 bytes
-rw-r--r--src/plugins/debugger/images/debugger_continue_1_mask@2x.pngbin0 -> 99 bytes
-rw-r--r--src/plugins/debugger/images/debugger_continue_2_mask.pngbin0 -> 147 bytes
-rw-r--r--src/plugins/debugger/images/debugger_continue_2_mask@2x.pngbin0 -> 192 bytes
-rw-r--r--src/plugins/debugger/images/debugger_continue_mask.pngbin189 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/debugger_continue_mask@2x.pngbin337 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/debugger_interrupt_mask.pngbin96 -> 98 bytes
-rw-r--r--src/plugins/debugger/images/debugger_interrupt_mask@2x.pngbin97 -> 101 bytes
-rw-r--r--src/plugins/debugger/images/interrupt_overlay_small.pngbin94 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/interrupt_overlay_small@2x.pngbin97 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/recordfill.pngbin0 -> 147 bytes
-rw-r--r--src/plugins/debugger/images/recordfill@2x.pngbin0 -> 254 bytes
-rw-r--r--src/plugins/debugger/images/recordoutline.pngbin0 -> 207 bytes
-rw-r--r--src/plugins/debugger/images/recordoutline@2x.pngbin0 -> 393 bytes
-rw-r--r--src/plugins/debugger/images/stop_overlay_small.pngbin94 -> 0 bytes
-rw-r--r--src/plugins/debugger/images/stop_overlay_small@2x.pngbin97 -> 0 bytes
-rw-r--r--src/plugins/debugger/lldb/lldbengine.cpp3
-rw-r--r--src/plugins/debugger/pdb/pdbengine.cpp8
-rw-r--r--src/plugins/debugger/watchdata.cpp27
-rw-r--r--src/plugins/debugger/watchdata.h5
-rw-r--r--src/plugins/debugger/watchhandler.cpp62
-rw-r--r--src/plugins/debugger/watchhandler.h5
-rw-r--r--src/plugins/genericprojectmanager/genericprojectplugin.cpp2
-rw-r--r--src/plugins/glsleditor/glslcompletionassist.cpp86
-rw-r--r--src/plugins/glsleditor/glslcompletionassist.h11
-rw-r--r--src/plugins/glsleditor/glsleditor.qrc9
-rw-r--r--src/plugins/glsleditor/images/attribute.pngbin456 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/const.pngbin478 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/func.pngbin583 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/keyword.pngbin341 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/other.pngbin377 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/type.pngbin573 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/uniform.pngbin461 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/var.pngbin530 -> 0 bytes
-rw-r--r--src/plugins/glsleditor/images/varying.pngbin457 -> 0 bytes
-rw-r--r--src/plugins/imageviewer/images/outline.pngbin593 -> 0 bytes
-rw-r--r--src/plugins/imageviewer/images/pause-small.pngbin399 -> 0 bytes
-rw-r--r--src/plugins/imageviewer/images/play-small.pngbin630 -> 0 bytes
-rw-r--r--src/plugins/imageviewer/imageviewer.cpp7
-rw-r--r--src/plugins/imageviewer/imageviewer.qrc3
-rw-r--r--src/plugins/imageviewer/imageviewerplugin.cpp2
-rw-r--r--src/plugins/imageviewer/imageviewertoolbar.ui4
-rw-r--r--src/plugins/ios/iosruncontrol.cpp5
-rw-r--r--src/plugins/modeleditor/extpropertiesmview.cpp2
-rw-r--r--src/plugins/modeleditor/modeldocument.cpp9
-rw-r--r--src/plugins/modeleditor/modeldocument.h1
-rw-r--r--src/plugins/projectexplorer/appoutputpane.cpp6
-rw-r--r--src/plugins/projectexplorer/devicesupport/desktopdevice.cpp18
-rw-r--r--src/plugins/projectexplorer/devicesupport/desktopdevice.h1
-rw-r--r--src/plugins/projectexplorer/devicesupport/idevice.cpp9
-rw-r--r--src/plugins/projectexplorer/devicesupport/idevice.h22
-rw-r--r--src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp6
-rw-r--r--src/plugins/projectexplorer/environmentaspect.h4
-rw-r--r--src/plugins/projectexplorer/extracompiler.cpp40
-rw-r--r--src/plugins/projectexplorer/extracompiler.h8
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp2
-rw-r--r--src/plugins/projectexplorer/images/clean.pngbin1180 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/clean_small.pngbin785 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/continue_1_small.pngbin0 -> 93 bytes
-rw-r--r--src/plugins/projectexplorer/images/continue_1_small@2x.pngbin0 -> 96 bytes
-rw-r--r--src/plugins/projectexplorer/images/continue_2_small.pngbin0 -> 136 bytes
-rw-r--r--src/plugins/projectexplorer/images/continue_2_small@2x.pngbin0 -> 161 bytes
-rw-r--r--src/plugins/projectexplorer/images/debugger_beetle_mask.pngbin221 -> 198 bytes
-rw-r--r--src/plugins/projectexplorer/images/debugger_beetle_mask@2x.pngbin436 -> 357 bytes
-rw-r--r--src/plugins/projectexplorer/images/debugger_overlay_small.pngbin169 -> 158 bytes
-rw-r--r--src/plugins/projectexplorer/images/debugger_overlay_small@2x.pngbin290 -> 175 bytes
-rw-r--r--src/plugins/projectexplorer/images/debugger_run_mask.pngbin131 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/debugger_run_mask@2x.pngbin197 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/rebuild.pngbin1319 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/rebuild_small.pngbin689 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/rebuildhammerhandles.pngbin0 -> 189 bytes
-rw-r--r--src/plugins/projectexplorer/images/rebuildhammerhandles@2x.pngbin0 -> 267 bytes
-rw-r--r--src/plugins/projectexplorer/images/rebuildhammerheads.pngbin0 -> 180 bytes
-rw-r--r--src/plugins/projectexplorer/images/rebuildhammerheads@2x.pngbin0 -> 169 bytes
-rw-r--r--src/plugins/projectexplorer/images/run_overlay_small.pngbin163 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/images/run_overlay_small@2x.pngbin156 -> 0 bytes
-rw-r--r--src/plugins/projectexplorer/localapplicationruncontrol.cpp7
-rw-r--r--src/plugins/projectexplorer/project.cpp5
-rw-r--r--src/plugins/projectexplorer/project.h3
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp13
-rw-r--r--src/plugins/projectexplorer/projectexplorer.qrc22
-rw-r--r--src/plugins/projectexplorer/projectexplorericons.h27
-rw-r--r--src/plugins/projectexplorer/selectablefilesmodel.cpp24
-rw-r--r--src/plugins/projectexplorer/selectablefilesmodel.h12
-rw-r--r--src/plugins/projectexplorer/target.cpp50
-rw-r--r--src/plugins/projectexplorer/task.cpp4
-rw-r--r--src/plugins/pythoneditor/pythoneditorplugin.cpp4
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp8
-rw-r--r--src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp8
-rw-r--r--src/plugins/qmldesigner/components/formeditor/contentnoteditableindicator.cpp2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditor.qrc2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorview.cpp2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp3
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp2
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp2
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp24
-rw-r--r--src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.h6
-rw-r--r--src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp4
-rw-r--r--src/plugins/qmldesigner/componentsplugin/addtabdesigneraction.cpp8
-rw-r--r--src/plugins/qmldesigner/componentsplugin/entertabdesigneraction.cpp4
-rw-r--r--src/plugins/qmldesigner/componentsplugin/tabviewindexmodel.cpp4
-rw-r--r--src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h2
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodemetainfo.h2
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp4
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp18
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/modelnode.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp6
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp8
-rw-r--r--src/plugins/qmldesigner/designercore/model/qmlstate.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp5
-rw-r--r--src/plugins/qmldesigner/documentmanager.cpp4
-rw-r--r--src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtool.cpp2
-rw-r--r--src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtoolview.cpp2
-rw-r--r--src/plugins/qmldesigner/qmldesignerextension/texttool/textedititem.cpp4
-rw-r--r--src/plugins/qmldesigner/qmldesignericons.h2
-rw-r--r--src/plugins/qmldesigner/settingspage.ui6
-rw-r--r--src/plugins/qmljseditor/qmloutlinemodel.cpp22
-rw-r--r--src/plugins/qmlprofiler/qml/qmlprofiler.qrc2
-rw-r--r--src/plugins/qmlprofiler/qml/recordOff.pngbin406 -> 0 bytes
-rw-r--r--src/plugins/qmlprofiler/qml/recordOn.pngbin484 -> 0 bytes
-rw-r--r--src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp2
-rw-r--r--src/plugins/qmlprofiler/qmlprofilertool.cpp13
-rw-r--r--src/plugins/qmlprofilerextension/qmlprofilerextensionplugin.cpp4
-rw-r--r--src/plugins/qtsupport/customexecutableconfigurationwidget.cpp2
-rw-r--r--src/plugins/remotelinux/linuxdevice.cpp26
-rw-r--r--src/plugins/remotelinux/linuxdevice.h1
-rw-r--r--src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp21
-rw-r--r--src/plugins/remotelinux/remotelinuxenvironmentreader.cpp23
-rw-r--r--src/plugins/remotelinux/remotelinuxenvironmentreader.h19
-rw-r--r--src/plugins/remotelinux/remotelinuxruncontrol.cpp5
-rw-r--r--src/plugins/texteditor/autocompleter.cpp7
-rw-r--r--src/plugins/texteditor/codeassist/genericproposalwidget.cpp1
-rw-r--r--src/plugins/texteditor/texteditor.cpp11
-rw-r--r--src/plugins/todo/todoplugin.cpp2
-rw-r--r--src/plugins/valgrind/callgrindtool.cpp11
-rw-r--r--src/plugins/winrt/winrtruncontrol.cpp4
m---------src/shared/qbs0
-rw-r--r--src/tools/3rdparty/3rdparty.pro3
-rw-r--r--src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp (renamed from src/tools/cplusplus-keywordgen/cplusplus-keywordgen.cpp)0
-rw-r--r--src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.pro3
-rw-r--r--src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.qbs (renamed from src/tools/cplusplus-keywordgen/cplusplus-keywordgen.qbs)2
-rw-r--r--src/tools/cplusplus-keywordgen/cplusplus-keywordgen.pro3
-rw-r--r--src/tools/cplusplustools.qbs2
-rw-r--r--src/tools/icons/qtcreatoricons.svg995
-rw-r--r--src/tools/tools.pro1
-rw-r--r--tests/auto/debugger/debugger.qbs3
-rw-r--r--tests/auto/debugger/offsets.qbs10
-rw-r--r--tests/auto/debugger/tst_dumpers.cpp118
-rw-r--r--tests/auto/debugger/tst_offsets.cpp243
-rw-r--r--tests/auto/qml/codemodel/check/tst_check.cpp4
-rw-r--r--tests/system/shared/build_utils.py5
-rw-r--r--tests/system/shared/debugger.py9
-rwxr-xr-xtests/system/suite_HELP/tst_HELP02/test.py2
-rw-r--r--tests/system/suite_debugger/tst_cli_output_console/test.py2
-rw-r--r--tests/system/suite_debugger/tst_qml_locals/test.py2
-rw-r--r--tests/system/suite_debugger/tst_simple_analyze/test.py2
-rw-r--r--tests/system/suite_debugger/tst_simple_debug/test.py3
341 files changed, 2502 insertions, 1237 deletions
diff --git a/README.md b/README.md
index 551174e094..0b416359b0 100644
--- a/README.md
+++ b/README.md
@@ -216,6 +216,30 @@ we thank the authors who made this possible:
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+### Open Source tool for generating C++ code that classifies keywords (license MIT)
+
+ Roberto Raggi <roberto.raggi@gmail.com>
+
+ QtCreator/src/tools/3rdparty/cplusplus-keywordgen
+
+ Copyright (c) 2007 Roberto Raggi <roberto.raggi@gmail.com>
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
+ this software and associated documentation files (the "Software"), to deal in
+ the Software without restriction, including without limitation the rights to
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
### Botan, a C++ crypto library. Version 1.10.2
diff --git a/doc/images/qtcreator-add-resource.png b/doc/images/qtcreator-add-resource.png
index eb63e964c0..fc5b3ce841 100644
--- a/doc/images/qtcreator-add-resource.png
+++ b/doc/images/qtcreator-add-resource.png
Binary files differ
diff --git a/doc/images/qtcreator-autotests-options.png b/doc/images/qtcreator-autotests-options.png
new file mode 100644
index 0000000000..af231faa40
--- /dev/null
+++ b/doc/images/qtcreator-autotests-options.png
Binary files differ
diff --git a/doc/images/qtcreator-autotests.png b/doc/images/qtcreator-autotests.png
index ee16633a59..e5a2b91bc5 100644
--- a/doc/images/qtcreator-autotests.png
+++ b/doc/images/qtcreator-autotests.png
Binary files differ
diff --git a/doc/images/qtcreator-gerrit-options.png b/doc/images/qtcreator-gerrit-options.png
index 21b3825a1d..cf6be7a328 100644
--- a/doc/images/qtcreator-gerrit-options.png
+++ b/doc/images/qtcreator-gerrit-options.png
Binary files differ
diff --git a/doc/images/qtcreator-gs-build-example-kit-selector.png b/doc/images/qtcreator-gs-build-example-kit-selector.png
index 56023d9cbf..31b318ae9d 100644
--- a/doc/images/qtcreator-gs-build-example-kit-selector.png
+++ b/doc/images/qtcreator-gs-build-example-kit-selector.png
Binary files differ
diff --git a/doc/images/qtcreator-gs-build-example-open.png b/doc/images/qtcreator-gs-build-example-open.png
index 3f34fd3807..49dde00d53 100644
--- a/doc/images/qtcreator-gs-build-example-open.png
+++ b/doc/images/qtcreator-gs-build-example-open.png
Binary files differ
diff --git a/doc/images/qtcreator-textfinder-contents.png b/doc/images/qtcreator-textfinder-contents.png
index 241fc04fc9..fd5b004ed7 100644
--- a/doc/images/qtcreator-textfinder-contents.png
+++ b/doc/images/qtcreator-textfinder-contents.png
Binary files differ
diff --git a/doc/images/qtcreator-vcs-diff.png b/doc/images/qtcreator-vcs-diff.png
index 6568a22def..7500b965eb 100644
--- a/doc/images/qtcreator-vcs-diff.png
+++ b/doc/images/qtcreator-vcs-diff.png
Binary files differ
diff --git a/doc/images/qtcreator-vcs-log.png b/doc/images/qtcreator-vcs-log.png
deleted file mode 100644
index a7750c1812..0000000000
--- a/doc/images/qtcreator-vcs-log.png
+++ /dev/null
Binary files differ
diff --git a/doc/images/qtcreator-vcs-pane.png b/doc/images/qtcreator-vcs-pane.png
index 3c7e21a040..62270b796f 100644
--- a/doc/images/qtcreator-vcs-pane.png
+++ b/doc/images/qtcreator-vcs-pane.png
Binary files differ
diff --git a/doc/images/qtcreator-vcs-show.png b/doc/images/qtcreator-vcs-show.png
new file mode 100644
index 0000000000..610a0f2de0
--- /dev/null
+++ b/doc/images/qtcreator-vcs-show.png
Binary files differ
diff --git a/doc/src/analyze/creator-clang-static-analyzer.qdoc b/doc/src/analyze/creator-clang-static-analyzer.qdoc
index 4f25c44742..6947801052 100644
--- a/doc/src/analyze/creator-clang-static-analyzer.qdoc
+++ b/doc/src/analyze/creator-clang-static-analyzer.qdoc
@@ -49,7 +49,7 @@
To suppress diagnostics, select \uicontrol {Suppress This Diagnostic} in the
context menu. To view the suppression list for a project and to remove
- diagnostics from it, select \uicontrol {Clang Static Analyzer Settings} in
+ diagnostics from it, select \uicontrol {Clang Static Analyzer} in
the \uicontrol Projects mode.
\section1 Setting Up Clang Static Analyzer
diff --git a/doc/src/howto/creator-autotest.qdoc b/doc/src/howto/creator-autotest.qdoc
index 02d6709357..f1dbc974c0 100644
--- a/doc/src/howto/creator-autotest.qdoc
+++ b/doc/src/howto/creator-autotest.qdoc
@@ -31,9 +31,11 @@
\title Running Autotests
- \QC integrates the \l{Qt Test} framework for unit testing Qt based
- applications and libraries. You can use \QC to build and
- run autotests for your projects.
+ \QC integrates the \l{Qt Test} framework and
+ \l{https://github.com/google/googletest}{Google C++ Testing Framework} for
+ unit testing applications and libraries. You can use \QC to build and run
+ Qt tests, Qt Quick tests (QML-based Qt tests), and Google tests for your
+ projects.
\image qtcreator-autotests.png
@@ -41,18 +43,18 @@
\uicontrol {About Plugins} > \uicontrol Utilities > \uicontrol {Auto Test}.
Restart \QC to be able to use the plugin.
- \section1 Creating Autotests
+ \section1 Creating Qt Tests
- You can use a wizard to create projects that contain autotests:
+ You can use a wizard to create projects that contain Qt tests:
\list 1
\li Select \uicontrol File > \uicontrol {New File or Project} >
\uicontrol {Other Project} > \uicontrol {Auto Test} >
- \uicontrol Choose to create a project with boilerplate code for an
- autotest.
+ \uicontrol Choose to create a project with boilerplate code for a
+ Qt test.
\li In the \uicontrol {Project and Test Information} dialog, specify
- settings for the project and autotest:
+ settings for the project and test:
\list 1
@@ -72,7 +74,7 @@
up the test.
\li In the \uicontrol {Build auto tests} field, select
- \uicontrol Always to always build the autotest when building
+ \uicontrol Always to always build the test when building
the project or \uicontrol {Debug Only} to only build it
during debug builds.
@@ -80,18 +82,78 @@
\endlist
- \QC creates the autotest in the \c{tests\auto} directory in the project
+ \QC creates the test in the \c{tests\auto} directory in the project
directory. Edit the .cpp file to add private slots for each test
- function in your test. For more information about creating autotests, see
+ function in your test. For more information about creating Qt tests, see
\l{Creating a Test}.
- \section1 Building and Running Autotests
+ \section1 Setting Up the Google C++ Testing Framework
- To build and run autotests:
+ To build and run Google tests, you must have the Google C++ Testing
+ framework installed and configured on the development host. You can either
+ clone it from Git Hub or install it from an installation package.
+
+ To configure a project to use a cloned Google testing framework, edit the
+ \c INCLUDEPATH variable in the project file (.pro) to include the source
+ and \c include folders of Google Test's \c googletest and \c googlemock.
+ Usually, you need to add the following subfolders:
+
+ \list
+ \li \c googletest
+ \li \c googlemock
+ \li \c googletest/include
+ \li \c googlemock/include
+ \endlist
+
+ You also need to add the necessary files to the \c SOURCES variable. For
+ example:
+
+ \list
+ \li \c googletest/src/gtest-all.cc
+ \li \c googlemock/src/gmock-all.cc
+ \endlist
+
+ To configure a project to use an installed Google testing framework package,
+ add the following include paths to the .pro file:
+
+ \list
+ \li \c <googletest_install_path>/include/gtest
+ \li \c <googletest_install_path>/include/gmock
+ \endlist
+
+ Then add linker options to be able to find the libraries and to link against
+ them. For example, for qmake based projects, you typically need to add the
+ following values to the .pro file:
+
+ \list
+ \li \c {LIBS += -lgtest -L<path_to_gtest_lib>}
+ \li \c {LIBS += -lgmock -L<path_to_gmock_lib>}
+ \endlist
+
+ To specify settings for running Google tests, select \uicontrol Tools >
+ \uicontrol Options > \uicontrol {Test Settings}.
+
+ \image qtcreator-autotests-options.png
+
+ To run disabled tests, select the \uicontrol {Run disabled tests} check box.
+
+ To run several iterations of the tests, select the \uicontrol {Repeat tests}
+ check box and enter the number of times the tests should be run in the
+ \uicontrol Iterations field. To make sure that the tests are independent and
+ repeatable, you can run them in a different order each time by selecting the
+ \uicontrol {Shuffle tests} check box.
+
+ For more information about creating Google tests, see the
+ \l{https://github.com/google/googletest/blob/master/googletest/docs/Primer.md}
+ {Google Test Primer}.
+
+ \section1 Building and Running Tests
+
+ To build and run tests:
\list 1
- \li Open a project that contains autotests.
+ \li Open a project that contains tests.
\li In the \uicontrol {Test Results} output pane, select
\inlineimage qtcreator-run.png
@@ -109,9 +171,14 @@
\endlist
If a test takes more than a minute to execute, the default timeout might
- stop the test execution. To increase the timeout, select \uicontrol Tools >
+ stop the test execution. To increase the timeout, select \uicontrol Tools >
\uicontrol Options > \uicontrol {Test Settings}.
+ \QC scans the project for tests when you open the project and updates the
+ test list when you edit tests. To only update the test list when the
+ \uicontrol Tests view or the \uicontrol {Test Results} output pane is open,
+ deselect the \uicontrol {Always parse current project for tests} check box.
+
The code inside a benchmark test is measured, and possibly also repeated
several times in order to get an accurate measurement. This depends on the
measurement back-end that you can select in \uicontrol {Test Settings}:
diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc
index 97b8c2d1e0..7ec6f935c0 100644
--- a/doc/src/howto/creator-ui.qdoc
+++ b/doc/src/howto/creator-ui.qdoc
@@ -491,7 +491,7 @@
To determine whether the keywords in the whole project or in the current
file are displayed by default, select \uicontrol {Scanning scope}.
- To exclude files from scanning, select \uicontrol {To-Do Settings} in the
+ To exclude files from scanning, select \uicontrol {To-Do} in the
\uicontrol Projects mode. Select \uicontrol Add and enter a regular
expression that matches the path to files to exclude. Use a forward slash
(/) as a separator in the path also on Windows.
@@ -523,6 +523,8 @@
\list
+ \li Export SVG images to pixmaps
+
\li Switch between background and outline modes
\li Zoom in and out
@@ -535,6 +537,13 @@
\endlist
+ \section2 Exporting SVG Images
+
+ If you receive a freely scalable icon in the SVG format from an UI designer,
+ you can export it to several images of different sizes to create a set of
+ pixmaps. You can then use QIcon::addPixmap() to add the pixmaps to icons in
+ different modes and states.
+
\section1 Navigating with Keyboard
\QC caters not only to developers who are used to using the mouse,
diff --git a/doc/src/howto/creator-vcs.qdoc b/doc/src/howto/creator-vcs.qdoc
index 3246926a93..30f26e26a1 100644
--- a/doc/src/howto/creator-vcs.qdoc
+++ b/doc/src/howto/creator-vcs.qdoc
@@ -211,7 +211,7 @@
With Git and Subversion, the diff is displayed side-by-side in a \l{Comparing Files}
{diff editor} by default. To use the inline diff view instead, select the
- \uicontrol {Switch to Text Diff Editor} option from the toolbar. In the inline
+ \uicontrol {Switch to Text Diff Editor} (1) option from the toolbar. In the inline
diff view, you can use context menu commands to apply, revert, stage, and
unstage hunks, as well as send them to a code pasting service.
@@ -241,13 +241,15 @@
Display the versioning history of a file by selecting \uicontrol{Log}
or \uicontrol{Filelog}. Typically, the log output contains the date, the commit
message, and a change or revision identifier. Click on the identifier to
- display a description of the change including the diff.
+ display a description of the change including the diff in the
+ \uicontrol {Git Show} view.
+
+ \image qtcreator-vcs-show.png
+
Right-clicking on an identifier brings up a context menu that lets you
show annotation views of previous versions (see \l{Annotating Files}).
With Git you can also choose to cherry-pick or revert a change.
- \image qtcreator-vcs-log.png
-
\section2 Annotating Files
Annotation views are obtained by selecting \uicontrol{Annotate} or \uicontrol{Blame}.
diff --git a/doc/src/overview/creator-configuring.qdoc b/doc/src/overview/creator-configuring.qdoc
index b394eda301..7ec9efa497 100644
--- a/doc/src/overview/creator-configuring.qdoc
+++ b/doc/src/overview/creator-configuring.qdoc
@@ -108,8 +108,8 @@
Themes enable you to customize the appearance of the \QC UI: widgets,
colors, and icons.
- To switch from the default theme to a dark theme, select \uicontrol Tools >
- \uicontrol Options > \uicontrol Environment, and then select \uicontrol Dark
+ To switch themes, select \uicontrol Tools > \uicontrol Options >
+ \uicontrol Environment, and then select a theme
in the \uicontrol Theme field.
You can use the \QC text and code editors with your favorite color scheme
diff --git a/doc/src/overview/creator-overview.qdoc b/doc/src/overview/creator-overview.qdoc
index a9bf26f3f1..1c2bf533e7 100644
--- a/doc/src/overview/creator-overview.qdoc
+++ b/doc/src/overview/creator-overview.qdoc
@@ -112,9 +112,9 @@
execution. In addition, the QML Profiler enables you to profile
Qt Quick applications.
- \QC is integrated to the \l{Qt Test} framework for unit testing
- Qt based applications and libraries. You can use \QC to build
- and run autotests.
+ \QC is integrated to the \l{Qt Test} and Google C++ Testing
+ frameworks for unit testing applications and libraries. You can
+ use \QC to build and run autotests.
For more information, see \l{Testing}.
\li \b {Publishing}
diff --git a/doc/src/overview/creator-testing.qdoc b/doc/src/overview/creator-testing.qdoc
index c70f8ff562..a4e1ccd4b4 100644
--- a/doc/src/overview/creator-testing.qdoc
+++ b/doc/src/overview/creator-testing.qdoc
@@ -61,7 +61,7 @@
\li \l{Running Autotests}
You can use an experimental Auto Test plugin to build and run
- autotests using \QC.
+ Qt tests, Qt Quick tests, and Google tests using \QC.
\endlist
diff --git a/doc/src/projects/creator-projects-creating.qdoc b/doc/src/projects/creator-projects-creating.qdoc
index 3e72cf5abd..05a8969a8d 100644
--- a/doc/src/projects/creator-projects-creating.qdoc
+++ b/doc/src/projects/creator-projects-creating.qdoc
@@ -172,8 +172,8 @@
\li Qt Auto Test
- Projects with boilerplate code for an autotest. For more
- information, see \l {Creating Autotests}.
+ Projects with boilerplate code for a Qt test. For more
+ information, see \l {Creating Qt Tests}.
\li Qt Quick UI
diff --git a/doc/src/projects/creator-projects-settings-overview.qdoc b/doc/src/projects/creator-projects-settings-overview.qdoc
index 1b6f1da9e8..1d1dbeacee 100644
--- a/doc/src/projects/creator-projects-settings-overview.qdoc
+++ b/doc/src/projects/creator-projects-settings-overview.qdoc
@@ -95,9 +95,9 @@
\li \l{Specifying Dependencies}{Dependencies}
- \li \l{Using Clang Static Analyzer}{Clang Static Analyzer Settings}
+ \li \l{Using Clang Static Analyzer}{Clang Static Analyzer}
- \li \l{To-Do List}{To-Do Settings} (experimental)
+ \li \l{To-Do List}{To-Do} (experimental)
\endlist
diff --git a/share/qtcreator/static.pri b/qtcreatordata.pri
index 63807050f0..27a21263f1 100644
--- a/share/qtcreator/static.pri
+++ b/qtcreatordata.pri
@@ -7,7 +7,7 @@
# STATIC_BASE - base directory for the files listed in STATIC_FILES
# STATIC_FILES - list of files to be deployed
-include(../../qtcreator.pri)
+include(qtcreator.pri)
# used in custom compilers which just copy files
defineReplace(stripStaticBase) {
diff --git a/scripts/dependencyinfo.py b/scripts/dependencyinfo.py
index 834402dda0..834402dda0 100644..100755
--- a/scripts/dependencyinfo.py
+++ b/scripts/dependencyinfo.py
diff --git a/scripts/gcc2tasks.pl b/scripts/gcc2tasks.pl
index 448a231c6a..448a231c6a 100644..100755
--- a/scripts/gcc2tasks.pl
+++ b/scripts/gcc2tasks.pl
diff --git a/scripts/hasCopyright.pl b/scripts/hasCopyright.pl
index 49a8a50b10..49a8a50b10 100644..100755
--- a/scripts/hasCopyright.pl
+++ b/scripts/hasCopyright.pl
diff --git a/scripts/msvc2tasks.pl b/scripts/msvc2tasks.pl
index 8c04888a90..8c04888a90 100644..100755
--- a/scripts/msvc2tasks.pl
+++ b/scripts/msvc2tasks.pl
diff --git a/scripts/mytasks.pl b/scripts/mytasks.pl
index 3e6fcdc3e9..3e6fcdc3e9 100644..100755
--- a/scripts/mytasks.pl
+++ b/scripts/mytasks.pl
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 234925efd2..1fb49dd32d 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -429,6 +429,8 @@ class DumperBase:
# Hex encoding operating on str or bytes, return str.
def hexencode(self, s):
+ if s is None:
+ s = ''
if sys.version_info[0] == 2:
return s.encode("hex")
if isinstance(s, str):
@@ -1049,12 +1051,23 @@ class DumperBase:
# This is shared by pointer and array formatting.
def tryPutSimpleFormattedPointer(self, value, typeName, innerTypeName, displayFormat, limit):
- if displayFormat == AutomaticFormat and innerTypeName == "char":
- # Use Latin1 as default for char *.
- self.putType(typeName)
- (elided, data) = self.encodeCArray(value, 1, limit)
- self.putValue(data, "latin1", elided=elided)
- return True
+ if displayFormat == AutomaticFormat:
+ if innerTypeName == "char":
+ # Use UTF-8 as default for char *.
+ self.putType(typeName)
+ (elided, data) = self.encodeCArray(value, 1, limit)
+ self.putValue(data, "utf8", elided=elided)
+ return True
+
+ if innerTypeName == "wchar_t":
+ self.putType(typeName)
+ charSize = self.lookupType('wchar_t').sizeof
+ (elided, data) = self.encodeCArray(value, charSize, limit)
+ if charSize == 2:
+ self.putValue(data, "utf16", elided=elided)
+ else:
+ self.putValue(data, "ucs4", elided=elided)
+ return True
if displayFormat == Latin1StringFormat:
self.putType(typeName)
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py
index 46086a0c2b..02029d700b 100644
--- a/share/qtcreator/debugger/gdbbridge.py
+++ b/share/qtcreator/debugger/gdbbridge.py
@@ -285,7 +285,6 @@ class Dumper(DumperBase):
self.autoDerefPointers = int(args.get("autoderef", "0"))
self.partialUpdate = int(args.get("partial", "0"))
self.fallbackQtVersion = 0x50200
- self.sortStructMembers = bool(args.get("sortstructs", True))
#warn("NAMESPACE: '%s'" % self.qtNamespace())
#warn("EXPANDED INAMES: %s" % self.expandedINames)
@@ -436,7 +435,6 @@ class Dumper(DumperBase):
# Don't bother. It's only supplementary information anyway.
pass
- locals.sort(key = lambda item: item.name)
for item in locals:
value = self.downcast(item.value) if self.useDynamicType else item.value
with OutputSafer(self):
@@ -1144,6 +1142,7 @@ class Dumper(DumperBase):
if self.currentIName in self.expandedINames:
innerType = None
+ self.put('sortable="1"')
with Children(self, 1, childType=innerType):
self.putFields(value)
if not self.showQObjectNames:
@@ -1215,15 +1214,6 @@ class Dumper(DumperBase):
def putFields(self, value, dumpBase = True):
fields = value.type.fields()
- if self.sortStructMembers:
- def sortOrder(field):
- if field.is_base_class:
- return 0
- if field.name and field.name.startswith("_vptr."):
- return 1
- return 2
- fields.sort(key = lambda field: "%d%s" % (sortOrder(field), field.name))
-
#warn("TYPE: %s" % value.type)
#warn("FIELDS: %s" % fields)
baseNumber = 0
@@ -1257,6 +1247,7 @@ class Dumper(DumperBase):
# int (**)(void)
n = 100
self.putType(" ")
+ self.put('sortgroup="1"')
self.putValue(value[field.name])
self.putNumChild(n)
if self.isExpanded():
@@ -1280,6 +1271,7 @@ class Dumper(DumperBase):
baseNumber += 1
with UnnamedSubItem(self, "@%d" % baseNumber):
baseValue = value.cast(field.type)
+ self.put('sortgroup="2"')
self.putBaseClassName(field.name)
self.putAddress(baseValue.address)
self.putItem(baseValue, False)
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py
index 0570533dc6..08e3689662 100644
--- a/share/qtcreator/debugger/lldbbridge.py
+++ b/share/qtcreator/debugger/lldbbridge.py
@@ -1092,6 +1092,7 @@ class Dumper(DumperBase):
self.putQObjectNameValue(value)
if self.currentIName in self.expandedINames:
+ self.put('sortable="1"')
with Children(self):
self.putFields(value)
if not self.showQObjectNames:
@@ -1134,8 +1135,6 @@ class Dumper(DumperBase):
baseObject = value.Cast(baseClass)
baseObjects.append(ChildItem(baseClass.GetName(), baseObject))
- if self.sortStructMembers:
- baseObjects.sort(key = lambda baseObject: str(baseObject.name))
for i in xrange(len(baseObjects)):
baseObject = baseObjects[i]
with UnnamedSubItem(self, "@%d" % (i + 1)):
@@ -1147,8 +1146,6 @@ class Dumper(DumperBase):
if memberCount > 10000:
memberCount = 10000
children = [value.GetChildAtIndex(memberBase + i) for i in xrange(memberCount)]
- if self.sortStructMembers:
- children.sort(key = lambda child: str(child.GetName()))
for child in children:
# Only needed in the QVariant4 test.
if int(child.GetLoadAddress()) == 0xffffffffffffffff:
@@ -1169,7 +1166,6 @@ class Dumper(DumperBase):
self.expandedINames = set(args.get('expanded', []))
self.autoDerefPointers = int(args.get('autoderef', '0'))
- self.sortStructMembers = bool(args.get('sortstructs', True));
self.useDynamicType = int(args.get('dyntype', '0'))
self.useFancy = int(args.get('fancy', '0'))
self.passExceptions = int(args.get('passexceptions', '0'))
@@ -1390,12 +1386,12 @@ class Dumper(DumperBase):
elif eventType == lldb.SBProcess.eBroadcastBitSTDOUT:
# FIXME: Size?
msg = self.process.GetSTDOUT(1024)
- self.report('output={channel="stdout",data="%s"}'
- % self.hexencode(msg))
+ if msg is not None:
+ self.report('output={channel="stdout",data="%s"}' % self.hexencode(msg))
elif eventType == lldb.SBProcess.eBroadcastBitSTDERR:
msg = self.process.GetSTDERR(1024)
- self.report('output={channel="stderr",data="%s"}'
- % self.hexencode(msg))
+ if msg is not None:
+ self.report('output={channel="stderr",data="%s"}' % self.hexencode(msg))
elif eventType == lldb.SBProcess.eBroadcastBitProfileData:
pass
diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py
index 0d8908730a..ce475385a0 100644
--- a/share/qtcreator/debugger/qttypes.py
+++ b/share/qtcreator/debugger/qttypes.py
@@ -82,6 +82,22 @@ def qdump__QByteArrayData(d, value):
d.putIntItem("size", size)
d.putIntItem("alloc", alloc)
+
+def qdump__QBitArray(d, value):
+ data, basize, alloc = d.byteArrayDataHelper(d.extractPointer(value["d"]))
+ unused = d.extractByte(data)
+ size = basize * 8 - unused
+ d.putItemCount(size)
+ if d.isExpanded():
+ with Children(d, size, maxNumChild=10000):
+ for i in d.childRange():
+ q = data + 1 + int(i / 8)
+ with SubItem(d, i):
+ d.putValue((int(d.extractPointer(q)) >> (i % 8)) & 1)
+ d.putType("bool")
+ d.putNumChild(0)
+
+
def qdump__QChar(d, value):
d.putValue(int(value["ucs"]))
d.putNumChild(0)
diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py
index 26d75b3b45..d4e59f28c3 100644
--- a/share/qtcreator/debugger/stdtypes.py
+++ b/share/qtcreator/debugger/stdtypes.py
@@ -750,6 +750,15 @@ def qdump__std____debug__unordered_set(d, value):
qdump__std__unordered_set(d, value)
+def qform__std__valarray():
+ return arrayForms()
+
+def qdump__std__valarray(d, value):
+ size = value["_M_size"]
+ d.putItemCount(size)
+ d.putPlotData(value["_M_data"], size, d.templateArgument(value.type, 0))
+
+
def qform__std__vector():
return arrayForms()
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
index 908cc0695b..7179596200 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp
@@ -1049,7 +1049,8 @@ InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand
static bool supportedVariantType(int type)
{
- return type < int(QVariant::UserType) && type != QMetaType::QObjectStar;
+ return type < int(QVariant::UserType) && type != QMetaType::QObjectStar
+ && type != QMetaType::QModelIndex;
}
ValuesChangedCommand NodeInstanceServer::createValuesChangedCommand(const QList<ServerNodeInstance> &instanceList) const
diff --git a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri
index 357c85c920..a72b032488 100644
--- a/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri
+++ b/share/qtcreator/qml/qmlpuppet/qmlprivategate/qmlprivategate.pri
@@ -1,5 +1,29 @@
INCLUDEPATH += $$PWD/
+# in case we are building the puppet inside qtcreator we don't have the qtcreator.pri where this function comes from
+defineTest(minQtVersion) {
+ maj = $$1
+ min = $$2
+ patch = $$3
+ isEqual(QT_MAJOR_VERSION, $$maj) {
+ isEqual(QT_MINOR_VERSION, $$min) {
+ isEqual(QT_PATCH_VERSION, $$patch) {
+ return(true)
+ }
+ greaterThan(QT_PATCH_VERSION, $$patch) {
+ return(true)
+ }
+ }
+ greaterThan(QT_MINOR_VERSION, $$min) {
+ return(true)
+ }
+ }
+ greaterThan(QT_MAJOR_VERSION, $$maj) {
+ return(true)
+ }
+ return(false)
+}
+
minQtVersion(5, 6, 0) {
HEADERS += \
$$PWD/qmlprivategate.h
diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro
index f22a875be1..ec7a5a9839 100644
--- a/share/qtcreator/static.pro
+++ b/share/qtcreator/static.pro
@@ -1,25 +1,4 @@
-TEMPLATE = app
-TARGET = phony_target
-CONFIG -= qt sdk separate_debug_info gdb_dwarf_index
-QT =
-LIBS =
-macx:CONFIG -= app_bundle
-
-isEmpty(vcproj) {
- QMAKE_LINK = @: IGNORE THIS LINE
- OBJECTS_DIR =
- win32:CONFIG -= embed_manifest_exe
-} else {
- CONFIG += console
- PHONY_DEPS = .
- phony_src.input = PHONY_DEPS
- phony_src.output = phony.c
- phony_src.variable_out = GENERATED_SOURCES
- phony_src.commands = echo int main() { return 0; } > phony.c
- phony_src.name = CREATE phony.c
- phony_src.CONFIG += combine
- QMAKE_EXTRA_COMPILERS += phony_src
-}
+TEMPLATE = aux
STATIC_BASE = $$PWD
@@ -52,7 +31,7 @@ for(data_dir, DATA_DIRS) {
STATIC_FILES += $$file
}
-include(static.pri)
+include(../../qtcreatordata.pri)
SRCRESOURCEDIR = $$IDE_SOURCE_TREE/src/share/qtcreator/
defineReplace(stripSrcResourceDir) {
diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme
index c60e04cbda..bc94ac1e19 100644
--- a/share/qtcreator/themes/dark.creatortheme
+++ b/share/qtcreator/themes/dark.creatortheme
@@ -71,6 +71,18 @@ IconsModeDebugActiveColor=ff99aaef
IconsModeProjetcsActiveColor=ff80c342
IconsModeAnalyzeActiveColor=ff43adee
IconsModeHelpActiveColor=fff4be04
+IconsCodeModelKeywordColor=ffaaaaaa
+IconsCodeModelClassColor=ffc0b550
+IconsCodeModelStructColor=ff53b053
+IconsCodeModelFunctionColor=ffd34373
+IconsCodeModelVariableColor=ff2bbbcc
+IconsCodeModelEnumColor=ffc0b550
+IconsCodeModelMacroColor=ff477ba0
+IconsCodeModelAttributeColor=ff316511
+IconsCodeModelUniformColor=ff994899
+IconsCodeModelVaryingColor=ffa08833
+IconsCodeModelOverlayBackgroundColor=88000000
+IconsCodeModelOverlayForegroundColor=ffdcdcdc
InfoBarBackground=ff505000
InfoBarText=text
MenuBarEmptyAreaBackgroundColor=shadowBackground
diff --git a/share/qtcreator/themes/default.creatortheme b/share/qtcreator/themes/default.creatortheme
index 5a688c7d99..b6dcbcca12 100644
--- a/share/qtcreator/themes/default.creatortheme
+++ b/share/qtcreator/themes/default.creatortheme
@@ -65,6 +65,18 @@ IconsModeDebugActiveColor=ffffffff
IconsModeProjetcsActiveColor=ffffffff
IconsModeAnalyzeActiveColor=ffffffff
IconsModeHelpActiveColor=ffffffff
+IconsCodeModelKeywordColor=ff777777
+IconsCodeModelClassColor=ffc0b550
+IconsCodeModelStructColor=ff53b053
+IconsCodeModelFunctionColor=fff36393
+IconsCodeModelVariableColor=ff2bbbcc
+IconsCodeModelEnumColor=ffc0b550
+IconsCodeModelMacroColor=ff476ba0
+IconsCodeModelAttributeColor=ff316511
+IconsCodeModelUniformColor=ff994899
+IconsCodeModelVaryingColor=ffa08833
+IconsCodeModelOverlayBackgroundColor=70ffffff
+IconsCodeModelOverlayForegroundColor=ff232425
InfoBarBackground=ffffffe1
InfoBarText=ff000000
MenuBarEmptyAreaBackgroundColor=ffff0000
diff --git a/share/qtcreator/themes/defaultflat.creatortheme b/share/qtcreator/themes/defaultflat.creatortheme
index 9b208b961c..c8d51b6ca7 100644
--- a/share/qtcreator/themes/defaultflat.creatortheme
+++ b/share/qtcreator/themes/defaultflat.creatortheme
@@ -8,6 +8,8 @@ text=ff000000
textDisabled=55000000
toolBarItem=b6fbfdff
toolBarItemDisabled=60a4a6a8
+fancyBarsNormalTextColor=ffffffff
+fancyBarsBoldTextColor=b6fbfdff
hoverBackground=22ffffff
selectedBackground=66000000
normalBackground=ffffffff
@@ -29,7 +31,7 @@ BadgeLabelTextColorUnchecked=ffffffff
CanceledSearchTextColor=ff0000
ComboBoxArrowColor=toolBarItem
ComboBoxArrowColorDisabled=toolBarItemDisabled
-ComboBoxTextColor=toolBarItem
+ComboBoxTextColor=fancyBarsNormalTextColor
DetailsButtonBackgroundColorHover=b4ffffff
DetailsWidgetBackgroundColor=28ffffff
DockWidgetResizeHandleColor=splitter
@@ -46,8 +48,8 @@ FancyToolBarSeparatorColor=toolBarItemDisabled
FancyTabBarBackgroundColor=shadowBackground
FancyTabWidgetDisabledSelectedTextColor=toolBarItemDisabled
FancyTabWidgetDisabledUnselectedTextColor=toolBarItemDisabled
-FancyTabWidgetEnabledSelectedTextColor=toolBarItem
-FancyTabWidgetEnabledUnselectedTextColor=toolBarItem
+FancyTabWidgetEnabledSelectedTextColor=fancyBarsBoldTextColor
+FancyTabWidgetEnabledUnselectedTextColor=fancyBarsBoldTextColor
FancyToolButtonHoverColor=hoverBackground
FancyToolButtonSelectedColor=selectedBackground
FutureProgressBackgroundColor=shadowBackground
@@ -60,7 +62,7 @@ IconsWarningToolBarColor=fff2d76e
IconsErrorColor=ffdf4f4f
IconsErrorToolBarColor=ffdb6f71
IconsRunColor=dda4d576
-IconsStopColor=dddb6f71
+IconsStopColor=ddff8c8c
IconsDebugColor=toolBarItem
IconsInterruptColor=dd7488db
IconsNavigationArrowsColor=ffebc322
@@ -73,6 +75,18 @@ IconsModeDebugActiveColor=ff99aaef
IconsModeProjetcsActiveColor=ff80c342
IconsModeAnalyzeActiveColor=ff43adee
IconsModeHelpActiveColor=fff4be04
+IconsCodeModelKeywordColor=ff777777
+IconsCodeModelClassColor=ffc0b550
+IconsCodeModelStructColor=ff53b053
+IconsCodeModelFunctionColor=ffd34373
+IconsCodeModelVariableColor=ff2bbbcc
+IconsCodeModelEnumColor=ffc0b550
+IconsCodeModelMacroColor=ff476ba0
+IconsCodeModelAttributeColor=ff316511
+IconsCodeModelUniformColor=ff994899
+IconsCodeModelVaryingColor=ffa08833
+IconsCodeModelOverlayBackgroundColor=70ffffff
+IconsCodeModelOverlayForegroundColor=ff232425
InfoBarBackground=ffffffe1
InfoBarText=text
MenuBarEmptyAreaBackgroundColor=shadowBackground
@@ -89,11 +103,11 @@ PanelStatusBarBackgroundColor=shadowBackground
PanelsWidgetSeparatorLineColor=0
PanelTextColorDark=text
PanelTextColorMid=ff666666
-PanelTextColorLight=toolBarItem
+PanelTextColorLight=fancyBarsNormalTextColor
ProgressBarColorError=ffdb6f71
ProgressBarColorFinished=dda4d576
ProgressBarColorNormal=ff999999
-ProgressBarTitleColor=toolBarItem
+ProgressBarTitleColor=fancyBarsBoldTextColor
ProgressBarBackgroundColor=a0606060
SplitterColor=splitter
TextColorDisabled=textDisabled
@@ -124,8 +138,8 @@ OutputPanes_TestWarnTextColor=ffd0bb00
OutputPanes_TestFatalTextColor=ff640000
OutputPanes_TestDebugTextColor=ff329696
OutputPaneButtonFlashColor=ffff0000
-OutputPaneToggleButtonTextColorChecked=toolBarItem
-OutputPaneToggleButtonTextColorUnchecked=toolBarItem
+OutputPaneToggleButtonTextColorChecked=fancyBarsNormalTextColor
+OutputPaneToggleButtonTextColorUnchecked=fancyBarsNormalTextColor
Debugger_LogWindow_LogInput=ff00acac
Debugger_LogWindow_LogStatus=ff00875a
diff --git a/share/qtcreator/translations/translations.pro b/share/qtcreator/translations/translations.pro
index fdf6170e6f..3bfd35167d 100644
--- a/share/qtcreator/translations/translations.pro
+++ b/share/qtcreator/translations/translations.pro
@@ -1,3 +1,5 @@
+TEMPLATE = aux
+
include(../../../qtcreator.pri)
LANGUAGES = cs de fr ja pl ru sl uk zh_CN zh_TW
@@ -113,12 +115,6 @@ ts.commands = \
echo \"rename the file and re-run \'qmake\'.\"
QMAKE_EXTRA_TARGETS += ts
-TEMPLATE = app
-TARGET = phony_target2
-CONFIG -= qt sdk separate_debug_info gdb_dwarf_index
-QT =
-LIBS =
-
updateqm.input = TRANSLATIONS
updateqm.output = $$IDE_DATA_PATH/translations/${QMAKE_FILE_BASE}.qm
isEmpty(vcproj):updateqm.variable_out = PRE_TARGETDEPS
@@ -127,22 +123,6 @@ updateqm.name = LRELEASE ${QMAKE_FILE_IN}
updateqm.CONFIG += no_link
QMAKE_EXTRA_COMPILERS += updateqm
-isEmpty(vcproj) {
- QMAKE_LINK = @: IGNORE THIS LINE
- OBJECTS_DIR =
- win32:CONFIG -= embed_manifest_exe
-} else {
- CONFIG += console
- PHONY_DEPS = .
- phony_src.input = PHONY_DEPS
- phony_src.output = phony.c
- phony_src.variable_out = GENERATED_SOURCES
- phony_src.commands = echo int main() { return 0; } > phony.c
- phony_src.name = CREATE phony.c
- phony_src.CONFIG += combine
- QMAKE_EXTRA_COMPILERS += phony_src
-}
-
qmfiles.files = $$prependAll(LANGUAGES, $$OUT_PWD/qtcreator_,.qm)
qmfiles.path = $$INSTALL_DATA_PATH/translations
qmfiles.CONFIG += no_check_exist
diff --git a/src/libs/cplusplus/Icons.cpp b/src/libs/cplusplus/Icons.cpp
index 6141840c30..7a539c67eb 100644
--- a/src/libs/cplusplus/Icons.cpp
+++ b/src/libs/cplusplus/Icons.cpp
@@ -30,49 +30,24 @@
#include <cplusplus/Symbols.h>
#include <cplusplus/Type.h>
+#include <utils/icon.h>
+
using namespace CPlusPlus;
using CPlusPlus::Icons;
-Icons::Icons()
- : _classIcon(QLatin1String(":/codemodel/images/class.png")),
- _structIcon(QLatin1String(":/codemodel/images/struct.png")),
- _enumIcon(QLatin1String(":/codemodel/images/enum.png")),
- _enumeratorIcon(QLatin1String(":/codemodel/images/enumerator.png")),
- _funcPublicIcon(QLatin1String(":/codemodel/images/func.png")),
- _funcProtectedIcon(QLatin1String(":/codemodel/images/func_prot.png")),
- _funcPrivateIcon(QLatin1String(":/codemodel/images/func_priv.png")),
- _funcPublicStaticIcon(QLatin1String(":/codemodel/images/func_st.png")),
- _funcProtectedStaticIcon(QLatin1String(":/codemodel/images/func_prot_st.png")),
- _funcPrivateStaticIcon(QLatin1String(":/codemodel/images/func_priv_st.png")),
- _namespaceIcon(QLatin1String(":/codemodel/images/namespace.png")),
- _varPublicIcon(QLatin1String(":/codemodel/images/var.png")),
- _varProtectedIcon(QLatin1String(":/codemodel/images/var_prot.png")),
- _varPrivateIcon(QLatin1String(":/codemodel/images/var_priv.png")),
- _varPublicStaticIcon(QLatin1String(":/codemodel/images/var_st.png")),
- _varProtectedStaticIcon(QLatin1String(":/codemodel/images/var_prot_st.png")),
- _varPrivateStaticIcon(QLatin1String(":/codemodel/images/var_priv_st.png")),
- _signalIcon(QLatin1String(":/codemodel/images/signal.png")),
- _slotPublicIcon(QLatin1String(":/codemodel/images/slot.png")),
- _slotProtectedIcon(QLatin1String(":/codemodel/images/slot_prot.png")),
- _slotPrivateIcon(QLatin1String(":/codemodel/images/slot_priv.png")),
- _keywordIcon(QLatin1String(":/codemodel/images/keyword.png")),
- _macroIcon(QLatin1String(":/codemodel/images/macro.png"))
-{
-}
-
-QIcon Icons::iconForSymbol(const Symbol *symbol) const
+QIcon Icons::iconForSymbol(const Symbol *symbol)
{
return iconForType(iconTypeForSymbol(symbol));
}
-QIcon Icons::keywordIcon() const
+QIcon Icons::keywordIcon()
{
- return _keywordIcon;
+ return iconForType(KeywordIconType);
}
-QIcon Icons::macroIcon() const
+QIcon Icons::macroIcon()
{
- return _macroIcon;
+ return iconForType(MacroIconType);
}
Icons::IconType Icons::iconTypeForSymbol(const Symbol *symbol)
@@ -141,55 +116,181 @@ Icons::IconType Icons::iconTypeForSymbol(const Symbol *symbol)
return UnknownIconType;
}
-QIcon Icons::iconForType(IconType type) const
+QIcon Icons::iconForType(IconType type)
{
+ using namespace Utils;
+
+ static const IconMaskAndColor classRelationIcon {
+ QLatin1String(":/codemodel/images/classrelation.png"), Theme::IconsCodeModelOverlayForegroundColor};
+ static const IconMaskAndColor classRelationBackgroundIcon {
+ QLatin1String(":/codemodel/images/classrelationbackground.png"), Theme::IconsCodeModelOverlayBackgroundColor};
+ static const IconMaskAndColor classMemberFunctionIcon {
+ QLatin1String(":/codemodel/images/classmemberfunction.png"), Theme::IconsCodeModelFunctionColor};
+ static const IconMaskAndColor classMemberVariableIcon {
+ QLatin1String(":/codemodel/images/classmembervariable.png"), Theme::IconsCodeModelVariableColor};
+ static const IconMaskAndColor functionIcon {
+ QLatin1String(":/codemodel/images/member.png"), Theme::IconsCodeModelFunctionColor};
+ static const IconMaskAndColor variableIcon {
+ QLatin1String(":/codemodel/images/member.png"), Theme::IconsCodeModelVariableColor};
+ static const IconMaskAndColor signalIcon {
+ QLatin1String(":/codemodel/images/signal.png"), Theme::IconsCodeModelFunctionColor};
+ static const IconMaskAndColor slotIcon {
+ QLatin1String(":/codemodel/images/slot.png"), Theme::IconsCodeModelFunctionColor};
+ static const IconMaskAndColor protectedIcon {
+ QLatin1String(":/codemodel/images/protected.png"), Theme::IconsCodeModelOverlayForegroundColor};
+ static const IconMaskAndColor protectedBackgroundIcon {
+ QLatin1String(":/codemodel/images/protectedbackground.png"), Theme::IconsCodeModelOverlayBackgroundColor};
+ static const IconMaskAndColor privateIcon {
+ QLatin1String(":/codemodel/images/private.png"), Theme::IconsCodeModelOverlayForegroundColor};
+ static const IconMaskAndColor privateBackgroundIcon {
+ QLatin1String(":/codemodel/images/privatebackground.png"), Theme::IconsCodeModelOverlayBackgroundColor};
+ static const IconMaskAndColor staticIcon {
+ QLatin1String(":/codemodel/images/static.png"), Theme::IconsCodeModelOverlayForegroundColor};
+ static const IconMaskAndColor staticBackgroundIcon {
+ QLatin1String(":/codemodel/images/staticbackground.png"), Theme::IconsCodeModelOverlayBackgroundColor};
+
switch (type) {
- case ClassIconType:
- return _classIcon;
- case StructIconType:
- return _structIcon;
- case EnumIconType:
- return _enumIcon;
- case EnumeratorIconType:
- return _enumeratorIcon;
- case FuncPublicIconType:
- return _funcPublicIcon;
- case FuncProtectedIconType:
- return _funcProtectedIcon;
- case FuncPrivateIconType:
- return _funcPrivateIcon;
- case FuncPublicStaticIconType:
- return _funcPublicStaticIcon;
- case FuncProtectedStaticIconType:
- return _funcProtectedStaticIcon;
- case FuncPrivateStaticIconType:
- return _funcPrivateStaticIcon;
- case NamespaceIconType:
- return _namespaceIcon;
- case VarPublicIconType:
- return _varPublicIcon;
- case VarProtectedIconType:
- return _varProtectedIcon;
- case VarPrivateIconType:
- return _varPrivateIcon;
- case VarPublicStaticIconType:
- return _varPublicStaticIcon;
- case VarProtectedStaticIconType:
- return _varProtectedStaticIcon;
- case VarPrivateStaticIconType:
- return _varPrivateStaticIcon;
- case SignalIconType:
- return _signalIcon;
- case SlotPublicIconType:
- return _slotPublicIcon;
- case SlotProtectedIconType:
- return _slotProtectedIcon;
- case SlotPrivateIconType:
- return _slotPrivateIcon;
- case KeywordIconType:
- return _keywordIcon;
- case MacroIconType:
- return _macroIcon;
+ case ClassIconType: {
+ const static QIcon icon(Icon({
+ classRelationBackgroundIcon, classRelationIcon,
+ {QLatin1String(":/codemodel/images/classparent.png"), Theme::IconsCodeModelClassColor},
+ classMemberFunctionIcon, classMemberVariableIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case StructIconType: {
+ const static QIcon icon(Icon({
+ classRelationBackgroundIcon, classRelationIcon,
+ {QLatin1String(":/codemodel/images/classparent.png"), Theme::IconsCodeModelStructColor},
+ classMemberFunctionIcon, classMemberVariableIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case EnumIconType: {
+ const static QIcon icon(Icon({
+ {QLatin1String(":/codemodel/images/enum.png"), Theme::IconsCodeModelEnumColor}
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case EnumeratorIconType: {
+ const static QIcon icon(Icon({
+ {QLatin1String(":/codemodel/images/enumerator.png"), Theme::IconsCodeModelEnumColor}
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case FuncPublicIconType: {
+ const static QIcon icon(Icon({
+ functionIcon}, Icon::Tint).icon());
+ return icon;
+ }
+ case FuncProtectedIconType: {
+ const static QIcon icon(Icon({
+ functionIcon, protectedBackgroundIcon, protectedIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case FuncPrivateIconType: {
+ const static QIcon icon(Icon({
+ functionIcon, privateBackgroundIcon, privateIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case FuncPublicStaticIconType: {
+ const static QIcon icon(Icon({
+ functionIcon, staticBackgroundIcon, staticIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case FuncProtectedStaticIconType: {
+ const static QIcon icon(Icon({
+ functionIcon, staticBackgroundIcon, staticIcon, protectedBackgroundIcon, protectedIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case FuncPrivateStaticIconType: {
+ const static QIcon icon(Icon({
+ functionIcon, staticBackgroundIcon, staticIcon, privateBackgroundIcon, privateIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case NamespaceIconType: {
+ const static QIcon icon(Icon({
+ {QLatin1String(":/codemodel/images/namespace.png"), Theme::IconsCodeModelKeywordColor}
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case VarPublicIconType: {
+ const static QIcon icon(Icon({
+ variableIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case VarProtectedIconType: {
+ const static QIcon icon(Icon({
+ variableIcon, protectedBackgroundIcon, protectedIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case VarPrivateIconType: {
+ const static QIcon icon(Icon({
+ variableIcon, privateBackgroundIcon, privateIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case VarPublicStaticIconType: {
+ const static QIcon icon(Icon({
+ variableIcon, staticBackgroundIcon, staticIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case VarProtectedStaticIconType: {
+ const static QIcon icon(Icon({
+ variableIcon, staticBackgroundIcon, staticIcon, protectedBackgroundIcon, protectedIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case VarPrivateStaticIconType: {
+ const static QIcon icon(Icon({
+ variableIcon, staticBackgroundIcon, staticIcon, privateBackgroundIcon, privateIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case SignalIconType: {
+ const static QIcon icon(Icon({
+ signalIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case SlotPublicIconType: {
+ const static QIcon icon(Icon({
+ slotIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case SlotProtectedIconType: {
+ const static QIcon icon(Icon({
+ slotIcon, protectedBackgroundIcon, protectedIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case SlotPrivateIconType: {
+ const static QIcon icon(Icon({
+ slotIcon, privateBackgroundIcon, privateIcon
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case KeywordIconType: {
+ const static QIcon icon(Icon({
+ {QLatin1String(":/codemodel/images/keyword.png"), Theme::IconsCodeModelKeywordColor}
+ }, Icon::Tint).icon());
+ return icon;
+ }
+ case MacroIconType: {
+ const static QIcon icon(Icon({
+ {QLatin1String(":/codemodel/images/macro.png"), Theme::IconsCodeModelMacroColor}
+ }, Icon::Tint).icon());
+ return icon;
+ }
default:
break;
}
diff --git a/src/libs/cplusplus/Icons.h b/src/libs/cplusplus/Icons.h
index 51c550aae7..2b8ce0beee 100644
--- a/src/libs/cplusplus/Icons.h
+++ b/src/libs/cplusplus/Icons.h
@@ -36,12 +36,10 @@ class Symbol;
class CPLUSPLUS_EXPORT Icons
{
public:
- Icons();
+ static QIcon iconForSymbol(const Symbol *symbol);
- QIcon iconForSymbol(const Symbol *symbol) const;
-
- QIcon keywordIcon() const;
- QIcon macroIcon() const;
+ static QIcon keywordIcon();
+ static QIcon macroIcon();
enum IconType {
ClassIconType = 0,
@@ -71,32 +69,10 @@ public:
};
static IconType iconTypeForSymbol(const Symbol *symbol);
- QIcon iconForType(IconType type) const;
+ static QIcon iconForType(IconType type);
private:
- QIcon _classIcon;
- QIcon _structIcon;
- QIcon _enumIcon;
- QIcon _enumeratorIcon;
- QIcon _funcPublicIcon;
- QIcon _funcProtectedIcon;
- QIcon _funcPrivateIcon;
- QIcon _funcPublicStaticIcon;
- QIcon _funcProtectedStaticIcon;
- QIcon _funcPrivateStaticIcon;
- QIcon _namespaceIcon;
- QIcon _varPublicIcon;
- QIcon _varProtectedIcon;
- QIcon _varPrivateIcon;
- QIcon _varPublicStaticIcon;
- QIcon _varProtectedStaticIcon;
- QIcon _varPrivateStaticIcon;
- QIcon _signalIcon;
- QIcon _slotPublicIcon;
- QIcon _slotProtectedIcon;
- QIcon _slotPrivateIcon;
- QIcon _keywordIcon;
- QIcon _macroIcon;
+ Icons() {}
};
} // namespace CPlusPlus
diff --git a/src/libs/cplusplus/OverviewModel.cpp b/src/libs/cplusplus/OverviewModel.cpp
index be389ab5fb..f37d5456ef 100644
--- a/src/libs/cplusplus/OverviewModel.cpp
+++ b/src/libs/cplusplus/OverviewModel.cpp
@@ -27,6 +27,7 @@
#include "Overview.h"
+#include <cplusplus/Icons.h>
#include <cplusplus/Scope.h>
#include <cplusplus/Literals.h>
#include <cplusplus/Symbols.h>
@@ -210,7 +211,7 @@ QVariant OverviewModel::data(const QModelIndex &index, int role) const
case Qt::DecorationRole: {
Symbol *symbol = static_cast<Symbol *>(index.internalPointer());
- return _icons.iconForSymbol(symbol);
+ return Icons::iconForSymbol(symbol);
} break;
case FileNameRole: {
diff --git a/src/libs/cplusplus/OverviewModel.h b/src/libs/cplusplus/OverviewModel.h
index bd558b8244..5b958e0ef5 100644
--- a/src/libs/cplusplus/OverviewModel.h
+++ b/src/libs/cplusplus/OverviewModel.h
@@ -27,7 +27,6 @@
#include "CppDocument.h"
#include "Overview.h"
-#include "Icons.h"
#include <QAbstractItemModel>
@@ -72,7 +71,6 @@ private:
private:
Document::Ptr _cppDocument;
Overview _overview;
- Icons _icons;
};
} // namespace CPlusPlus
diff --git a/src/libs/cplusplus/cplusplus.qbs b/src/libs/cplusplus/cplusplus.qbs
index dd4012d633..8d7c38c883 100644
--- a/src/libs/cplusplus/cplusplus.qbs
+++ b/src/libs/cplusplus/cplusplus.qbs
@@ -126,30 +126,6 @@ QtcLibrary {
]
}
- Group {
- name: "Images"
- prefix: "images/"
- files: [
- "class.png",
- "struct.png",
- "enum.png",
- "enumerator.png",
- "func.png",
- "func_priv.png",
- "func_prot.png",
- "keyword.png",
- "macro.png",
- "namespace.png",
- "signal.png",
- "slot.png",
- "slot_priv.png",
- "slot_prot.png",
- "var.png",
- "var_priv.png",
- "var_prot.png",
- ]
- }
-
Export {
cpp.includePaths: [
"../3rdparty"
diff --git a/src/libs/cplusplus/cplusplus.qrc b/src/libs/cplusplus/cplusplus.qrc
index 9b5812d83c..d0135fdee8 100644
--- a/src/libs/cplusplus/cplusplus.qrc
+++ b/src/libs/cplusplus/cplusplus.qrc
@@ -1,27 +1,42 @@
<RCC>
<qresource prefix="/codemodel">
- <file>images/class.png</file>
- <file>images/struct.png</file>
<file>images/enum.png</file>
+ <file>images/enum@2x.png</file>
<file>images/enumerator.png</file>
- <file>images/func.png</file>
- <file>images/func_priv.png</file>
- <file>images/func_prot.png</file>
+ <file>images/enumerator@2x.png</file>
<file>images/keyword.png</file>
+ <file>images/keyword@2x.png</file>
<file>images/macro.png</file>
+ <file>images/macro@2x.png</file>
<file>images/namespace.png</file>
+ <file>images/namespace@2x.png</file>
<file>images/signal.png</file>
+ <file>images/signal@2x.png</file>
<file>images/slot.png</file>
- <file>images/slot_priv.png</file>
- <file>images/slot_prot.png</file>
- <file>images/var.png</file>
- <file>images/var_priv.png</file>
- <file>images/var_prot.png</file>
- <file>images/func_priv_st.png</file>
- <file>images/func_prot_st.png</file>
- <file>images/func_st.png</file>
- <file>images/var_priv_st.png</file>
- <file>images/var_prot_st.png</file>
- <file>images/var_st.png</file>
+ <file>images/slot@2x.png</file>
+ <file>images/member.png</file>
+ <file>images/member@2x.png</file>
+ <file>images/private.png</file>
+ <file>images/private@2x.png</file>
+ <file>images/privatebackground.png</file>
+ <file>images/privatebackground@2x.png</file>
+ <file>images/protected.png</file>
+ <file>images/protected@2x.png</file>
+ <file>images/protectedbackground.png</file>
+ <file>images/protectedbackground@2x.png</file>
+ <file>images/static.png</file>
+ <file>images/static@2x.png</file>
+ <file>images/staticbackground.png</file>
+ <file>images/staticbackground@2x.png</file>
+ <file>images/classmemberfunction.png</file>
+ <file>images/classmemberfunction@2x.png</file>
+ <file>images/classmembervariable.png</file>
+ <file>images/classmembervariable@2x.png</file>
+ <file>images/classparent.png</file>
+ <file>images/classparent@2x.png</file>
+ <file>images/classrelation.png</file>
+ <file>images/classrelation@2x.png</file>
+ <file>images/classrelationbackground.png</file>
+ <file>images/classrelationbackground@2x.png</file>
</qresource>
</RCC>
diff --git a/src/libs/cplusplus/images/class.png b/src/libs/cplusplus/images/class.png
deleted file mode 100644
index 88432d2cb1..0000000000
--- a/src/libs/cplusplus/images/class.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/classmemberfunction.png b/src/libs/cplusplus/images/classmemberfunction.png
new file mode 100644
index 0000000000..f97d706e7f
--- /dev/null
+++ b/src/libs/cplusplus/images/classmemberfunction.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classmemberfunction@2x.png b/src/libs/cplusplus/images/classmemberfunction@2x.png
new file mode 100644
index 0000000000..f30e61336b
--- /dev/null
+++ b/src/libs/cplusplus/images/classmemberfunction@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classmembervariable.png b/src/libs/cplusplus/images/classmembervariable.png
new file mode 100644
index 0000000000..82f8024b2e
--- /dev/null
+++ b/src/libs/cplusplus/images/classmembervariable.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classmembervariable@2x.png b/src/libs/cplusplus/images/classmembervariable@2x.png
new file mode 100644
index 0000000000..6f426c3a41
--- /dev/null
+++ b/src/libs/cplusplus/images/classmembervariable@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classparent.png b/src/libs/cplusplus/images/classparent.png
new file mode 100644
index 0000000000..19bb952842
--- /dev/null
+++ b/src/libs/cplusplus/images/classparent.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classparent@2x.png b/src/libs/cplusplus/images/classparent@2x.png
new file mode 100644
index 0000000000..5ae4e36890
--- /dev/null
+++ b/src/libs/cplusplus/images/classparent@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classrelation.png b/src/libs/cplusplus/images/classrelation.png
new file mode 100644
index 0000000000..acf3c8e269
--- /dev/null
+++ b/src/libs/cplusplus/images/classrelation.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classrelation@2x.png b/src/libs/cplusplus/images/classrelation@2x.png
new file mode 100644
index 0000000000..6da54dd223
--- /dev/null
+++ b/src/libs/cplusplus/images/classrelation@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classrelationbackground.png b/src/libs/cplusplus/images/classrelationbackground.png
new file mode 100644
index 0000000000..601c8b3321
--- /dev/null
+++ b/src/libs/cplusplus/images/classrelationbackground.png
Binary files differ
diff --git a/src/libs/cplusplus/images/classrelationbackground@2x.png b/src/libs/cplusplus/images/classrelationbackground@2x.png
new file mode 100644
index 0000000000..530e3d4c1e
--- /dev/null
+++ b/src/libs/cplusplus/images/classrelationbackground@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/enum.png b/src/libs/cplusplus/images/enum.png
index 42a9e83bc7..c769846370 100644
--- a/src/libs/cplusplus/images/enum.png
+++ b/src/libs/cplusplus/images/enum.png
Binary files differ
diff --git a/src/libs/cplusplus/images/enum@2x.png b/src/libs/cplusplus/images/enum@2x.png
new file mode 100644
index 0000000000..562ac461d3
--- /dev/null
+++ b/src/libs/cplusplus/images/enum@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/enumerator.png b/src/libs/cplusplus/images/enumerator.png
index 25fc49c659..292f387ff5 100644
--- a/src/libs/cplusplus/images/enumerator.png
+++ b/src/libs/cplusplus/images/enumerator.png
Binary files differ
diff --git a/src/libs/cplusplus/images/enumerator@2x.png b/src/libs/cplusplus/images/enumerator@2x.png
new file mode 100644
index 0000000000..705e86be9e
--- /dev/null
+++ b/src/libs/cplusplus/images/enumerator@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/func.png b/src/libs/cplusplus/images/func.png
deleted file mode 100644
index e515e76e61..0000000000
--- a/src/libs/cplusplus/images/func.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/func_priv.png b/src/libs/cplusplus/images/func_priv.png
deleted file mode 100644
index 49dda7dfea..0000000000
--- a/src/libs/cplusplus/images/func_priv.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/func_priv_st.png b/src/libs/cplusplus/images/func_priv_st.png
deleted file mode 100644
index 1d6fa2da79..0000000000
--- a/src/libs/cplusplus/images/func_priv_st.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/func_prot.png b/src/libs/cplusplus/images/func_prot.png
deleted file mode 100644
index f8add65e07..0000000000
--- a/src/libs/cplusplus/images/func_prot.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/func_prot_st.png b/src/libs/cplusplus/images/func_prot_st.png
deleted file mode 100644
index d023fe1fd2..0000000000
--- a/src/libs/cplusplus/images/func_prot_st.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/func_st.png b/src/libs/cplusplus/images/func_st.png
deleted file mode 100644
index 05119102ed..0000000000
--- a/src/libs/cplusplus/images/func_st.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/keyword.png b/src/libs/cplusplus/images/keyword.png
index e5a51858d9..335e63eeaf 100644
--- a/src/libs/cplusplus/images/keyword.png
+++ b/src/libs/cplusplus/images/keyword.png
Binary files differ
diff --git a/src/libs/cplusplus/images/keyword@2x.png b/src/libs/cplusplus/images/keyword@2x.png
new file mode 100644
index 0000000000..bfbe3c49cb
--- /dev/null
+++ b/src/libs/cplusplus/images/keyword@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/macro.png b/src/libs/cplusplus/images/macro.png
index 4477647069..aa621fce04 100644
--- a/src/libs/cplusplus/images/macro.png
+++ b/src/libs/cplusplus/images/macro.png
Binary files differ
diff --git a/src/libs/cplusplus/images/macro@2x.png b/src/libs/cplusplus/images/macro@2x.png
new file mode 100644
index 0000000000..67b5938fc9
--- /dev/null
+++ b/src/libs/cplusplus/images/macro@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/member.png b/src/libs/cplusplus/images/member.png
new file mode 100644
index 0000000000..e974865e93
--- /dev/null
+++ b/src/libs/cplusplus/images/member.png
Binary files differ
diff --git a/src/libs/cplusplus/images/member@2x.png b/src/libs/cplusplus/images/member@2x.png
new file mode 100644
index 0000000000..d0a22156c0
--- /dev/null
+++ b/src/libs/cplusplus/images/member@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/namespace.png b/src/libs/cplusplus/images/namespace.png
index 18d2941572..b36b2a4acf 100644
--- a/src/libs/cplusplus/images/namespace.png
+++ b/src/libs/cplusplus/images/namespace.png
Binary files differ
diff --git a/src/libs/cplusplus/images/namespace@2x.png b/src/libs/cplusplus/images/namespace@2x.png
new file mode 100644
index 0000000000..81109db2b3
--- /dev/null
+++ b/src/libs/cplusplus/images/namespace@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/private.png b/src/libs/cplusplus/images/private.png
new file mode 100644
index 0000000000..8e25668d80
--- /dev/null
+++ b/src/libs/cplusplus/images/private.png
Binary files differ
diff --git a/src/libs/cplusplus/images/private@2x.png b/src/libs/cplusplus/images/private@2x.png
new file mode 100644
index 0000000000..348785c1ba
--- /dev/null
+++ b/src/libs/cplusplus/images/private@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/privatebackground.png b/src/libs/cplusplus/images/privatebackground.png
new file mode 100644
index 0000000000..0c482e5e3b
--- /dev/null
+++ b/src/libs/cplusplus/images/privatebackground.png
Binary files differ
diff --git a/src/libs/cplusplus/images/privatebackground@2x.png b/src/libs/cplusplus/images/privatebackground@2x.png
new file mode 100644
index 0000000000..e29934552e
--- /dev/null
+++ b/src/libs/cplusplus/images/privatebackground@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/protected.png b/src/libs/cplusplus/images/protected.png
new file mode 100644
index 0000000000..2c87cf2c09
--- /dev/null
+++ b/src/libs/cplusplus/images/protected.png
Binary files differ
diff --git a/src/libs/cplusplus/images/protected@2x.png b/src/libs/cplusplus/images/protected@2x.png
new file mode 100644
index 0000000000..ad1c62356c
--- /dev/null
+++ b/src/libs/cplusplus/images/protected@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/protectedbackground.png b/src/libs/cplusplus/images/protectedbackground.png
new file mode 100644
index 0000000000..d3c1b51334
--- /dev/null
+++ b/src/libs/cplusplus/images/protectedbackground.png
Binary files differ
diff --git a/src/libs/cplusplus/images/protectedbackground@2x.png b/src/libs/cplusplus/images/protectedbackground@2x.png
new file mode 100644
index 0000000000..3f129b5ce0
--- /dev/null
+++ b/src/libs/cplusplus/images/protectedbackground@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/signal.png b/src/libs/cplusplus/images/signal.png
index 062b626182..ff712b8619 100644
--- a/src/libs/cplusplus/images/signal.png
+++ b/src/libs/cplusplus/images/signal.png
Binary files differ
diff --git a/src/libs/cplusplus/images/signal@2x.png b/src/libs/cplusplus/images/signal@2x.png
new file mode 100644
index 0000000000..241e3d7634
--- /dev/null
+++ b/src/libs/cplusplus/images/signal@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/slot.png b/src/libs/cplusplus/images/slot.png
index f1591d2fdb..1c06b59727 100644
--- a/src/libs/cplusplus/images/slot.png
+++ b/src/libs/cplusplus/images/slot.png
Binary files differ
diff --git a/src/libs/cplusplus/images/slot@2x.png b/src/libs/cplusplus/images/slot@2x.png
new file mode 100644
index 0000000000..f1a96a773a
--- /dev/null
+++ b/src/libs/cplusplus/images/slot@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/slot_priv.png b/src/libs/cplusplus/images/slot_priv.png
deleted file mode 100644
index 3f5f62a5f6..0000000000
--- a/src/libs/cplusplus/images/slot_priv.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/slot_prot.png b/src/libs/cplusplus/images/slot_prot.png
deleted file mode 100644
index 92a8682663..0000000000
--- a/src/libs/cplusplus/images/slot_prot.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/static.png b/src/libs/cplusplus/images/static.png
index 12c244780d..988d55d825 100644
--- a/src/libs/cplusplus/images/static.png
+++ b/src/libs/cplusplus/images/static.png
Binary files differ
diff --git a/src/libs/cplusplus/images/static@2x.png b/src/libs/cplusplus/images/static@2x.png
new file mode 100644
index 0000000000..93b9d17751
--- /dev/null
+++ b/src/libs/cplusplus/images/static@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/staticbackground.png b/src/libs/cplusplus/images/staticbackground.png
new file mode 100644
index 0000000000..314bace86a
--- /dev/null
+++ b/src/libs/cplusplus/images/staticbackground.png
Binary files differ
diff --git a/src/libs/cplusplus/images/staticbackground@2x.png b/src/libs/cplusplus/images/staticbackground@2x.png
new file mode 100644
index 0000000000..912032dcae
--- /dev/null
+++ b/src/libs/cplusplus/images/staticbackground@2x.png
Binary files differ
diff --git a/src/libs/cplusplus/images/struct.png b/src/libs/cplusplus/images/struct.png
deleted file mode 100644
index 4b613f68f9..0000000000
--- a/src/libs/cplusplus/images/struct.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/var.png b/src/libs/cplusplus/images/var.png
deleted file mode 100644
index 089cfb45e5..0000000000
--- a/src/libs/cplusplus/images/var.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/var_priv.png b/src/libs/cplusplus/images/var_priv.png
deleted file mode 100644
index 8c6cf64fe7..0000000000
--- a/src/libs/cplusplus/images/var_priv.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/var_priv_st.png b/src/libs/cplusplus/images/var_priv_st.png
deleted file mode 100644
index 81ef73f3f9..0000000000
--- a/src/libs/cplusplus/images/var_priv_st.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/var_prot.png b/src/libs/cplusplus/images/var_prot.png
deleted file mode 100644
index a7496aada0..0000000000
--- a/src/libs/cplusplus/images/var_prot.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/var_prot_st.png b/src/libs/cplusplus/images/var_prot_st.png
deleted file mode 100644
index f078b2fd34..0000000000
--- a/src/libs/cplusplus/images/var_prot_st.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/cplusplus/images/var_st.png b/src/libs/cplusplus/images/var_st.png
deleted file mode 100644
index 2070ca71b6..0000000000
--- a/src/libs/cplusplus/images/var_st.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/qmljs/images/element.png b/src/libs/qmljs/images/element.png
deleted file mode 100644
index 88432d2cb1..0000000000
--- a/src/libs/qmljs/images/element.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/qmljs/images/func.png b/src/libs/qmljs/images/func.png
deleted file mode 100644
index e515e76e61..0000000000
--- a/src/libs/qmljs/images/func.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/qmljs/images/property.png b/src/libs/qmljs/images/property.png
deleted file mode 100644
index 089cfb45e5..0000000000
--- a/src/libs/qmljs/images/property.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/qmljs/images/publicmember.png b/src/libs/qmljs/images/publicmember.png
deleted file mode 100644
index e515e76e61..0000000000
--- a/src/libs/qmljs/images/publicmember.png
+++ /dev/null
Binary files differ
diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri
index bcdd88ef3f..020d402349 100644
--- a/src/libs/qmljs/qmljs-lib.pri
+++ b/src/libs/qmljs/qmljs-lib.pri
@@ -77,10 +77,6 @@ SOURCES += \
$$PWD/qmljsdescribevalue.cpp \
$$PWD/qmljsdialect.cpp
-
-RESOURCES += \
- $$PWD/qmljs.qrc
-
DISTFILES += \
$$PWD/parser/qmljs.g
diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs
index a60c092b83..f8b89cc311 100644
--- a/src/libs/qmljs/qmljs.qbs
+++ b/src/libs/qmljs/qmljs.qbs
@@ -19,7 +19,6 @@ QtcLibrary {
files: [
"jsoncheck.cpp", "jsoncheck.h",
"persistenttrie.cpp", "persistenttrie.h",
- "qmljs.qrc",
"qmljs_global.h",
"qmljsbind.cpp", "qmljsbind.h",
"qmljsbundle.cpp", "qmljsbundle.h",
@@ -60,17 +59,6 @@ QtcLibrary {
}
Group {
- name: "Images"
- prefix: "images/"
- files: [
- "element.png",
- "func.png",
- "property.png",
- "publicmember.png",
- ]
- }
-
- Group {
name: "Parser"
prefix: "parser/"
files: [
diff --git a/src/libs/qmljs/qmljs.qrc b/src/libs/qmljs/qmljs.qrc
deleted file mode 100644
index f7b88c2b24..0000000000
--- a/src/libs/qmljs/qmljs.qrc
+++ /dev/null
@@ -1,8 +0,0 @@
-<RCC>
- <qresource prefix="/qmljs">
- <file>images/element.png</file>
- <file>images/property.png</file>
- <file>images/publicmember.png</file>
- <file>images/func.png</file>
- </qresource>
-</RCC>
diff --git a/src/libs/qmljs/qmljsicons.cpp b/src/libs/qmljs/qmljsicons.cpp
index 2a2e8f3518..411c0d2c37 100644
--- a/src/libs/qmljs/qmljsicons.cpp
+++ b/src/libs/qmljs/qmljsicons.cpp
@@ -25,6 +25,8 @@
#include "qmljsicons.h"
+#include <cplusplus/Icons.h>
+
#include <QDir>
#include <QHash>
#include <QIcon>
@@ -47,10 +49,6 @@ Icons *Icons::m_instance = 0;
class IconsPrivate
{
public:
- QIcon elementIcon;
- QIcon propertyIcon;
- QIcon publicMemberIcon;
- QIcon functionDeclarationIcon;
QHash<QPair<QString,QString>,QIcon> iconHash;
QString resourcePath;
};
@@ -60,10 +58,6 @@ public:
Icons::Icons()
: d(new IconsPrivate)
{
- d->elementIcon = QIcon(QLatin1String(":/qmljs/images/element.png"));
- d->propertyIcon = QIcon(QLatin1String(":/qmljs/images/property.png"));
- d->publicMemberIcon = QIcon(QLatin1String(":/qmljs/images/publicmember.png"));
- d->functionDeclarationIcon = QIcon(QLatin1String(":/qmljs/images/func.png"));
}
Icons::~Icons()
@@ -117,7 +111,7 @@ QIcon Icons::icon(const QString &packageName, const QString typeName) const
return d->iconHash.value(element);
}
-QIcon Icons::icon(Node *node) const
+QIcon Icons::icon(Node *node)
{
if (dynamic_cast<AST::UiObjectDefinition*>(node))
return objectDefinitionIcon();
@@ -127,22 +121,22 @@ QIcon Icons::icon(Node *node) const
return QIcon();
}
-QIcon Icons::objectDefinitionIcon() const
+QIcon Icons::objectDefinitionIcon()
{
- return d->elementIcon;
+ return CPlusPlus::Icons::iconForType(CPlusPlus::Icons::ClassIconType);
}
-QIcon Icons::scriptBindingIcon() const
+QIcon Icons::scriptBindingIcon()
{
- return d->propertyIcon;
+ return CPlusPlus::Icons::iconForType(CPlusPlus::Icons::VarPublicIconType);
}
-QIcon Icons::publicMemberIcon() const
+QIcon Icons::publicMemberIcon()
{
- return d->publicMemberIcon;
+ return CPlusPlus::Icons::iconForType(CPlusPlus::Icons::FuncPublicIconType);
}
-QIcon Icons::functionDeclarationIcon() const
+QIcon Icons::functionDeclarationIcon()
{
- return d->functionDeclarationIcon;
+ return CPlusPlus::Icons::iconForType(CPlusPlus::Icons::FuncPublicIconType);
}
diff --git a/src/libs/qmljs/qmljsicons.h b/src/libs/qmljs/qmljsicons.h
index 989e088ad1..1ff4cadf9d 100644
--- a/src/libs/qmljs/qmljsicons.h
+++ b/src/libs/qmljs/qmljsicons.h
@@ -44,12 +44,12 @@ public:
void setIconFilesPath(const QString &iconPath);
QIcon icon(const QString &packageName, const QString typeName) const;
- QIcon icon(AST::Node *node) const;
+ static QIcon icon(AST::Node *node);
- QIcon objectDefinitionIcon() const;
- QIcon scriptBindingIcon() const;
- QIcon publicMemberIcon() const;
- QIcon functionDeclarationIcon() const;
+ static QIcon objectDefinitionIcon();
+ static QIcon scriptBindingIcon();
+ static QIcon publicMemberIcon();
+ static QIcon functionDeclarationIcon();
private:
Icons();
diff --git a/src/libs/qtcreatorcdbext/containers.cpp b/src/libs/qtcreatorcdbext/containers.cpp
index f4446ea39d..e61fbd68e6 100644
--- a/src/libs/qtcreatorcdbext/containers.cpp
+++ b/src/libs/qtcreatorcdbext/containers.cpp
@@ -192,6 +192,7 @@ int containerSize(KnownType kt, const SymbolGroupValue &v)
case KT_StdSet:
case KT_StdMap:
case KT_StdMultiMap:
+ case KT_StdValArray:
case KT_StdList:
if (const SymbolGroupValue size = SymbolGroupValue::findMember(v, "_Mysize"))
return size.intValue();
@@ -349,29 +350,42 @@ static inline AbstractSymbolGroupNodePtrVector
return AbstractSymbolGroupNodePtrVector();
}
-// std::vector<T>
+
static inline AbstractSymbolGroupNodePtrVector
- stdVectorChildList(SymbolGroupNode *n, unsigned count, const SymbolGroupValueContext &ctx)
+ arrayChildListHelper(SymbolGroupNode *n, unsigned count, const SymbolGroupValueContext &ctx,
+ std::string arrayMember)
{
if (!count)
return AbstractSymbolGroupNodePtrVector();
- // MSVC2012 has 2 base classes, MSVC2010 1, MSVC2008 none
- const SymbolGroupValue vec = SymbolGroupValue(n, ctx);
- SymbolGroupValue myFirst = SymbolGroupValue::findMember(vec, "_Myfirst");
- if (!myFirst)
+ const SymbolGroupValue val = SymbolGroupValue(n, ctx);
+ SymbolGroupValue arrayPtr = SymbolGroupValue::findMember(val, arrayMember.c_str());
+ if (!arrayPtr)
return AbstractSymbolGroupNodePtrVector();
- // std::vector<T>: _Myfirst is a pointer of T*. Get address
- // element to obtain address.
- const ULONG64 address = myFirst.pointerValue();
+ // arrayMember is a pointer of T*. Get address element to obtain address.
+ const ULONG64 address = arrayPtr.pointerValue();
if (!address)
return AbstractSymbolGroupNodePtrVector();
- const std::string firstType = myFirst.type();
- const std::string innerType = fixInnerType(SymbolGroupValue::stripPointerType(firstType), vec);
+ const std::string firstType = arrayPtr.type();
+ const std::string innerType = fixInnerType(SymbolGroupValue::stripPointerType(firstType), val);
if (SymbolGroupValue::verbose)
DebugPrint() << n->name() << " inner type: '" << innerType << "' from '" << firstType << '\'';
return arrayChildList(n->symbolGroup(), address, n->module(), innerType, count);
}
+// std::vector<T>
+static inline AbstractSymbolGroupNodePtrVector
+ stdVectorChildList(SymbolGroupNode *n, unsigned count, const SymbolGroupValueContext &ctx)
+{
+ return arrayChildListHelper(n, count, ctx, "_Myfirst");
+}
+
+// std::valarray<T>
+static inline AbstractSymbolGroupNodePtrVector stdValArrayChildList(
+ SymbolGroupNode *n, unsigned count, const SymbolGroupValueContext &ctx)
+{
+ return arrayChildListHelper(n, count, ctx, "_Myptr");
+}
+
// Helper for std::deque<>: From the array of deque blocks, read out the values.
template<class AddressType>
AbstractSymbolGroupNodePtrVector
@@ -1142,6 +1156,8 @@ AbstractSymbolGroupNodePtrVector containerChildren(SymbolGroupNode *node, int ty
return stdListChildList(node, size , ctx);
case KT_StdArray:
return stdArrayChildList(node, size , ctx);
+ case KT_StdValArray:
+ return stdValArrayChildList(node, size , ctx);
case KT_StdDeque:
return stdDequeChildList(SymbolGroupValue(node, ctx), size);
case KT_StdStack:
diff --git a/src/libs/qtcreatorcdbext/knowntype.h b/src/libs/qtcreatorcdbext/knowntype.h
index 6e4d9bf799..4b9f00099e 100644
--- a/src/libs/qtcreatorcdbext/knowntype.h
+++ b/src/libs/qtcreatorcdbext/knowntype.h
@@ -175,5 +175,6 @@ enum KnownType
KT_StdSet = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 5,
KT_StdMap = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 6,
KT_StdMultiMap = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 7,
- KT_StdArray = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 8
+ KT_StdArray = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 8,
+ KT_StdValArray = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 9
};
diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
index 8f829cc207..9fde18be18 100644
--- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
+++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
@@ -1112,6 +1112,8 @@ static KnownType knownClassTypeHelper(const std::string &type,
case 8:
if (!type.compare(hPos, 8, "multimap"))
return KT_StdMultiMap;
+ if (!type.compare(hPos, 8, "valarray"))
+ return KT_StdValArray;
break;
}
}
diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h
index e9727bb999..e25e2e7db6 100644
--- a/src/libs/utils/theme/theme.h
+++ b/src/libs/utils/theme/theme.h
@@ -150,6 +150,21 @@ public:
IconsModeAnalyzeActiveColor,
IconsModeHelpActiveColor,
+ /* Code model Icons */
+
+ IconsCodeModelKeywordColor,
+ IconsCodeModelClassColor,
+ IconsCodeModelStructColor,
+ IconsCodeModelFunctionColor,
+ IconsCodeModelVariableColor,
+ IconsCodeModelEnumColor,
+ IconsCodeModelMacroColor,
+ IconsCodeModelAttributeColor,
+ IconsCodeModelUniformColor,
+ IconsCodeModelVaryingColor,
+ IconsCodeModelOverlayBackgroundColor,
+ IconsCodeModelOverlayForegroundColor,
+
/* Output panes */
OutputPanes_DebugTextColor,
diff --git a/src/plugins/android/androidruncontrol.cpp b/src/plugins/android/androidruncontrol.cpp
index 62d28a3f5f..244fcf25ab 100644
--- a/src/plugins/android/androidruncontrol.cpp
+++ b/src/plugins/android/androidruncontrol.cpp
@@ -29,8 +29,9 @@
#include "androidrunconfiguration.h"
#include "androidrunner.h"
+#include <coreplugin/coreicons.h>
+
#include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/projectexplorericons.h>
using namespace ProjectExplorer;
@@ -43,7 +44,7 @@ AndroidRunControl::AndroidRunControl(AndroidRunConfiguration *rc)
, m_running(false)
{
setRunnable(m_runner->runnable());
- setIcon(Icons::RUN_SMALL);
+ setIcon(Core::Icons::RUN_SMALL);
}
AndroidRunControl::~AndroidRunControl()
diff --git a/src/plugins/autotest/autotest.qrc b/src/plugins/autotest/autotest.qrc
index 698a86950e..7c8539f4b2 100644
--- a/src/plugins/autotest/autotest.qrc
+++ b/src/plugins/autotest/autotest.qrc
@@ -1,8 +1,6 @@
<RCC>
<qresource prefix="/">
<file>images/autotest.png</file>
- <file>images/class.png</file>
- <file>images/func.png</file>
<file>images/expand.png</file>
<file>images/expand@2x.png</file>
<file>images/collapse.png</file>
diff --git a/src/plugins/autotest/images/class.png b/src/plugins/autotest/images/class.png
deleted file mode 100644
index 88432d2cb1..0000000000
--- a/src/plugins/autotest/images/class.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/images/func.png b/src/plugins/autotest/images/func.png
deleted file mode 100644
index 3f5f62a5f6..0000000000
--- a/src/plugins/autotest/images/func.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/autotest/testresultspane.cpp b/src/plugins/autotest/testresultspane.cpp
index 9559ce5be7..7209e1fdef 100644
--- a/src/plugins/autotest/testresultspane.cpp
+++ b/src/plugins/autotest/testresultspane.cpp
@@ -41,7 +41,6 @@
#include <coreplugin/icore.h>
#include <projectexplorer/projectexplorer.h>
-#include <projectexplorer/projectexplorericons.h>
#include <texteditor/texteditor.h>
@@ -159,13 +158,13 @@ void TestResultsPane::createToolButtons()
});
m_runAll = new QToolButton(m_treeView);
- m_runAll->setIcon(ProjectExplorer::Icons::RUN_SMALL.icon());
+ m_runAll->setIcon(Core::Icons::RUN_SMALL.icon());
m_runAll->setToolTip(tr("Run All Tests"));
m_runAll->setEnabled(false);
connect(m_runAll, &QToolButton::clicked, this, &TestResultsPane::onRunAllTriggered);
m_runSelected = new QToolButton(m_treeView);
- Utils::Icon runSelectedIcon = ProjectExplorer::Icons::RUN_SMALL;
+ Utils::Icon runSelectedIcon = Core::Icons::RUN_SMALL;
foreach (const Utils::IconMaskAndColor &maskAndColor, Icons::RUN_SELECTED_OVERLAY)
runSelectedIcon.append(maskAndColor);
m_runSelected->setIcon(runSelectedIcon.icon());
@@ -174,7 +173,7 @@ void TestResultsPane::createToolButtons()
connect(m_runSelected, &QToolButton::clicked, this, &TestResultsPane::onRunSelectedTriggered);
m_stopTestRun = new QToolButton(m_treeView);
- m_stopTestRun->setIcon(ProjectExplorer::Icons::STOP_SMALL.icon());
+ m_stopTestRun->setIcon(Core::Icons::STOP_SMALL.icon());
m_stopTestRun->setToolTip(tr("Stop Test Run"));
m_stopTestRun->setEnabled(false);
connect(m_stopTestRun, &QToolButton::clicked, TestRunner::instance(), &TestRunner::requestStopTestRun);
diff --git a/src/plugins/autotest/testtreeitem.cpp b/src/plugins/autotest/testtreeitem.cpp
index 50ca4c899f..7e50905b6d 100644
--- a/src/plugins/autotest/testtreeitem.cpp
+++ b/src/plugins/autotest/testtreeitem.cpp
@@ -33,6 +33,8 @@
#include <texteditor/texteditor.h>
+#include <cplusplus/Icons.h>
+
namespace Autotest {
namespace Internal {
@@ -51,8 +53,8 @@ static QIcon testTreeIcon(TestTreeItem::Type type)
{
static QIcon icons[] = {
QIcon(),
- QIcon(QLatin1String(":/images/class.png")),
- QIcon(QLatin1String(":/images/func.png")),
+ CPlusPlus::Icons::iconForType(CPlusPlus::Icons::ClassIconType),
+ CPlusPlus::Icons::iconForType(CPlusPlus::Icons::SlotPrivateIconType),
QIcon(QLatin1String(":/images/data.png"))
};
diff --git a/src/plugins/clangcodemodel/clangassistproposalitem.cpp b/src/plugins/clangcodemodel/clangassistproposalitem.cpp
index 6d0307903f..8ec96a8098 100644
--- a/src/plugins/clangcodemodel/clangassistproposalitem.cpp
+++ b/src/plugins/clangcodemodel/clangassistproposalitem.cpp
@@ -219,7 +219,6 @@ QString ClangAssistProposalItem::text() const
QIcon ClangAssistProposalItem::icon() const
{
using CPlusPlus::Icons;
- static const CPlusPlus::Icons m_icons;
static const char SNIPPET_ICON_PATH[] = ":/texteditor/images/snippet.png";
static const QIcon snippetIcon = QIcon(QLatin1String(SNIPPET_ICON_PATH));
@@ -227,11 +226,11 @@ QIcon ClangAssistProposalItem::icon() const
case CodeCompletion::ClassCompletionKind:
case CodeCompletion::TemplateClassCompletionKind:
case CodeCompletion::TypeAliasCompletionKind:
- return m_icons.iconForType(Icons::ClassIconType);
+ return Icons::iconForType(Icons::ClassIconType);
case CodeCompletion::EnumerationCompletionKind:
- return m_icons.iconForType(Icons::EnumIconType);
+ return Icons::iconForType(Icons::EnumIconType);
case CodeCompletion::EnumeratorCompletionKind:
- return m_icons.iconForType(Icons::EnumeratorIconType);
+ return Icons::iconForType(Icons::EnumeratorIconType);
case CodeCompletion::ConstructorCompletionKind:
case CodeCompletion::DestructorCompletionKind:
case CodeCompletion::FunctionCompletionKind:
@@ -240,39 +239,39 @@ QIcon ClangAssistProposalItem::icon() const
switch (m_codeCompletion.availability()) {
case CodeCompletion::Available:
case CodeCompletion::Deprecated:
- return m_icons.iconForType(Icons::FuncPublicIconType);
+ return Icons::iconForType(Icons::FuncPublicIconType);
default:
- return m_icons.iconForType(Icons::FuncPrivateIconType);
+ return Icons::iconForType(Icons::FuncPrivateIconType);
}
case CodeCompletion::SignalCompletionKind:
- return m_icons.iconForType(Icons::SignalIconType);
+ return Icons::iconForType(Icons::SignalIconType);
case CodeCompletion::SlotCompletionKind:
switch (m_codeCompletion.availability()) {
case CodeCompletion::Available:
case CodeCompletion::Deprecated:
- return m_icons.iconForType(Icons::SlotPublicIconType);
+ return Icons::iconForType(Icons::SlotPublicIconType);
case CodeCompletion::NotAccessible:
case CodeCompletion::NotAvailable:
- return m_icons.iconForType(Icons::SlotPrivateIconType);
+ return Icons::iconForType(Icons::SlotPrivateIconType);
}
case CodeCompletion::NamespaceCompletionKind:
- return m_icons.iconForType(Icons::NamespaceIconType);
+ return Icons::iconForType(Icons::NamespaceIconType);
case CodeCompletion::PreProcessorCompletionKind:
- return m_icons.iconForType(Icons::MacroIconType);
+ return Icons::iconForType(Icons::MacroIconType);
case CodeCompletion::VariableCompletionKind:
switch (m_codeCompletion.availability()) {
case CodeCompletion::Available:
case CodeCompletion::Deprecated:
- return m_icons.iconForType(Icons::VarPublicIconType);
+ return Icons::iconForType(Icons::VarPublicIconType);
default:
- return m_icons.iconForType(Icons::VarPrivateIconType);
+ return Icons::iconForType(Icons::VarPrivateIconType);
}
case CodeCompletion::KeywordCompletionKind:
- return m_icons.iconForType(Icons::KeywordIconType);
+ return Icons::iconForType(Icons::KeywordIconType);
case CodeCompletion::ClangSnippetKind:
return snippetIcon;
case CodeCompletion::Other:
- return m_icons.iconForType(Icons::UnknownIconType);
+ return Icons::iconForType(Icons::UnknownIconType);
}
return QIcon();
diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
index c0e8904d1b..d19c12035d 100644
--- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
+++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp
@@ -46,6 +46,7 @@
#include <cplusplus/BackwardsScanner.h>
#include <cplusplus/ExpressionUnderCursor.h>
+#include <cplusplus/Icons.h>
#include <cplusplus/SimpleLexer.h>
#include <clangbackendipc/filecontainer.h>
@@ -454,7 +455,7 @@ void ClangCompletionAssistProcessor::completeIncludePath(const QString &realPath
auto *item = new ClangPreprocessorAssistProposalItem;
item->setText(text);
item->setDetail(hint);
- item->setIcon(m_icons.keywordIcon());
+ item->setIcon(Icons::keywordIcon());
item->setCompletionOperator(m_completionOperator);
m_completions.append(item);
}
@@ -465,11 +466,11 @@ bool ClangCompletionAssistProcessor::completePreprocessorDirectives()
{
foreach (const QString &preprocessorCompletion, m_preprocessorCompletions)
addCompletionItem(preprocessorCompletion,
- m_icons.iconForType(Icons::MacroIconType));
+ Icons::iconForType(Icons::MacroIconType));
if (m_interface->objcEnabled())
addCompletionItem(QLatin1String("import"),
- m_icons.iconForType(Icons::MacroIconType));
+ Icons::iconForType(Icons::MacroIconType));
return !m_completions.isEmpty();
}
@@ -477,7 +478,7 @@ bool ClangCompletionAssistProcessor::completePreprocessorDirectives()
bool ClangCompletionAssistProcessor::completeDoxygenKeywords()
{
for (int i = 1; i < CppTools::T_DOXY_LAST_TAG; ++i)
- addCompletionItem(QString::fromLatin1(CppTools::doxygenTagSpell(i)), m_icons.keywordIcon());
+ addCompletionItem(QString::fromLatin1(CppTools::doxygenTagSpell(i)), Icons::keywordIcon());
return !m_completions.isEmpty();
}
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index 4dbeaca1c1..39eeeb3187 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -88,6 +88,7 @@ public:
LibClangOptionsBuilder optionsBuilder(*projectPart.data());
+ optionsBuilder.addTargetTriple();
optionsBuilder.addLanguageOption(fileKind);
optionsBuilder.addOptionsForLanguage(/*checkForBorlandExtensions*/ true);
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp
index 0ab5c15e00..7c40c91a0a 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerplugin.cpp
@@ -118,7 +118,7 @@ bool ClangStaticAnalyzerPlugin::initialize(const QStringList &arguments, QString
auto panelFactory = new ProjectExplorer::ProjectPanelFactory();
panelFactory->setPriority(100);
- panelFactory->setDisplayName(tr("Clang Static Analyzer Settings"));
+ panelFactory->setDisplayName(tr("Clang Static Analyzer"));
panelFactory->setSimpleCreateWidgetFunction<ProjectSettingsWidget>(QIcon());
ProjectExplorer::ProjectPanelFactory::registerFactory(panelFactory);
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
index 69ff061c83..0789ace0c8 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp
@@ -71,7 +71,6 @@ ClangStaticAnalyzerRunControl::ClangStaticAnalyzerRunControl(
const ProjectInfo &projectInfo)
: AnalyzerRunControl(runConfiguration, runMode)
, m_projectInfo(projectInfo)
- , m_wordWidth(runConfiguration->abi().wordWidth())
, m_initialFilesToProcessSize(0)
, m_filesAnalyzed(0)
, m_filesNotAnalyzed(0)
@@ -80,7 +79,13 @@ ClangStaticAnalyzerRunControl::ClangStaticAnalyzerRunControl(
BuildConfiguration *buildConfiguration = target->activeBuildConfiguration();
QTC_ASSERT(buildConfiguration, return);
m_environment = buildConfiguration->environment();
- m_targetTriple = ToolChainKitInformation::toolChain(target->kit())->originalTargetTriple();
+
+ ToolChain *toolChain = ToolChainKitInformation::toolChain(target->kit());
+ QTC_ASSERT(toolChain, return);
+ Abi abi = runConfiguration->abi();
+ m_extraToolChainInfo.wordWidth = abi.wordWidth();
+ m_extraToolChainInfo.isMsvc2015 = abi.osFlavor() == Abi::WindowsMsvc2015Flavor;
+ m_extraToolChainInfo.targetTriple = toolChain->originalTargetTriple();
}
static void prependWordWidthArgumentIfNotIncluded(QStringList *arguments, unsigned char wordWidth)
@@ -113,13 +118,8 @@ static void prependTargetTripleIfNotIncludedAndNotEmpty(QStringList *arguments,
}
}
-// Removes (1) filePath (2) -o <somePath>.
-// Prepends -m64/-m32 argument if not already included.
-// Prepends -target if not already included.
-static QStringList tweakedArguments(const QString &filePath,
- const QStringList &arguments,
- unsigned char wordWidth,
- const QString &targetTriple)
+// Removes (1) inputFile (2) -o <somePath>.
+QStringList inputAndOutputArgumentsRemoved(const QString &inputFile, const QStringList &arguments)
{
QStringList newArguments;
@@ -131,7 +131,7 @@ static QStringList tweakedArguments(const QString &filePath,
} else if (argument == QLatin1String("-o")) {
skip = true;
continue;
- } else if (QDir::fromNativeSeparators(argument) == filePath) {
+ } else if (QDir::fromNativeSeparators(argument) == inputFile) {
continue; // TODO: Let it in?
}
@@ -139,8 +139,74 @@ static QStringList tweakedArguments(const QString &filePath,
}
QTC_CHECK(skip == false);
- prependWordWidthArgumentIfNotIncluded(&newArguments, wordWidth);
- prependTargetTripleIfNotIncludedAndNotEmpty(&newArguments, targetTriple);
+ return newArguments;
+}
+
+static void appendMsCompatibility2015OptionForMsvc2015(QStringList *arguments, bool isMsvc2015)
+{
+ QTC_ASSERT(arguments, return);
+
+ if (isMsvc2015)
+ arguments->append(QLatin1String("-fms-compatibility-version=19"));
+}
+
+static QStringList languageFeatureMacros()
+{
+ // Collected with:
+ // $ CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
+ // $ D:\usr\llvm-3.8.0\bin\clang++.exe -fms-compatibility-version=19 -std=c++1y -dM -E D:\empty.cpp | grep __cpp_
+ static QStringList macros {
+ QLatin1String("__cpp_aggregate_nsdmi"),
+ QLatin1String("__cpp_alias_templates"),
+ QLatin1String("__cpp_attributes"),
+ QLatin1String("__cpp_binary_literals"),
+ QLatin1String("__cpp_constexpr"),
+ QLatin1String("__cpp_decltype"),
+ QLatin1String("__cpp_decltype_auto"),
+ QLatin1String("__cpp_delegating_constructors"),
+ QLatin1String("__cpp_digit_separators"),
+ QLatin1String("__cpp_generic_lambdas"),
+ QLatin1String("__cpp_inheriting_constructors"),
+ QLatin1String("__cpp_init_captures"),
+ QLatin1String("__cpp_initializer_lists"),
+ QLatin1String("__cpp_lambdas"),
+ QLatin1String("__cpp_nsdmi"),
+ QLatin1String("__cpp_range_based_for"),
+ QLatin1String("__cpp_raw_strings"),
+ QLatin1String("__cpp_ref_qualifiers"),
+ QLatin1String("__cpp_return_type_deduction"),
+ QLatin1String("__cpp_rtti"),
+ QLatin1String("__cpp_rvalue_references"),
+ QLatin1String("__cpp_static_assert"),
+ QLatin1String("__cpp_unicode_characters"),
+ QLatin1String("__cpp_unicode_literals"),
+ QLatin1String("__cpp_user_defined_literals"),
+ QLatin1String("__cpp_variable_templates"),
+ QLatin1String("__cpp_variadic_templates"),
+ };
+
+ return macros;
+}
+
+static void undefineCppLanguageFeatureMacrosForMsvc2015(QStringList *arguments, bool isMsvc2015)
+{
+ QTC_ASSERT(arguments, return);
+
+ if (isMsvc2015) {
+ foreach (const QString &macroName, languageFeatureMacros())
+ arguments->append(QLatin1String("/U") + macroName);
+ }
+}
+
+static QStringList tweakedArguments(const QString &filePath,
+ const QStringList &arguments,
+ const ExtraToolChainInfo &extraParams)
+{
+ QStringList newArguments = inputAndOutputArgumentsRemoved(filePath, arguments);
+ prependWordWidthArgumentIfNotIncluded(&newArguments, extraParams.wordWidth);
+ prependTargetTripleIfNotIncludedAndNotEmpty(&newArguments, extraParams.targetTriple);
+ appendMsCompatibility2015OptionForMsvc2015(&newArguments, extraParams.isMsvc2015);
+ undefineCppLanguageFeatureMacrosForMsvc2015(&newArguments, extraParams.isMsvc2015);
return newArguments;
}
@@ -167,10 +233,11 @@ class ClangStaticAnalyzerOptionsBuilder : public CompilerOptionsBuilder
public:
static QStringList build(const CppTools::ProjectPart &projectPart,
CppTools::ProjectFile::Kind fileKind,
- unsigned char wordWidth,
- const QString &targetTriple)
+ const ExtraToolChainInfo &extraParams)
{
ClangStaticAnalyzerOptionsBuilder optionsBuilder(projectPart);
+
+ optionsBuilder.addTargetTriple();
optionsBuilder.addLanguageOption(fileKind);
optionsBuilder.addOptionsForLanguage(false);
@@ -192,8 +259,9 @@ public:
optionsBuilder.add(QLatin1String("-fPIC")); // TODO: Remove?
QStringList options = optionsBuilder.options();
- prependWordWidthArgumentIfNotIncluded(&options, wordWidth);
- prependTargetTripleIfNotIncludedAndNotEmpty(&options, targetTriple);
+ prependWordWidthArgumentIfNotIncluded(&options, extraParams.wordWidth);
+ appendMsCompatibility2015OptionForMsvc2015(&options, extraParams.isMsvc2015);
+ undefineCppLanguageFeatureMacrosForMsvc2015(&options, extraParams.isMsvc2015);
return options;
}
@@ -205,6 +273,15 @@ private:
{
}
+ void addTargetTriple() override
+ {
+ // For MSVC toolchains we use clang-cl.exe, so there is nothing to do here since
+ // 1) clang-cl.exe does not understand the "-triple" option
+ // 2) clang-cl.exe already hardcodes the right triple value (even if built with mingw)
+ if (m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
+ CompilerOptionsBuilder::addTargetTriple();
+ }
+
void addLanguageOption(ProjectFile::Kind fileKind) override
{
if (m_isMsvcToolchain)
@@ -240,8 +317,7 @@ private:
static AnalyzeUnits unitsToAnalyzeFromCompilerCallData(
const ProjectInfo::CompilerCallData &compilerCallData,
- unsigned char wordWidth,
- const QString &targetTriple)
+ const ExtraToolChainInfo &extraParams)
{
qCDebug(LOG) << "Taking arguments for analyzing from CompilerCallData.";
@@ -253,7 +329,7 @@ static AnalyzeUnits unitsToAnalyzeFromCompilerCallData(
const QString file = it.key();
const QList<QStringList> compilerCalls = it.value();
foreach (const QStringList &options, compilerCalls) {
- const QStringList arguments = tweakedArguments(file, options, wordWidth, targetTriple);
+ const QStringList arguments = tweakedArguments(file, options, extraParams);
unitsToAnalyze << AnalyzeUnit(file, arguments);
}
}
@@ -262,8 +338,7 @@ static AnalyzeUnits unitsToAnalyzeFromCompilerCallData(
}
static AnalyzeUnits unitsToAnalyzeFromProjectParts(const QList<ProjectPart::Ptr> projectParts,
- unsigned char wordWidth,
- const QString &targetTriple)
+ const ExtraToolChainInfo &extraParams)
{
qCDebug(LOG) << "Taking arguments for analyzing from ProjectParts.";
@@ -281,8 +356,7 @@ static AnalyzeUnits unitsToAnalyzeFromProjectParts(const QList<ProjectPart::Ptr>
const QStringList arguments
= ClangStaticAnalyzerOptionsBuilder::build(*projectPart.data(),
file.kind,
- wordWidth,
- targetTriple);
+ extraParams);
unitsToAnalyze << AnalyzeUnit(file.path, arguments);
}
}
@@ -297,15 +371,10 @@ AnalyzeUnits ClangStaticAnalyzerRunControl::sortedUnitsToAnalyze()
AnalyzeUnits units;
const ProjectInfo::CompilerCallData compilerCallData = m_projectInfo.compilerCallData();
- if (compilerCallData.isEmpty()) {
- units = unitsToAnalyzeFromProjectParts(m_projectInfo.projectParts(),
- m_wordWidth,
- m_targetTriple);
- } else {
- units = unitsToAnalyzeFromCompilerCallData(compilerCallData,
- m_wordWidth,
- m_targetTriple);
- }
+ if (compilerCallData.isEmpty())
+ units = unitsToAnalyzeFromProjectParts(m_projectInfo.projectParts(), m_extraToolChainInfo);
+ else
+ units = unitsToAnalyzeFromCompilerCallData(compilerCallData, m_extraToolChainInfo);
Utils::sort(units, [](const AnalyzeUnit &a1, const AnalyzeUnit &a2) -> bool {
return a1.file < a2.file;
diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h
index f1e5e34c02..e4b875c1ad 100644
--- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h
+++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.h
@@ -47,6 +47,12 @@ struct AnalyzeUnit {
};
typedef QList<AnalyzeUnit> AnalyzeUnits;
+struct ExtraToolChainInfo {
+ unsigned char wordWidth = 0;
+ QString targetTriple;
+ bool isMsvc2015 = false;
+};
+
class ClangStaticAnalyzerRunControl : public Debugger::AnalyzerRunControl
{
Q_OBJECT
@@ -81,8 +87,7 @@ private:
private:
const CppTools::ProjectInfo m_projectInfo;
- const unsigned char m_wordWidth;
- QString m_targetTriple;
+ ExtraToolChainInfo m_extraToolChainInfo;
Utils::Environment m_environment;
QString m_clangExecutable;
diff --git a/src/plugins/classview/classview.pro b/src/plugins/classview/classview.pro
index b5d89be118..6d709d18f5 100644
--- a/src/plugins/classview/classview.pro
+++ b/src/plugins/classview/classview.pro
@@ -24,6 +24,3 @@ SOURCES += \
classviewsymbollocation.cpp \
classviewtreeitemmodel.cpp \
classviewutils.cpp
-
-RESOURCES += \
- classview.qrc
diff --git a/src/plugins/classview/classview.qbs b/src/plugins/classview/classview.qbs
index d564800f11..bc22d5ce68 100644
--- a/src/plugins/classview/classview.qbs
+++ b/src/plugins/classview/classview.qbs
@@ -13,7 +13,6 @@ QtcPlugin {
Depends { name: "TextEditor" }
files: [
- "classview.qrc",
"classviewconstants.h",
"classviewmanager.cpp", "classviewmanager.h",
"classviewnavigationwidget.cpp", "classviewnavigationwidget.h",
diff --git a/src/plugins/classview/classview.qrc b/src/plugins/classview/classview.qrc
deleted file mode 100644
index 189357bc0b..0000000000
--- a/src/plugins/classview/classview.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="/classview">
- <file>images/hierarchicalmode.png</file>
- </qresource>
-</RCC>
diff --git a/src/plugins/classview/classviewnavigationwidget.cpp b/src/plugins/classview/classviewnavigationwidget.cpp
index 2499f968c2..bd8d72776a 100644
--- a/src/plugins/classview/classviewnavigationwidget.cpp
+++ b/src/plugins/classview/classviewnavigationwidget.cpp
@@ -31,6 +31,9 @@
#include "classviewconstants.h"
#include <coreplugin/find/itemviewfind.h>
+
+#include <cplusplus/Icons.h>
+
#include <utils/navigationtreeview.h>
#include <utils/qtcassert.h>
@@ -170,7 +173,7 @@ QList<QToolButton *> NavigationWidget::createToolButtons()
// create a button
fullProjectsModeButton = new QToolButton();
fullProjectsModeButton->setIcon(
- QIcon(QLatin1String(":/classview/images/hierarchicalmode.png")));
+ CPlusPlus::Icons::iconForType(CPlusPlus::Icons::ClassIconType));
fullProjectsModeButton->setCheckable(true);
fullProjectsModeButton->setToolTip(tr("Show Subprojects"));
diff --git a/src/plugins/classview/classviewtreeitemmodel.cpp b/src/plugins/classview/classviewtreeitemmodel.cpp
index 2ce88dc31b..b00f8e3020 100644
--- a/src/plugins/classview/classviewtreeitemmodel.cpp
+++ b/src/plugins/classview/classviewtreeitemmodel.cpp
@@ -34,21 +34,6 @@
namespace ClassView {
namespace Internal {
-///////////////////////////////// TreeItemModelPrivate //////////////////////////////////
-
-/*!
- \class TreeItemModelPrivate
- \brief The TreeItemModelPrivate class contains private class data for
- the TreeItemModel class.
- \sa TreeItemModel
- */
-class TreeItemModelPrivate
-{
-public:
- //! icon provider
- CPlusPlus::Icons icons;
-};
-
///////////////////////////////// TreeItemModel //////////////////////////////////
/*!
@@ -57,14 +42,12 @@ public:
*/
TreeItemModel::TreeItemModel(QObject *parent)
- : QStandardItemModel(parent),
- d(new TreeItemModelPrivate())
+ : QStandardItemModel(parent)
{
}
TreeItemModel::~TreeItemModel()
{
- delete d;
}
QVariant TreeItemModel::data(const QModelIndex &index, int role) const
@@ -79,7 +62,7 @@ QVariant TreeItemModel::data(const QModelIndex &index, int role) const
bool ok = false;
int type = iconType.toInt(&ok);
if (ok && type >= 0)
- return d->icons.iconForType(static_cast<CPlusPlus::Icons::IconType>(type));
+ return CPlusPlus::Icons::iconForType(static_cast<CPlusPlus::Icons::IconType>(type));
}
}
break;
diff --git a/src/plugins/classview/images/hierarchicalmode.png b/src/plugins/classview/images/hierarchicalmode.png
deleted file mode 100644
index 88432d2cb1..0000000000
--- a/src/plugins/classview/images/hierarchicalmode.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
index 28c0005323..e8e5e925ab 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
@@ -172,8 +172,8 @@ bool CMakeBuildStep::init(QList<const BuildStep *> &earlierSteps)
if (!tool || !tool->isValid()) {
emit addTask(Task(Task::Error,
QCoreApplication::translate("CMakeProjectManager::CMakeBuildStep",
- "Qt Creator needs a cmake tool set up to build. "
- "Configure a cmake tool in the kit options."),
+ "Qt Creator needs a CMake Tool set up to build. "
+ "Configure a CMake Tool in the kit options."),
Utils::FileName(), -1,
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
canInit = false;
diff --git a/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp b/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp
index e83f71fcde..5810dc7b16 100644
--- a/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp
@@ -344,13 +344,20 @@ void CMakeConfigurationKitConfigWidget::editConfigurationChanges()
"separated from the variable value by \"=\".<br>"
"You may provide a type hint by adding \":TYPE\" before the \"=\"."));
- QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Apply|QDialogButtonBox::Cancel);
+ auto buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Apply
+ |QDialogButtonBox::Reset|QDialogButtonBox::Cancel);
layout->addWidget(m_editor);
layout->addWidget(buttons);
connect(buttons, &QDialogButtonBox::accepted, m_dialog, &QDialog::accept);
connect(buttons, &QDialogButtonBox::rejected, m_dialog, &QDialog::reject);
+ connect(buttons, &QDialogButtonBox::clicked, m_dialog, [buttons, this](QAbstractButton *button) {
+ if (button != buttons->button(QDialogButtonBox::Reset))
+ return;
+ CMakeConfigurationKitInformation::setConfiguration(kit(),
+ CMakeConfigurationKitInformation::defaultConfiguration(kit()));
+ });
connect(m_dialog, &QDialog::accepted, this, &CMakeConfigurationKitConfigWidget::acceptChangesDialog);
connect(m_dialog, &QDialog::rejected, this, &CMakeConfigurationKitConfigWidget::closeChangesDialog);
connect(buttons->button(QDialogButtonBox::Apply), &QAbstractButton::clicked,
diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp
index d303c23287..9cb110d6f8 100644
--- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp
@@ -323,15 +323,22 @@ void CMakeConfigurationKitInformation::fromStringList(Kit *k, const QStringList
setConfiguration(k, result);
}
-QVariant CMakeConfigurationKitInformation::defaultValue(const Kit *k) const
+CMakeConfig CMakeConfigurationKitInformation::defaultConfiguration(const Kit *k)
{
Q_UNUSED(k);
-
- // FIXME: Convert preload scripts
CMakeConfig config;
config << CMakeConfigItem(CMAKE_QMAKE_KEY, "%{Qt:qmakeExecutable}");
config << CMakeConfigItem(CMAKE_TOOLCHAIN_KEY, "%{Compiler:Executable}");
+ return config;
+}
+
+QVariant CMakeConfigurationKitInformation::defaultValue(const Kit *k) const
+{
+ Q_UNUSED(k);
+
+ // FIXME: Convert preload scripts
+ CMakeConfig config = defaultConfiguration(k);
const QStringList tmp
= Utils::transform(config, [](const CMakeConfigItem &i) { return i.toString(); });
return tmp;
diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.h b/src/plugins/cmakeprojectmanager/cmakekitinformation.h
index 591e915fe3..3ee550cf01 100644
--- a/src/plugins/cmakeprojectmanager/cmakekitinformation.h
+++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.h
@@ -86,6 +86,8 @@ public:
static QStringList toStringList(const ProjectExplorer::Kit *k);
static void fromStringList(ProjectExplorer::Kit *k, const QStringList &in);
+ static CMakeConfig defaultConfiguration(const ProjectExplorer::Kit *k);
+
// KitInformation interface
QVariant defaultValue(const ProjectExplorer::Kit *k) const override;
QList<ProjectExplorer::Task> validate(const ProjectExplorer::Kit *k) const override;
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 4ee11e6074..b7dcd0eaa6 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -204,8 +204,11 @@ void CMakeProject::parseCMakeOutput()
{
auto cmakeBc = qobject_cast<CMakeBuildConfiguration *>(sender());
QTC_ASSERT(cmakeBc, return);
- if (!activeTarget() || activeTarget()->activeBuildConfiguration() != cmakeBc)
+
+ Target *t = activeTarget();
+ if (!t || t->activeBuildConfiguration() != cmakeBc)
return;
+ Kit *k = t->kit();
BuildDirManager *bdm = cmakeBc->buildDirManager();
QTC_ASSERT(bdm, return);
@@ -216,10 +219,11 @@ void CMakeProject::parseCMakeOutput()
bdm->clearFiles(); // Some of the FileNodes in files() were deleted!
updateApplicationAndDeploymentTargets();
+ updateTargetRunConfigurations(t);
createGeneratedCodeModelSupport();
- ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(cmakeBc->target()->kit());
+ ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k);
if (!tc) {
emit fileListChanged();
return;
@@ -230,7 +234,7 @@ void CMakeProject::parseCMakeOutput()
CppTools::ProjectPartBuilder ppBuilder(pinfo);
CppTools::ProjectPart::QtVersion activeQtVersion = CppTools::ProjectPart::NoQt;
- if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(cmakeBc->target()->kit())) {
+ if (QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k)) {
if (qtVersion->qtVersion() < QtSupport::QtVersionNumber(5,0,0))
activeQtVersion = CppTools::ProjectPart::Qt4;
else
@@ -264,8 +268,6 @@ void CMakeProject::parseCMakeOutput()
emit fileListChanged();
emit cmakeBc->emitBuildTypeChanged();
-
- updateRunConfigurations();
}
bool CMakeProject::needsConfiguration() const
@@ -278,6 +280,11 @@ bool CMakeProject::requiresTargetPanel() const
return !targets().isEmpty();
}
+bool CMakeProject::knowsAllBuildExecutables() const
+{
+ return false;
+}
+
bool CMakeProject::supportsKit(Kit *k, QString *errorMessage) const
{
if (!CMakeKitInformation::cmakeTool(k)) {
@@ -546,46 +553,33 @@ QStringList CMakeProject::filesGeneratedFrom(const QString &sourceFile) const
}
}
-void CMakeProject::updateRunConfigurations()
-{
- foreach (Target *t, targets())
- updateTargetRunConfigurations(t);
-}
-
-// TODO Compare with updateDefaultRunConfigurations();
void CMakeProject::updateTargetRunConfigurations(Target *t)
{
- // create new and remove obsolete RCs using the factories
- t->updateDefaultRunConfigurations();
+ // *Update* existing runconfigurations (no need to update new ones!):
+ QHash<QString, const CMakeBuildTarget *> buildTargetHash;
+ const QList<CMakeBuildTarget> buildTargetList = buildTargets();
+ foreach (const CMakeBuildTarget &bt, buildTargetList) {
+ if (bt.targetType != ExecutableType || bt.executable.isEmpty())
+ continue;
- // *Update* runconfigurations:
- QMultiMap<QString, CMakeRunConfiguration*> existingRunConfigurations;
- foreach (ProjectExplorer::RunConfiguration *rc, t->runConfigurations()) {
- if (CMakeRunConfiguration* cmakeRC = qobject_cast<CMakeRunConfiguration *>(rc))
- existingRunConfigurations.insert(cmakeRC->title(), cmakeRC);
+ buildTargetHash.insert(bt.title, &bt);
}
- foreach (const CMakeBuildTarget &ct, buildTargets()) {
- if (ct.targetType != ExecutableType)
- continue;
- if (ct.executable.isEmpty())
+ foreach (RunConfiguration *rc, t->runConfigurations()) {
+ auto cmakeRc = qobject_cast<CMakeRunConfiguration *>(rc);
+ if (!cmakeRc)
continue;
- QList<CMakeRunConfiguration *> list = existingRunConfigurations.values(ct.title);
- if (!list.isEmpty()) {
- // Already exists, so override the settings...
- foreach (CMakeRunConfiguration *rc, list) {
- rc->setExecutable(ct.executable);
- rc->setBaseWorkingDirectory(ct.workingDirectory);
- rc->setEnabled(true);
- }
+
+ auto btIt = buildTargetHash.constFind(cmakeRc->title());
+ cmakeRc->setEnabled(btIt != buildTargetHash.constEnd());
+ if (btIt != buildTargetHash.constEnd()) {
+ cmakeRc->setExecutable(btIt.value()->executable);
+ cmakeRc->setBaseWorkingDirectory(btIt.value()->workingDirectory);
}
}
- if (t->runConfigurations().isEmpty()) {
- // Oh no, no run configuration,
- // create a custom executable run configuration
- t->addRunConfiguration(new QtSupport::CustomExecutableRunConfiguration(t));
- }
+ // create new and remove obsolete RCs using the factories
+ t->updateDefaultRunConfigurations();
}
void CMakeProject::updateApplicationAndDeploymentTargets()
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index fabdc6da14..f6616ef9d8 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -105,6 +105,7 @@ public:
bool needsConfiguration() const override;
bool requiresTargetPanel() const override;
+ bool knowsAllBuildExecutables() const override;
bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage = 0) const override;
@@ -124,8 +125,6 @@ private:
void handleParsingStarted();
void parseCMakeOutput();
- void updateRunConfigurations();
-
void buildTree(Internal::CMakeProjectNode *rootNode, QList<ProjectExplorer::FileNode *> list);
void gatherFileNodes(ProjectExplorer::FolderNode *parent, QList<ProjectExplorer::FileNode *> &list) const;
ProjectExplorer::FolderNode *findOrCreateFolder(Internal::CMakeProjectNode *rootNode, QString directory);
diff --git a/src/plugins/coreplugin/core.qrc b/src/plugins/coreplugin/core.qrc
index 291038d870..a4fa04d2c0 100644
--- a/src/plugins/coreplugin/core.qrc
+++ b/src/plugins/coreplugin/core.qrc
@@ -103,5 +103,13 @@
<file>images/Desktop.png</file>
<file>images/zoom.png</file>
<file>images/zoom@2x.png</file>
+ <file>images/interrupt_small.png</file>
+ <file>images/interrupt_small@2x.png</file>
+ <file>images/run_small.png</file>
+ <file>images/run_small@2x.png</file>
+ <file>images/stop_small.png</file>
+ <file>images/stop_small@2x.png</file>
+ <file>images/boundingrect.png</file>
+ <file>images/boundingrect@2x.png</file>
</qresource>
</RCC>
diff --git a/src/plugins/coreplugin/coreicons.cpp b/src/plugins/coreplugin/coreicons.cpp
index 827caa16a6..1980a7779a 100644
--- a/src/plugins/coreplugin/coreicons.cpp
+++ b/src/plugins/coreplugin/coreicons.cpp
@@ -135,9 +135,19 @@ const Icon INFO_TOOLBAR({
const Icon EXPAND({
{QLatin1String(":/find/images/expand.png"), Theme::IconsBaseColor}});
const Icon ZOOM({
+ {QLatin1String(":/core/images/zoom.png"), Theme::PanelTextColorMid}}, Icon::Tint);
+const Icon ZOOM_TOOLBAR({
{QLatin1String(":/core/images/zoom.png"), Theme::IconsBaseColor}});
const Icon TOOLBAR_EXTENSION({
{QLatin1String(":/core/images/extension.png"), Theme::IconsBaseColor}});
+const Utils::Icon RUN_SMALL({
+ {QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor}});
+const Utils::Icon STOP_SMALL({
+ {QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopColor}});
+const Utils::Icon INTERRUPT_SMALL({
+ {QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor}});
+const Icon BOUNDING_RECT({
+ {QLatin1String(":/core/images/boundingrect.png"), Theme::IconsBaseColor}});
const Icon MODE_EDIT_CLASSIC(
QLatin1String(":/fancyactionbar/images/mode_Edit.png"));
diff --git a/src/plugins/coreplugin/coreicons.h b/src/plugins/coreplugin/coreicons.h
index 048c356f94..60784a2e5c 100644
--- a/src/plugins/coreplugin/coreicons.h
+++ b/src/plugins/coreplugin/coreicons.h
@@ -84,7 +84,12 @@ CORE_EXPORT extern const Utils::Icon INFO;
CORE_EXPORT extern const Utils::Icon INFO_TOOLBAR;
CORE_EXPORT extern const Utils::Icon EXPAND;
CORE_EXPORT extern const Utils::Icon ZOOM;
+CORE_EXPORT extern const Utils::Icon ZOOM_TOOLBAR;
CORE_EXPORT extern const Utils::Icon TOOLBAR_EXTENSION;
+CORE_EXPORT extern const Utils::Icon RUN_SMALL;
+CORE_EXPORT extern const Utils::Icon STOP_SMALL;
+CORE_EXPORT extern const Utils::Icon INTERRUPT_SMALL;
+CORE_EXPORT extern const Utils::Icon BOUNDING_RECT;
CORE_EXPORT extern const Utils::Icon MODE_EDIT_CLASSIC;
CORE_EXPORT extern const Utils::Icon MODE_EDIT_FLAT;
diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs
index a0695767c6..a2fcb520c4 100644
--- a/src/plugins/coreplugin/coreplugin.qbs
+++ b/src/plugins/coreplugin/coreplugin.qbs
@@ -268,7 +268,6 @@ QtcPlugin {
"filesystemfilter.ui",
"ilocatorfilter.cpp",
"ilocatorfilter.h",
- "locator.qrc",
"locatorconstants.h",
"locatorfiltersfilter.cpp",
"locatorfiltersfilter.h",
@@ -285,8 +284,6 @@ QtcPlugin {
"locatorsettingspage.cpp",
"locatorsettingspage.h",
"locatorsettingspage.ui",
- "images/locator.png",
- "images/reload.png",
]
}
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 862445b47b..470e623d45 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1540,6 +1540,10 @@ void EditorManagerPrivate::setupSaveActions(IDocument *document, QAction *saveAc
revertToSavedAction->setText(document->isModified()
? tr("Revert %1 to Saved").arg(quotedName)
: tr("Reload %1").arg(quotedName));
+ } else {
+ saveAction->setText(EditorManager::tr("&Save"));
+ saveAsAction->setText(EditorManager::tr("Save &As..."));
+ revertToSavedAction->setText(EditorManager::tr("Revert to Saved"));
}
}
diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp
index bd3fe6114b..c4b942e0c5 100644
--- a/src/plugins/coreplugin/fancytabwidget.cpp
+++ b/src/plugins/coreplugin/fancytabwidget.cpp
@@ -404,6 +404,20 @@ public:
emit clicked(ev->button(), ev->modifiers());
}
+ void paintEvent(QPaintEvent *event)
+ {
+ QWidget::paintEvent(event);
+
+ // Some Themes do not want highlights and shadows in the toolbars.
+ // But we definitely want a separator between FancyColorButton and FancyTabBar
+ if (!creatorTheme()->flag(Theme::DrawToolBarHighlights)) {
+ QPainter p(this);
+ p.setPen(StyleHelper::borderColor());
+ const QRectF innerRect = QRectF(rect()).adjusted(0.5, 0.5, -0.5, -0.5);
+ p.drawLine(innerRect.bottomLeft(), innerRect.bottomRight());
+ }
+ }
+
signals:
void clicked(Qt::MouseButton button, Qt::KeyboardModifiers modifiers);
};
diff --git a/src/plugins/qmldesigner/components/formeditor/boundingrect.png b/src/plugins/coreplugin/images/boundingrect.png
index 0a91478d6d..0a91478d6d 100644
--- a/src/plugins/qmldesigner/components/formeditor/boundingrect.png
+++ b/src/plugins/coreplugin/images/boundingrect.png
Binary files differ
diff --git a/src/plugins/qmldesigner/components/formeditor/boundingrect@2x.png b/src/plugins/coreplugin/images/boundingrect@2x.png
index 43ea7993fb..43ea7993fb 100644
--- a/src/plugins/qmldesigner/components/formeditor/boundingrect@2x.png
+++ b/src/plugins/coreplugin/images/boundingrect@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/interrupt_small.png b/src/plugins/coreplugin/images/interrupt_small.png
index 1be511a21f..1be511a21f 100644
--- a/src/plugins/projectexplorer/images/interrupt_small.png
+++ b/src/plugins/coreplugin/images/interrupt_small.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/interrupt_small@2x.png b/src/plugins/coreplugin/images/interrupt_small@2x.png
index dd5e213f2d..dd5e213f2d 100644
--- a/src/plugins/projectexplorer/images/interrupt_small@2x.png
+++ b/src/plugins/coreplugin/images/interrupt_small@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/run_small.png b/src/plugins/coreplugin/images/run_small.png
index d1a9c205a5..d1a9c205a5 100644
--- a/src/plugins/projectexplorer/images/run_small.png
+++ b/src/plugins/coreplugin/images/run_small.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/run_small@2x.png b/src/plugins/coreplugin/images/run_small@2x.png
index 6672a17739..6672a17739 100644
--- a/src/plugins/projectexplorer/images/run_small@2x.png
+++ b/src/plugins/coreplugin/images/run_small@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/stop_small.png b/src/plugins/coreplugin/images/stop_small.png
index 50571390da..50571390da 100644
--- a/src/plugins/projectexplorer/images/stop_small.png
+++ b/src/plugins/coreplugin/images/stop_small.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/stop_small@2x.png b/src/plugins/coreplugin/images/stop_small@2x.png
index 59b578d1c0..59b578d1c0 100644
--- a/src/plugins/projectexplorer/images/stop_small@2x.png
+++ b/src/plugins/coreplugin/images/stop_small@2x.png
Binary files differ
diff --git a/src/plugins/coreplugin/locator/images/locator.png b/src/plugins/coreplugin/locator/images/locator.png
deleted file mode 100644
index 000ee1c018..0000000000
--- a/src/plugins/coreplugin/locator/images/locator.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/coreplugin/locator/images/reload.png b/src/plugins/coreplugin/locator/images/reload.png
deleted file mode 100644
index b5afefb32b..0000000000
--- a/src/plugins/coreplugin/locator/images/reload.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/coreplugin/locator/locator.pri b/src/plugins/coreplugin/locator/locator.pri
index c697437d69..e80765bfc5 100644
--- a/src/plugins/coreplugin/locator/locator.pri
+++ b/src/plugins/coreplugin/locator/locator.pri
@@ -36,9 +36,6 @@ FORMS += \
$$PWD/directoryfilter.ui \
$$PWD/locatorsettingspage.ui
-RESOURCES += \
- $$PWD/locator.qrc
-
equals(TEST, 1) {
HEADERS += $$PWD/locatorfiltertest.h
SOURCES += \
diff --git a/src/plugins/coreplugin/locator/locator.qrc b/src/plugins/coreplugin/locator/locator.qrc
deleted file mode 100644
index 4cd5df4f13..0000000000
--- a/src/plugins/coreplugin/locator/locator.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<RCC>
- <qresource prefix="/locator">
- <file>images/reload.png</file>
- <file>images/locator.png</file>
- </qresource>
-</RCC>
diff --git a/src/plugins/coreplugin/locator/locatorwidget.cpp b/src/plugins/coreplugin/locator/locatorwidget.cpp
index 44917a54a4..1299d1133b 100644
--- a/src/plugins/coreplugin/locator/locatorwidget.cpp
+++ b/src/plugins/coreplugin/locator/locatorwidget.cpp
@@ -248,7 +248,7 @@ LocatorWidget::LocatorWidget(Locator *qop) :
layout->setMargin(0);
layout->addWidget(m_fileLineEdit);
- setWindowIcon(QIcon(QLatin1String(":/locator/images/locator.png")));
+ setWindowIcon(Icons::ZOOM.icon());
const QPixmap pixmap = Icons::MAGNIFIER.pixmap();
m_fileLineEdit->setFiltering(true);
m_fileLineEdit->setButtonPixmap(Utils::FancyLineEdit::Left, pixmap);
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 374cb87da1..347bf72226 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -538,7 +538,7 @@ void MainWindow::registerDefaultActions()
// Save Action
icon = QIcon::fromTheme(QLatin1String("document-save"), Icons::SAVEFILE.icon());
- QAction *tmpaction = new QAction(icon, tr("&Save"), this);
+ QAction *tmpaction = new QAction(icon, EditorManager::tr("&Save"), this);
tmpaction->setEnabled(false);
cmd = ActionManager::registerAction(tmpaction, Constants::SAVE);
cmd->setDefaultKeySequence(QKeySequence::Save);
@@ -548,7 +548,7 @@ void MainWindow::registerDefaultActions()
// Save As Action
icon = QIcon::fromTheme(QLatin1String("document-save-as"));
- tmpaction = new QAction(icon, tr("Save &As..."), this);
+ tmpaction = new QAction(icon, EditorManager::tr("Save &As..."), this);
tmpaction->setEnabled(false);
cmd = ActionManager::registerAction(tmpaction, Constants::SAVEAS);
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Ctrl+Shift+S") : QString()));
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index 0c5cd6c39b..913ca572d3 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -917,7 +917,8 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti
tool.rect = menuarea.adjusted(1, 1, -1, -1);
if (mflags & (State_Sunken | State_On | State_Raised)) {
painter->setPen(Qt::gray);
- painter->drawLine(tool.rect.topLeft(), tool.rect.bottomLeft());
+ const QRectF lineRect = QRectF(tool.rect).adjusted(-0.5, 2.5, 0, -2.5);
+ painter->drawLine(lineRect.topLeft(), lineRect.bottomLeft());
if (mflags & (State_Sunken)) {
QColor shade(0, 0, 0, 50);
painter->fillRect(tool.rect.adjusted(0, -1, 1, 1), shade);
diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp
index 04a3a6096e..1800ddde7b 100644
--- a/src/plugins/cppeditor/cppelementevaluator.cpp
+++ b/src/plugins/cppeditor/cppelementevaluator.cpp
@@ -284,7 +284,7 @@ CppMacro::CppMacro(const Macro &macro)
CppDeclarableElement::CppDeclarableElement(Symbol *declaration)
: CppElement()
, declaration(declaration)
- , icon(Icons().iconForSymbol(declaration))
+ , icon(Icons::iconForSymbol(declaration))
{
Overview overview;
overview.showArgumentNames = true;
diff --git a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
index 1e14ad1294..b4886d9ea0 100644
--- a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
+++ b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp
@@ -182,14 +182,13 @@ private:
auto *item = new VirtualFunctionProposalItem(link, m_params.openInNextSplit);
item->setText(text);
- item->setIcon(m_icons.iconForSymbol(func));
+ item->setIcon(Icons::iconForSymbol(func));
return item;
}
VirtualFunctionAssistProvider::Parameters m_params;
Overview m_overview;
- Icons m_icons;
mutable SymbolFinder m_finder;
};
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index c484e2b185..b520babef1 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -61,6 +61,14 @@ void CompilerOptionsBuilder::addDefine(const QByteArray &defineLine)
m_options.append(defineLineToDefineOption(defineLine));
}
+void CompilerOptionsBuilder::addTargetTriple()
+{
+ if (!m_projectPart.targetTriple.isEmpty()) {
+ m_options.append(QLatin1String("-target"));
+ m_options.append(m_projectPart.targetTriple);
+ }
+}
+
void CompilerOptionsBuilder::addHeaderPathOptions()
{
typedef ProjectPartHeaderPath HeaderPath;
diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h
index e83d15f2c1..ebd2e789a8 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.h
+++ b/src/plugins/cpptools/compileroptionsbuilder.h
@@ -44,6 +44,7 @@ public:
void addDefine(const QByteArray &defineLine);
// Add options based on project part
+ virtual void addTargetTriple();
void addHeaderPathOptions();
void addToolchainAndProjectDefines();
virtual void addLanguageOption(ProjectFile::Kind fileKind);
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index c801fd7100..1e87bbebf8 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -1010,7 +1010,7 @@ int InternalCppCompletionAssistProcessor::startCompletionHelper()
if (m_model->m_completionOperator == T_DOXY_COMMENT) {
for (int i = 1; i < T_DOXY_LAST_TAG; ++i)
- addCompletionItem(QString::fromLatin1(doxygenTagSpell(i)), m_icons.keywordIcon());
+ addCompletionItem(QString::fromLatin1(doxygenTagSpell(i)), Icons::keywordIcon());
return m_positionForProposal;
}
@@ -1193,7 +1193,7 @@ void InternalCppCompletionAssistProcessor::addCompletionItem(Symbol *symbol, int
ConvertToCompletionItem toCompletionItem;
AssistProposalItem *item = toCompletionItem(symbol);
if (item) {
- item->setIcon(m_icons.iconForSymbol(symbol));
+ item->setIcon(Icons::iconForSymbol(symbol));
item->setOrder(order);
m_completions.append(item);
}
@@ -1300,7 +1300,7 @@ void InternalCppCompletionAssistProcessor::completeInclude(const QString &realPa
QString text = fileName.mid(realPath.length() + 1);
if (fileInfo.isDir())
text += QLatin1Char('/');
- addCompletionItem(text, m_icons.keywordIcon());
+ addCompletionItem(text, Icons::keywordIcon());
}
}
}
@@ -1814,7 +1814,7 @@ bool InternalCppCompletionAssistProcessor::completeQtMethod(const QList<LookupIt
break;
signatures.insert(completionText);
ci->setText(completionText); // fix the completion item.
- ci->setIcon(m_icons.iconForSymbol(fun));
+ ci->setIcon(Icons::iconForSymbol(fun));
if (wantQt5SignalOrSlot && fun->isSlot())
ci->setOrder(1);
m_completions.append(ci);
@@ -1841,7 +1841,7 @@ bool InternalCppCompletionAssistProcessor::completeQtMethodClassName(
return false;
const LookupContext &context = m_model->m_typeOfExpression->context();
- const QIcon classIcon = m_icons.iconForType(Icons::ClassIconType);
+ const QIcon classIcon = Icons::iconForType(Icons::ClassIconType);
Overview overview;
foreach (const LookupItem &lookupItem, results) {
@@ -1866,16 +1866,16 @@ void InternalCppCompletionAssistProcessor::addKeywords()
// keyword completion items.
for (int i = T_FIRST_KEYWORD; i < keywordLimit; ++i)
- addCompletionItem(QLatin1String(Token::name(i)), m_icons.keywordIcon(), KeywordsOrder);
+ addCompletionItem(QLatin1String(Token::name(i)), Icons::keywordIcon(), KeywordsOrder);
// primitive type completion items.
for (int i = T_FIRST_PRIMITIVE; i <= T_LAST_PRIMITIVE; ++i)
- addCompletionItem(QLatin1String(Token::name(i)), m_icons.keywordIcon(), KeywordsOrder);
+ addCompletionItem(QLatin1String(Token::name(i)), Icons::keywordIcon(), KeywordsOrder);
// "Identifiers with special meaning"
if (m_interface->languageFeatures().cxx11Enabled) {
- addCompletionItem(QLatin1String("override"), m_icons.keywordIcon(), KeywordsOrder);
- addCompletionItem(QLatin1String("final"), m_icons.keywordIcon(), KeywordsOrder);
+ addCompletionItem(QLatin1String("override"), Icons::keywordIcon(), KeywordsOrder);
+ addCompletionItem(QLatin1String("final"), Icons::keywordIcon(), KeywordsOrder);
}
}
@@ -1888,7 +1888,7 @@ void InternalCppCompletionAssistProcessor::addMacros(const QString &fileName,
addMacros_helper(snapshot, fileName, &processed, &definedMacros);
foreach (const QString &macroName, definedMacros)
- addCompletionItem(macroName, m_icons.macroIcon(), MacrosOrder);
+ addCompletionItem(macroName, Icons::macroIcon(), MacrosOrder);
}
void InternalCppCompletionAssistProcessor::addMacros_helper(const Snapshot &snapshot,
diff --git a/src/plugins/cpptools/cppcompletionassistprocessor.h b/src/plugins/cpptools/cppcompletionassistprocessor.h
index 6db68e1a1a..7ccc632e63 100644
--- a/src/plugins/cpptools/cppcompletionassistprocessor.h
+++ b/src/plugins/cpptools/cppcompletionassistprocessor.h
@@ -30,8 +30,6 @@
#include <texteditor/codeassist/iassistprocessor.h>
#include <texteditor/snippets/snippetassistcollector.h>
-#include <cplusplus/Icons.h>
-
#include <functional>
QT_BEGIN_NAMESPACE
@@ -66,7 +64,6 @@ protected:
QList<TextEditor::AssistProposalItemInterface *> m_completions;
QStringList m_preprocessorCompletions;
TextEditor::IAssistProposal *m_hintProposal;
- CPlusPlus::Icons m_icons;
private:
TextEditor::SnippetAssistCollector m_snippetCollector;
diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h
index 8f1b5b2c1f..a4102c627f 100644
--- a/src/plugins/cpptools/projectpart.h
+++ b/src/plugins/cpptools/projectpart.h
@@ -103,6 +103,7 @@ public: // fields
QByteArray projectDefines;
QByteArray toolchainDefines;
Core::Id toolchainType;
+ QString targetTriple;
ProjectPartHeaderPaths headerPaths;
QStringList precompiledHeaders;
LanguageVersion languageVersion;
diff --git a/src/plugins/cpptools/projectpartbuilder.cpp b/src/plugins/cpptools/projectpartbuilder.cpp
index 50329aa7eb..2cc08c7bd5 100644
--- a/src/plugins/cpptools/projectpartbuilder.cpp
+++ b/src/plugins/cpptools/projectpartbuilder.cpp
@@ -262,6 +262,23 @@ ProjectPartHeaderPath toProjectPartHeaderPath(const ProjectExplorer::HeaderPath
return ProjectPartHeaderPath(headerPath.path(), headerPathType);
}
+QString targetTriple(ProjectExplorer::Project *project, const Core::Id &toolchainId)
+{
+ using namespace ProjectExplorer;
+
+ if (toolchainId == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
+ return QLatin1String("i686-pc-windows-msvc");
+
+ if (project) {
+ if (Target *target = project->activeTarget()) {
+ if (ToolChain *toolChain = ToolChainKitInformation::toolChain(target->kit()))
+ return toolChain->originalTargetTriple();
+ }
+ }
+
+ return QString();
+}
+
}
/*!
@@ -324,6 +341,7 @@ void ProjectPartBuilder::evaluateProjectPartToolchain(
projectPart->toolchainDefines = toolChain->predefinedMacros(commandLineFlags);
projectPart->toolchainType = toolChain->typeId();
+ projectPart->targetTriple = targetTriple(projectPart->project, toolChain->typeId());
projectPart->updateLanguageFeatures();
}
diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp
index 654e77a952..68988d099c 100644
--- a/src/plugins/cpptools/searchsymbols.cpp
+++ b/src/plugins/cpptools/searchsymbols.cpp
@@ -25,6 +25,7 @@
#include "searchsymbols.h"
+#include <cplusplus/Icons.h>
#include <cplusplus/LookupContext.h>
#include <utils/qtcassert.h>
#include <utils/scopedswap.h>
@@ -292,7 +293,7 @@ IndexItem::Ptr SearchSymbols::addChildItem(const QString &symbolName, const QStr
m_paths.insert(symbol->fileId(), path);
}
- const QIcon icon = icons.iconForSymbol(symbol);
+ const QIcon icon = Icons::iconForSymbol(symbol);
IndexItem::Ptr newItem = IndexItem::create(findOrInsert(symbolName),
findOrInsert(symbolType),
findOrInsert(symbolScope),
diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h
index cb4c7dea31..68580d6156 100644
--- a/src/plugins/cpptools/searchsymbols.h
+++ b/src/plugins/cpptools/searchsymbols.h
@@ -31,7 +31,6 @@
#include "stringtable.h"
#include <cplusplus/CppDocument.h>
-#include <cplusplus/Icons.h>
#include <cplusplus/Overview.h>
#include <QString>
@@ -107,7 +106,6 @@ private:
IndexItem::Ptr _parent;
QString _scope;
CPlusPlus::Overview overview;
- CPlusPlus::Icons icons;
SymbolTypes symbolsToSearchFor;
QHash<const CPlusPlus::StringLiteral *, QString> m_paths;
};
diff --git a/src/plugins/debugger/analyzer/analyzericons.h b/src/plugins/debugger/analyzer/analyzericons.h
index c423b27f6d..ac09fe84ef 100644
--- a/src/plugins/debugger/analyzer/analyzericons.h
+++ b/src/plugins/debugger/analyzer/analyzericons.h
@@ -31,8 +31,8 @@ namespace Debugger {
namespace Icons {
const Utils::Icon ANALYZER_CONTROL_START({
- {QLatin1String(":/images/analyzer_overlay_small.png"), Utils::Theme::IconsBaseColor},
- {QLatin1String(":/core/images/run_overlay_small.png"), Utils::Theme::IconsRunColor}});
+ {QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor},
+ {QLatin1String(":/images/analyzer_overlay_small.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon MODE_ANALYZE_CLASSIC(
QLatin1String(":/images/mode_analyze.png"));
const Utils::Icon MODE_ANALYZE_FLAT({
diff --git a/src/plugins/debugger/analyzer/images/analyzer_overlay_small.png b/src/plugins/debugger/analyzer/images/analyzer_overlay_small.png
index 138391ddd0..4e22d67ab0 100644
--- a/src/plugins/debugger/analyzer/images/analyzer_overlay_small.png
+++ b/src/plugins/debugger/analyzer/images/analyzer_overlay_small.png
Binary files differ
diff --git a/src/plugins/debugger/analyzer/images/analyzer_overlay_small@2x.png b/src/plugins/debugger/analyzer/images/analyzer_overlay_small@2x.png
index 7fb5ea48b7..f8da44ca48 100644
--- a/src/plugins/debugger/analyzer/images/analyzer_overlay_small@2x.png
+++ b/src/plugins/debugger/analyzer/images/analyzer_overlay_small@2x.png
Binary files differ
diff --git a/src/plugins/debugger/debugger.qrc b/src/plugins/debugger/debugger.qrc
index cea824430d..d7bd49643d 100644
--- a/src/plugins/debugger/debugger.qrc
+++ b/src/plugins/debugger/debugger.qrc
@@ -4,14 +4,10 @@
<file>images/debugger_breakpoints.png</file>
<file>images/debugger_continue.png</file>
<file>images/debugger_continue@2x.png</file>
- <file>images/debugger_continue_mask.png</file>
- <file>images/debugger_continue_mask@2x.png</file>
- <file>images/stop_overlay_small.png</file>
- <file>images/stop_overlay_small@2x.png</file>
- <file>images/interrupt_overlay_small.png</file>
- <file>images/interrupt_overlay_small@2x.png</file>
- <file>images/continue_overlay_small.png</file>
- <file>images/continue_overlay_small@2x.png</file>
+ <file>images/debugger_continue_1_mask.png</file>
+ <file>images/debugger_continue_1_mask@2x.png</file>
+ <file>images/debugger_continue_2_mask.png</file>
+ <file>images/debugger_continue_2_mask@2x.png</file>
<file>images/debugger_empty_14.png</file>
<file>images/debugger_interrupt.png</file>
<file>images/debugger_interrupt@2x.png</file>
@@ -50,6 +46,10 @@
<file>images/qml/apply-on-save.png</file>
<file>images/debugger_restart_small.png</file>
<file>images/debugger_restart_small@2x.png</file>
+ <file>images/recordfill.png</file>
+ <file>images/recordfill@2x.png</file>
+ <file>images/recordoutline.png</file>
+ <file>images/recordoutline@2x.png</file>
<file>Debugger.mimetypes.xml</file>
</qresource>
</RCC>
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 9bcef1cf68..0f7f1ff0b8 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -168,12 +168,6 @@ enum RemoteSetupState { RemoteSetupNone, RemoteSetupRequested,
RemoteSetupSucceeded, RemoteSetupFailed,
RemoteSetupCancelled };
-struct TypeInfo
-{
- TypeInfo(uint s = 0) : size(s) {}
- uint size;
-};
-
class DebuggerEnginePrivate : public QObject
{
Q_OBJECT
@@ -342,7 +336,6 @@ public:
bool m_isStateDebugging;
Utils::FileInProjectFinder m_fileFinder;
- QHash<QByteArray, TypeInfo> m_typeInfoCache;
QByteArray m_qtNamespace;
};
@@ -1997,31 +1990,13 @@ void DebuggerEngine::updateLocalsView(const GdbMi &all)
{
WatchHandler *handler = watchHandler();
- const bool partial = all["partial"].toInt();
-
const GdbMi typeInfo = all["typeinfo"];
- if (typeInfo.type() == GdbMi::List) {
- foreach (const GdbMi &s, typeInfo.children()) {
- const GdbMi name = s["name"];
- const GdbMi size = s["size"];
- if (name.isValid() && size.isValid())
- d->m_typeInfoCache.insert(QByteArray::fromHex(name.data()),
- TypeInfo(size.data().toUInt()));
- }
- }
+ handler->recordTypeInfo(typeInfo);
- GdbMi data = all["data"];
- foreach (const GdbMi &child, data.children()) {
- WatchItem *item = new WatchItem;
- item->parse(child);
- const TypeInfo ti = d->m_typeInfoCache.value(item->type);
- if (ti.size && !item->size)
- item->size = ti.size;
+ const GdbMi data = all["data"];
+ handler->insertItems(data);
- handler->insertItem(item);
- }
-
- GdbMi ns = all["qtnamespace"];
+ const GdbMi ns = all["qtnamespace"];
if (ns.isValid()) {
setQtNamespace(ns.data());
showMessage(_("FOUND NAMESPACED QT: " + ns.data()));
@@ -2034,6 +2009,7 @@ void DebuggerEngine::updateLocalsView(const GdbMi &all)
DebuggerToolTipManager::updateEngine(this);
+ const bool partial = all["partial"].toInt();
if (!partial)
emit stackFrameCompleted();
}
diff --git a/src/plugins/debugger/debuggericons.h b/src/plugins/debugger/debuggericons.h
index fd2d1837c4..fe577c2c50 100644
--- a/src/plugins/debugger/debuggericons.h
+++ b/src/plugins/debugger/debuggericons.h
@@ -45,22 +45,24 @@ const Utils::Icon TRACEPOINT(
const Utils::Icon CONTINUE(
QLatin1String(":/debugger/images/debugger_continue.png"));
const Utils::Icon CONTINUE_FLAT({
- {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/debugger/images/debugger_continue_mask.png"), Utils::Theme::IconsRunColor}});
+ {QLatin1String(":/debugger/images/debugger_continue_1_mask.png"), Utils::Theme::IconsInterruptColor},
+ {QLatin1String(":/debugger/images/debugger_continue_2_mask.png"), Utils::Theme::IconsRunColor},
+ {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_CONTINUE_SMALL({
- {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/debugger/images/continue_overlay_small.png"), Utils::Theme::IconsRunColor}});
+ {QLatin1String(":/projectexplorer/images/continue_1_small.png"), Utils::Theme::IconsInterruptColor},
+ {QLatin1String(":/projectexplorer/images/continue_2_small.png"), Utils::Theme::IconsRunColor},
+ {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon INTERRUPT(
QLatin1String(":/debugger/images/debugger_interrupt.png"));
const Utils::Icon INTERRUPT_FLAT({
- {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/debugger/images/debugger_interrupt_mask.png"), Utils::Theme::IconsInterruptColor}});
+ {QLatin1String(":/debugger/images/debugger_interrupt_mask.png"), Utils::Theme::IconsInterruptColor},
+ {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_INTERRUPT_SMALL({
- {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/debugger/images/interrupt_overlay_small.png"), Utils::Theme::IconsInterruptColor}});
+ {QLatin1String(":/core/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor},
+ {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_EXIT_SMALL({
- {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/debugger/images/stop_overlay_small.png"), Utils::Theme::IconsStopColor}});
+ {QLatin1String(":/core/images/stop_small.png"), Utils::Theme::IconsStopColor},
+ {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon LOCATION(
QLatin1String(":/debugger/images/location_16.png"));
const Utils::Icon SNAPSHOT(
@@ -75,6 +77,12 @@ const Utils::Icon SELECT(
QLatin1String(":/debugger/images/qml/select.png"));
const Utils::Icon EMPTY(
QLatin1String(":/debugger/images/debugger_empty_14.png"));
+const Utils::Icon RECORD_ON({
+ {QLatin1String(":/debugger/images/recordfill.png"), Utils::Theme::IconsStopColor},
+ {QLatin1String(":/debugger/images/recordoutline.png"), Utils::Theme::IconsBaseColor}}, Utils::Icon::Tint | Utils::Icon::DropShadow);
+const Utils::Icon RECORD_OFF({
+ {QLatin1String(":/debugger/images/recordfill.png"), Utils::Theme::IconsDisabledColor},
+ {QLatin1String(":/debugger/images/recordoutline.png"), Utils::Theme::IconsBaseColor}}, Utils::Icon::Tint | Utils::Icon::DropShadow);
const Utils::Icon STEP_OVER({
{QLatin1String(":/debugger/images/debugger_stepover_small.png"), Utils::Theme::IconsBaseColor}});
diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp
index 726673b4d9..8d8749709f 100644
--- a/src/plugins/debugger/debuggermainwindow.cpp
+++ b/src/plugins/debugger/debuggermainwindow.cpp
@@ -79,22 +79,15 @@ DebuggerMainWindow::DebuggerMainWindow()
DebuggerMainWindow::~DebuggerMainWindow()
{
- // We keep track of widgets for operations that haven't been activated, yet, and make sure we
- // don't leak any.
+ // As we have to setParent(0) on dock widget that are not selected,
+ // we keep track of all and make sure we don't leak any
foreach (const Perspective &perspective, m_perspectiveForPerspectiveId) {
foreach (const Perspective::Operation &operation, perspective.operations()) {
- if (operation.widget) {
- // There are two possible states: Either addDockForWidget(widget) has
- // been called on an operation.widget (e.g. when the perspective gets
- // activated for the first time), or not. In the first case we don't
- // have to explicitly delete it as we have called setParent(this) on
- // it. In the second case, if the widget didn't have a parent before,
- // we have to delete it.
- if (!operation.widget->parentWidget()) {
- // These are from perspectives that were never activated and didn't
- // have a parent to begin with.
- delete operation.widget;
- }
+ if (operation.widget && !operation.widget->parentWidget()) {
+ // These are from inactive perspectives. We call setParent(0) when deactivating
+ // a perspective so that the widgets can't be accidentally enabled in the wrong
+ // perspectives. That's why we have to delete them manually here.
+ delete operation.widget;
}
}
}
@@ -266,9 +259,10 @@ void DebuggerMainWindow::loadPerspectiveHelper(const QByteArray &perspectiveId,
foreach (QDockWidget *dockWidget, m_dockForDockId) {
QTC_ASSERT(dockWidget, continue);
dockWidget->setFloating(false);
- dockWidget->setParent(this);
removeDockWidget(dockWidget);
dockWidget->hide();
+ // Prevent saveState storing the data of the wrong children.
+ dockWidget->setParent(0);
}
ICore::removeAdditionalContext(Context(Id::fromName(m_currentPerspectiveId)));
@@ -303,6 +297,8 @@ void DebuggerMainWindow::loadPerspectiveHelper(const QByteArray &perspectiveId,
ActionManager::actionContainer(Core::Constants::M_WINDOW_VIEWS)->addAction(cmd);
}
+ // Restore parent/child relation, so that the widget hierarchy is clear.
+ dock->setParent(this);
if (operation.operationType == Perspective::Raise) {
dock->raise();
continue;
@@ -361,7 +357,6 @@ QDockWidget *DebuggerMainWindow::registerDockWidget(const QByteArray &dockId, QW
{
QTC_ASSERT(!widget->objectName().isEmpty(), return 0);
QDockWidget *dockWidget = addDockForWidget(widget);
- dockWidget->setParent(this);
m_dockForDockId[dockId] = dockWidget;
return dockWidget;
}
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 0ef5a4adb7..f60c1cf517 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1173,6 +1173,7 @@ bool DebuggerPluginPrivate::parseArgument(QStringList::const_iterator &it,
}
DebuggerRunParameters rp;
rp.startMode = AttachCrashedExternal;
+ rp.languages = CppLanguage;
rp.crashParameter = it->section(QLatin1Char(':'), 0, 0);
rp.attachPID = it->section(QLatin1Char(':'), 1, 1).toULongLong();
rp.displayName = tr("Crashed process %1").arg(rp.attachPID);
@@ -1688,7 +1689,7 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments,
auto qmlZoomDummyAction = new QAction(tr("Zoom"), this);
qmlZoomDummyAction->setCheckable(true);
- qmlZoomDummyAction->setIcon(Core::Icons::ZOOM.icon());
+ qmlZoomDummyAction->setIcon(Core::Icons::ZOOM_TOOLBAR.icon());
qmlZoomDummyAction->setEnabled(false);
cmd = ActionManager::registerAction(qmlZoomDummyAction, Constants::QML_ZOOMTOOL);
debugMenu->addAction(cmd);
@@ -3536,7 +3537,7 @@ QAction *createStartAction()
QAction *createStopAction()
{
auto action = new QAction(DebuggerMainWindow::tr("Stop"), DebuggerPlugin::instance());
- action->setIcon(ProjectExplorer::Icons::STOP_SMALL.icon());
+ action->setIcon(Core::Icons::STOP_SMALL.icon());
action->setEnabled(true);
return action;
}
diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp
index 13904ca120..8a14181fc3 100644
--- a/src/plugins/debugger/debuggerruncontrol.cpp
+++ b/src/plugins/debugger/debuggerruncontrol.cpp
@@ -487,11 +487,12 @@ void DebuggerRunControlCreator::enrich(const RunConfiguration *runConfig, const
m_rp.masterEngineType = QmlEngineType;
service = QmlDebug::QmlDebuggerServices;
}
- if (m_rp.startMode != AttachExternal)
+ if (m_rp.startMode != AttachExternal && m_rp.startMode != AttachCrashedExternal) {
QtcProcess::addArg(&m_rp.inferior.commandLineArguments,
(m_rp.languages & CppLanguage) && m_rp.nativeMixedEnabled ?
QmlDebug::qmlDebugNativeArguments(service, false) :
QmlDebug::qmlDebugTcpArguments(service, m_rp.qmlServerPort));
+ }
}
}
diff --git a/src/plugins/debugger/gdb/coregdbadapter.cpp b/src/plugins/debugger/gdb/coregdbadapter.cpp
index 19868da077..d946efbe4a 100644
--- a/src/plugins/debugger/gdb/coregdbadapter.cpp
+++ b/src/plugins/debugger/gdb/coregdbadapter.cpp
@@ -88,14 +88,14 @@ void GdbCoreEngine::setupEngine()
static QString findExecutableFromName(const QString &fileNameFromCore, const QString &coreFile)
{
- if (QFileInfo(fileNameFromCore).isFile())
- return fileNameFromCore;
if (fileNameFromCore.isEmpty())
- return QString();
+ return fileNameFromCore;
+ QFileInfo fi(fileNameFromCore);
+ if (fi.isFile())
+ return fileNameFromCore;
// turn the filename into an absolute path, using the location of the core as a hint
QString absPath;
- QFileInfo fi(fileNameFromCore);
if (fi.isAbsolute()) {
absPath = fileNameFromCore;
} else {
@@ -204,6 +204,7 @@ void GdbCoreEngine::writeCoreChunk()
void GdbCoreEngine::setupInferior()
{
CHECK_STATE(InferiorSetupRequested);
+ setLinuxOsAbi();
// Do that first, otherwise no symbols are loaded.
QFileInfo fi(m_executable);
QByteArray path = fi.absoluteFilePath().toLocal8Bit();
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 328b10fb97..9ff2da841b 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1917,6 +1917,13 @@ void GdbEngine::handleGdbExit(const DebuggerResponse &response)
}
}
+void GdbEngine::setLinuxOsAbi()
+{
+ // In case GDB has multiple supported targets, the default osabi can be Cygwin.
+ if (HostOsInfo::isWindowsHost() && runParameters().toolChainAbi.binaryFormat() == Abi::ElfFormat)
+ runCommand({"set osabi GNU/Linux"});
+}
+
void GdbEngine::detachDebugger()
{
CHECK_STATE(InferiorStopOk);
@@ -2773,7 +2780,7 @@ void GdbEngine::insertBreakpoint(Breakpoint bp)
QByteArray condition = bp.condition();
if (!condition.isEmpty())
- cmd.function += " -c \"" + condition + "\" ";
+ cmd.function += " -c \"" + condition.replace('"', "\\\"") + "\" ";
cmd.function += breakpointLocation(bp.parameters());
cmd.callback = [this, bp](const DebuggerResponse &r) { handleBreakInsert1(r, bp); };
@@ -4002,7 +4009,7 @@ void GdbEngine::startGdb(const QStringList &args)
showMessage(_("STARTING ") + m_gdb + _(" ") + gdbArgs.join(QLatin1Char(' ')));
m_gdbProc.setCommand(m_gdb, QtcProcess::joinArgs(gdbArgs));
Environment env = Environment(m_gdbProc.systemEnvironment());
- env.set(QLatin1String("LANG"), QLatin1String("C"));
+ env.set(QLatin1String("LC_NUMERIC"), QLatin1String("C"));
m_gdbProc.setEnvironment(env);
m_gdbProc.start();
@@ -4596,7 +4603,6 @@ void GdbEngine::doUpdateLocals(const UpdateParameters &params)
cmd.arg("resultvarname", m_resultVarName);
cmd.arg("partialvar", params.partialVariable);
- cmd.arg("sortstructs", boolSetting(SortStructMembers));
cmd.callback = CB(handleFetchVariables);
runCommand(cmd);
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index a336ccb272..2f67440fa1 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -93,6 +93,7 @@ protected: ////////// Gdb Process Management //////////
void startGdb(const QStringList &args = QStringList());
void handleInferiorShutdown(const DebuggerResponse &response);
void handleGdbExit(const DebuggerResponse &response);
+ void setLinuxOsAbi();
void loadInitScript();
void setEnvironmentVariables();
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index bf92900bf9..ba2f0f47da 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -162,6 +162,7 @@ void GdbRemoteServerEngine::uploadProcFinished()
void GdbRemoteServerEngine::setupInferior()
{
QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
+ setLinuxOsAbi();
const DebuggerRunParameters &rp = runParameters();
QString executableFileName;
if (!rp.inferior.executable.isEmpty()) {
diff --git a/src/plugins/debugger/images/continue_overlay_small.png b/src/plugins/debugger/images/continue_overlay_small.png
deleted file mode 100644
index 75df55d1f6..0000000000
--- a/src/plugins/debugger/images/continue_overlay_small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/continue_overlay_small@2x.png b/src/plugins/debugger/images/continue_overlay_small@2x.png
deleted file mode 100644
index 5fc601ca17..0000000000
--- a/src/plugins/debugger/images/continue_overlay_small@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_continue_1_mask.png b/src/plugins/debugger/images/debugger_continue_1_mask.png
new file mode 100644
index 0000000000..522e5f36cc
--- /dev/null
+++ b/src/plugins/debugger/images/debugger_continue_1_mask.png
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_continue_1_mask@2x.png b/src/plugins/debugger/images/debugger_continue_1_mask@2x.png
new file mode 100644
index 0000000000..217ddc826f
--- /dev/null
+++ b/src/plugins/debugger/images/debugger_continue_1_mask@2x.png
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_continue_2_mask.png b/src/plugins/debugger/images/debugger_continue_2_mask.png
new file mode 100644
index 0000000000..756ba959f0
--- /dev/null
+++ b/src/plugins/debugger/images/debugger_continue_2_mask.png
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_continue_2_mask@2x.png b/src/plugins/debugger/images/debugger_continue_2_mask@2x.png
new file mode 100644
index 0000000000..a4801fa6ba
--- /dev/null
+++ b/src/plugins/debugger/images/debugger_continue_2_mask@2x.png
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_continue_mask.png b/src/plugins/debugger/images/debugger_continue_mask.png
deleted file mode 100644
index fb9b1cb916..0000000000
--- a/src/plugins/debugger/images/debugger_continue_mask.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_continue_mask@2x.png b/src/plugins/debugger/images/debugger_continue_mask@2x.png
deleted file mode 100644
index 18b5be7203..0000000000
--- a/src/plugins/debugger/images/debugger_continue_mask@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_interrupt_mask.png b/src/plugins/debugger/images/debugger_interrupt_mask.png
index c2081ca136..87f195f5c0 100644
--- a/src/plugins/debugger/images/debugger_interrupt_mask.png
+++ b/src/plugins/debugger/images/debugger_interrupt_mask.png
Binary files differ
diff --git a/src/plugins/debugger/images/debugger_interrupt_mask@2x.png b/src/plugins/debugger/images/debugger_interrupt_mask@2x.png
index 43aec6f9cc..6c477085d7 100644
--- a/src/plugins/debugger/images/debugger_interrupt_mask@2x.png
+++ b/src/plugins/debugger/images/debugger_interrupt_mask@2x.png
Binary files differ
diff --git a/src/plugins/debugger/images/interrupt_overlay_small.png b/src/plugins/debugger/images/interrupt_overlay_small.png
deleted file mode 100644
index e61b75384a..0000000000
--- a/src/plugins/debugger/images/interrupt_overlay_small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/interrupt_overlay_small@2x.png b/src/plugins/debugger/images/interrupt_overlay_small@2x.png
deleted file mode 100644
index 2d686964bf..0000000000
--- a/src/plugins/debugger/images/interrupt_overlay_small@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/recordfill.png b/src/plugins/debugger/images/recordfill.png
new file mode 100644
index 0000000000..57dc3054c8
--- /dev/null
+++ b/src/plugins/debugger/images/recordfill.png
Binary files differ
diff --git a/src/plugins/debugger/images/recordfill@2x.png b/src/plugins/debugger/images/recordfill@2x.png
new file mode 100644
index 0000000000..d4062c909c
--- /dev/null
+++ b/src/plugins/debugger/images/recordfill@2x.png
Binary files differ
diff --git a/src/plugins/debugger/images/recordoutline.png b/src/plugins/debugger/images/recordoutline.png
new file mode 100644
index 0000000000..1d82d1028d
--- /dev/null
+++ b/src/plugins/debugger/images/recordoutline.png
Binary files differ
diff --git a/src/plugins/debugger/images/recordoutline@2x.png b/src/plugins/debugger/images/recordoutline@2x.png
new file mode 100644
index 0000000000..f4710c98f0
--- /dev/null
+++ b/src/plugins/debugger/images/recordoutline@2x.png
Binary files differ
diff --git a/src/plugins/debugger/images/stop_overlay_small.png b/src/plugins/debugger/images/stop_overlay_small.png
deleted file mode 100644
index 8350ba9eec..0000000000
--- a/src/plugins/debugger/images/stop_overlay_small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/images/stop_overlay_small@2x.png b/src/plugins/debugger/images/stop_overlay_small@2x.png
deleted file mode 100644
index f0fb92f670..0000000000
--- a/src/plugins/debugger/images/stop_overlay_small@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp
index f818c83e29..28bae13c45 100644
--- a/src/plugins/debugger/lldb/lldbengine.cpp
+++ b/src/plugins/debugger/lldb/lldbengine.cpp
@@ -638,10 +638,12 @@ void LldbEngine::updateBreakpointData(Breakpoint bp, const GdbMi &bkpt, bool add
sub.lineNumber = location["line"].toInt();
bp.insertSubBreakpoint(sub);
}
+ response.pending = false;
} else if (numChild == 1) {
const GdbMi location = locations.childAt(0);
response.address = location["addr"].toAddress();
response.functionName = location["func"].toUtf8();
+ response.pending = false;
} else {
// This can happen for pending breakpoints.
showMessage(_("NO LOCATIONS (YET) FOR BP %1").arg(response.toString()));
@@ -791,7 +793,6 @@ void LldbEngine::doUpdateLocals(const UpdateParameters &params)
cmd.arg("autoderef", boolSetting(AutoDerefPointers));
cmd.arg("dyntype", boolSetting(UseDynamicType));
cmd.arg("partialvar", params.partialVariable);
- cmd.arg("sortstructs", boolSetting(SortStructMembers));
cmd.arg("qobjectnames", boolSetting(ShowQObjectNames));
StackFrame frame = stackHandler()->currentFrame();
diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp
index 1c6dc62e65..02cacdedf0 100644
--- a/src/plugins/debugger/pdb/pdbengine.cpp
+++ b/src/plugins/debugger/pdb/pdbengine.cpp
@@ -513,13 +513,7 @@ void PdbEngine::refreshLocals(const GdbMi &vars)
{
WatchHandler *handler = watchHandler();
handler->resetValueCache();
-
- foreach (const GdbMi &child, vars.children()) {
- WatchItem *item = new WatchItem;
- item->parse(child);
- handler->insertItem(item);
- }
-
+ handler->insertItems(vars);
handler->notifyUpdateFinished();
DebuggerToolTipManager::updateEngine(this);
diff --git a/src/plugins/debugger/watchdata.cpp b/src/plugins/debugger/watchdata.cpp
index 2be4a083b3..98b32654db 100644
--- a/src/plugins/debugger/watchdata.cpp
+++ b/src/plugins/debugger/watchdata.cpp
@@ -118,6 +118,7 @@ WatchItem::WatchItem() :
bitsize(0),
elided(0),
arrayIndex(-1),
+ sortGroup(0),
wantsChildren(false),
valueEnabled(true),
valueEditable(true),
@@ -380,7 +381,18 @@ static void decodeArrayData(WatchItem *item, const QByteArray &rawData,
qDebug() << "ENCODING ERROR: " << encoding.toString();
}
-void WatchItem::parseHelper(const GdbMi &input)
+static bool sortByName(const Utils::TreeItem *a, const Utils::TreeItem *b)
+{
+ auto aa = static_cast<const WatchItem *>(a);
+ auto bb = static_cast<const WatchItem *>(b);
+
+ if (aa->sortGroup != bb->sortGroup)
+ return aa->sortGroup > bb->sortGroup;
+
+ return aa->name < bb->name;
+}
+
+void WatchItem::parseHelper(const GdbMi &input, bool maySort)
{
setChildrenUnneeded();
@@ -437,6 +449,10 @@ void WatchItem::parseHelper(const GdbMi &input)
if (mi.isValid())
exp = mi.data();
+ mi = input["sortgroup"];
+ if (mi.isValid())
+ sortGroup = mi.toInt();
+
mi = input["valueenabled"];
if (mi.data() == "true")
valueEnabled = true;
@@ -500,14 +516,17 @@ void WatchItem::parseHelper(const GdbMi &input)
QByteArray key = subinput["key"].data();
if (!key.isEmpty())
child->name = decodeData(key, subinput["keyencoded"].data());
- child->parseHelper(subinput);
+ child->parseHelper(subinput, maySort);
appendChild(child);
}
+
+ if (maySort && input["sortable"].toInt())
+ sortChildren(&sortByName);
}
}
}
-void WatchItem::parse(const GdbMi &data)
+void WatchItem::parse(const GdbMi &data, bool maySort)
{
iname = data["iname"].data();
@@ -517,7 +536,7 @@ void WatchItem::parse(const GdbMi &data)
else
name = QString::fromLatin1(data["name"].data());
- parseHelper(data);
+ parseHelper(data, maySort);
if (wname.isValid())
exp = name.toUtf8();
diff --git a/src/plugins/debugger/watchdata.h b/src/plugins/debugger/watchdata.h
index 575c628650..8374d60d95 100644
--- a/src/plugins/debugger/watchdata.h
+++ b/src/plugins/debugger/watchdata.h
@@ -44,7 +44,7 @@ class WatchItem : public Utils::TreeItem
public:
WatchItem();
- void parse(const GdbMi &input);
+ void parse(const GdbMi &input, bool maySort);
bool isLocal() const;
bool isWatcher() const;
@@ -116,13 +116,14 @@ public:
uint bitsize; // Size in case of bit fields
int elided; // Full size if value was cut off, -1 if cut on unknown size, 0 otherwise
int arrayIndex; // -1 if not an array member
+ uchar sortGroup; // 0 - ordinary member, 1 - vptr, 2 - base class
bool wantsChildren;
bool valueEnabled; // Value will be enabled or not
bool valueEditable; // Value will be editable
bool outdated; // \internal item is to be removed.
private:
- void parseHelper(const GdbMi &input);
+ void parseHelper(const GdbMi &input, bool maySort);
Q_DECLARE_TR_FUNCTIONS(Debugger::Internal::WatchHandler)
};
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index c58f6ec014..da2a0d60be 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -80,6 +80,12 @@ static int theUnprintableBase = -1;
const char INameProperty[] = "INameProperty";
const char KeyProperty[] = "KeyProperty";
+struct TypeInfo
+{
+ TypeInfo(uint s = 0) : size(s) {}
+ uint size;
+};
+
static const WatchModel *watchModel(const WatchItem *item)
{
return reinterpret_cast<const WatchModel *>(item->model());
@@ -345,7 +351,6 @@ public:
WatchItem *findItem(const QByteArray &iname) const;
const WatchItem *watchItem(const QModelIndex &idx) const;
- void insertItem(WatchItem *item);
void reexpandItems();
void showEditValue(const WatchItem *item);
@@ -373,6 +378,7 @@ public:
QSet<QByteArray> m_expandedINames;
QTimer m_requestUpdateTimer;
+ QHash<QByteArray, TypeInfo> m_reportedTypeInfo;
QHash<QString, DisplayFormats> m_reportedTypeFormats; // Type name -> Dumper Formats
QHash<QByteArray, QString> m_valueCache;
};
@@ -1249,23 +1255,46 @@ void WatchHandler::cleanup()
m_model->m_separatedView->hide();
}
-void WatchHandler::insertItem(WatchItem *item)
+static bool sortByName(const TreeItem *a, const TreeItem *b)
+{
+ auto aa = static_cast<const WatchItem *>(a);
+ auto bb = static_cast<const WatchItem *>(b);
+ return aa->name < bb->name;
+}
+
+void WatchHandler::insertItems(const GdbMi &data)
{
- m_model->insertItem(item);
+ QSet<TreeItem *> itemsToSort;
+
+ const bool sortStructMembers = boolSetting(SortStructMembers);
+ foreach (const GdbMi &child, data.children()) {
+ auto item = new WatchItem;
+ item->parse(child, sortStructMembers);
+ const TypeInfo ti = m_model->m_reportedTypeInfo.value(item->type);
+ if (ti.size && !item->size)
+ item->size = ti.size;
+
+ const bool added = insertItem(item);
+ if (added && item->level() == 2)
+ itemsToSort.insert(item->parent());
+ }
+
+ foreach (TreeItem *toplevel, itemsToSort)
+ toplevel->sortChildren(&sortByName);
}
-void WatchModel::insertItem(WatchItem *item)
+bool WatchHandler::insertItem(WatchItem *item)
{
- QTC_ASSERT(!item->iname.isEmpty(), return);
+ QTC_ASSERT(!item->iname.isEmpty(), return false);
- WatchItem *parent = findItem(parentName(item->iname));
- QTC_ASSERT(parent, return);
+ WatchItem *parent = m_model->findItem(parentName(item->iname));
+ QTC_ASSERT(parent, return false);
bool found = false;
const QVector<TreeItem *> siblings = parent->children();
for (int row = 0, n = siblings.size(); row < n; ++row) {
if (static_cast<WatchItem *>(siblings.at(row))->iname == item->iname) {
- delete takeItem(parent->children().at(row));
+ delete m_model->takeItem(parent->children().at(row));
parent->insertChild(row, item);
found = true;
break;
@@ -1276,7 +1305,9 @@ void WatchModel::insertItem(WatchItem *item)
item->update();
- item->walkTree([this](TreeItem *sub) { showEditValue(static_cast<WatchItem *>(sub)); });
+ item->walkTree([this](TreeItem *sub) { m_model->showEditValue(static_cast<WatchItem *>(sub)); });
+
+ return !found;
}
void WatchModel::reexpandItems()
@@ -1403,7 +1434,7 @@ void WatchHandler::watchExpression(const QString &exp0, const QString &name)
item->exp = exp;
item->name = name.isEmpty() ? exp0 : name;
item->iname = watcherName(exp);
- m_model->insertItem(item);
+ insertItem(item);
saveWatchers();
if (m_model->m_engine->state() == DebuggerNotReady) {
@@ -1874,5 +1905,16 @@ QSet<QByteArray> WatchHandler::expandedINames() const
return m_model->m_expandedINames;
}
+void WatchHandler::recordTypeInfo(const GdbMi &typeInfo)
+{
+ if (typeInfo.type() == GdbMi::List) {
+ foreach (const GdbMi &s, typeInfo.children()) {
+ QByteArray typeName = QByteArray::fromHex(s["name"].data());
+ TypeInfo ti(s["size"].data().toUInt());
+ m_model->m_reportedTypeInfo.insert(typeName, ti);
+ }
+ }
+}
+
} // namespace Internal
} // namespace Debugger
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index 527c93bb45..6b5fc51b11 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -108,7 +108,9 @@ public:
void setCurrentItem(const QByteArray &iname);
void updateWatchersWindow();
- void insertItem(WatchItem *item); // Takes ownership.
+ bool insertItem(WatchItem *item); // Takes ownership, returns whether item was added, not overwritten.
+ void insertItems(const GdbMi &data);
+
void removeItemByIName(const QByteArray &iname);
void removeAllData(bool includeInspectData = false);
void resetValueCache();
@@ -118,6 +120,7 @@ public:
void notifyUpdateFinished();
void reexpandItems();
+ void recordTypeInfo(const GdbMi &typeInfo);
private:
WatchModel *m_model; // Owned.
diff --git a/src/plugins/genericprojectmanager/genericprojectplugin.cpp b/src/plugins/genericprojectmanager/genericprojectplugin.cpp
index beefbbdc31..c49ad6198c 100644
--- a/src/plugins/genericprojectmanager/genericprojectplugin.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectplugin.cpp
@@ -86,7 +86,7 @@ void GenericProjectPlugin::editFiles()
auto genericProject = qobject_cast<GenericProject *>(ProjectTree::currentProject());
if (!genericProject)
return;
- SelectableFilesDialogEditFiles sfd(genericProject->projectFilePath(),
+ SelectableFilesDialogEditFiles sfd(genericProject->projectDirectory(),
Utils::transform(genericProject->files(), [](const QString &f) { return Utils::FileName::fromString(f); }),
ICore::mainWindow());
if (sfd.exec() == QDialog::Accepted)
diff --git a/src/plugins/glsleditor/glslcompletionassist.cpp b/src/plugins/glsleditor/glslcompletionassist.cpp
index e75bfb97a2..9be913279e 100644
--- a/src/plugins/glsleditor/glslcompletionassist.cpp
+++ b/src/plugins/glsleditor/glslcompletionassist.cpp
@@ -41,7 +41,9 @@
#include <texteditor/codeassist/genericproposal.h>
#include <texteditor/codeassist/functionhintproposal.h>
#include <cplusplus/ExpressionUnderCursor.h>
+#include <cplusplus/Icons.h>
+#include <utils/icon.h>
#include <utils/faketooltip.h>
#include <QIcon>
@@ -138,6 +140,57 @@ static bool checkStartOfIdentifier(const QString &word)
return false;
}
+enum IconTypes {
+ IconTypeAttribute,
+ IconTypeUniform,
+ IconTypeKeyword,
+ IconTypeVarying,
+ IconTypeConst,
+ IconTypeVariable,
+ IconTypeType,
+ IconTypeFunction,
+ IconTypeOther
+};
+
+static QIcon glslIcon(IconTypes iconType)
+{
+ using namespace CPlusPlus;
+ using namespace Utils;
+
+ const QString member = QLatin1String(":/codemodel/images/member.png");
+
+ switch (iconType) {
+ case IconTypeType:
+ return Icons::iconForType(Icons::ClassIconType);
+ case IconTypeConst:
+ return Icons::iconForType(Icons::EnumeratorIconType);
+ case IconTypeKeyword:
+ return Icons::iconForType(Icons::KeywordIconType);
+ case IconTypeFunction:
+ return Icons::iconForType(Icons::FuncPublicIconType);
+ case IconTypeVariable:
+ return Icons::iconForType(Icons::VarPublicIconType);
+ case IconTypeAttribute: {
+ static const QIcon icon =
+ Icon({{member, Theme::IconsCodeModelAttributeColor}}, Icon::Tint).icon();
+ return icon;
+ }
+ case IconTypeUniform: {
+ static const QIcon icon =
+ Icon({{member, Theme::IconsCodeModelUniformColor}}, Icon::Tint).icon();
+ return icon;
+ }
+ case IconTypeVarying: {
+ static const QIcon icon =
+ Icon({{member, Theme::IconsCodeModelVaryingColor}}, Icon::Tint).icon();
+ return icon;
+ }
+ case IconTypeOther:
+ default:
+ return Icons::iconForType(Icons::NamespaceIconType);
+ }
+}
+
// ----------------------------
// GlslCompletionAssistProvider
// ----------------------------
@@ -223,15 +276,6 @@ int GlslFunctionHintProposalModel::activeArgument(const QString &prefix) const
// -----------------------------
GlslCompletionAssistProcessor::GlslCompletionAssistProcessor()
: m_startPosition(0)
- , m_keywordIcon(QLatin1String(":/glsleditor/images/keyword.png"))
- , m_varIcon(QLatin1String(":/glsleditor/images/var.png"))
- , m_functionIcon(QLatin1String(":/glsleditor/images/func.png"))
- , m_typeIcon(QLatin1String(":/glsleditor/images/type.png"))
- , m_constIcon(QLatin1String(":/glsleditor/images/const.png"))
- , m_attributeIcon(QLatin1String(":/glsleditor/images/attribute.png"))
- , m_uniformIcon(QLatin1String(":/glsleditor/images/uniform.png"))
- , m_varyingIcon(QLatin1String(":/glsleditor/images/varying.png"))
- , m_otherIcon(QLatin1String(":/glsleditor/images/other.png"))
{}
GlslCompletionAssistProcessor::~GlslCompletionAssistProcessor()
@@ -385,9 +429,9 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
0
};
for (int index = 0; attributeNames[index]; ++index)
- m_completions << createCompletionItem(QString::fromLatin1(attributeNames[index]), m_attributeIcon);
+ m_completions << createCompletionItem(QString::fromLatin1(attributeNames[index]), glslIcon(IconTypeAttribute));
for (int index = 0; uniformNames[index]; ++index)
- m_completions << createCompletionItem(QString::fromLatin1(uniformNames[index]), m_uniformIcon);
+ m_completions << createCompletionItem(QString::fromLatin1(uniformNames[index]), glslIcon(IconTypeUniform));
}
}
@@ -395,7 +439,7 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
QStringList keywords = GLSL::Lexer::keywords(languageVariant(m_interface->mimeType()));
// m_keywordCompletions.clear();
for (int index = 0; index < keywords.size(); ++index)
- m_completions << createCompletionItem(keywords.at(index), m_keywordIcon);
+ m_completions << createCompletionItem(keywords.at(index), glslIcon(IconTypeKeyword));
// m_keywordVariant = languageVariant(m_interface->mimeType());
// }
@@ -408,23 +452,23 @@ IAssistProposal *GlslCompletionAssistProcessor::perform(const AssistInterface *i
if (var) {
int storageType = var->qualifiers() & GLSL::QualifiedTypeAST::StorageMask;
if (storageType == GLSL::QualifiedTypeAST::Attribute)
- icon = m_attributeIcon;
+ icon = glslIcon(IconTypeAttribute);
else if (storageType == GLSL::QualifiedTypeAST::Uniform)
- icon = m_uniformIcon;
+ icon = glslIcon(IconTypeUniform);
else if (storageType == GLSL::QualifiedTypeAST::Varying)
- icon = m_varyingIcon;
+ icon = glslIcon(IconTypeVarying);
else if (storageType == GLSL::QualifiedTypeAST::Const)
- icon = m_constIcon;
+ icon = glslIcon(IconTypeConst);
else
- icon = m_varIcon;
+ icon = glslIcon(IconTypeVariable);
} else if (s->asArgument()) {
- icon = m_varIcon;
+ icon = glslIcon(IconTypeVariable);
} else if (s->asFunction() || s->asOverloadSet()) {
- icon = m_functionIcon;
+ icon = glslIcon(IconTypeFunction);
} else if (s->asStruct()) {
- icon = m_typeIcon;
+ icon = glslIcon(IconTypeType);
} else {
- icon = m_otherIcon;
+ icon = glslIcon(IconTypeOther);
}
if (specialMembers.contains(s->name()))
m_completions << createCompletionItem(s->name(), icon, SpecialMemberOrder);
diff --git a/src/plugins/glsleditor/glslcompletionassist.h b/src/plugins/glsleditor/glslcompletionassist.h
index 3714c3e383..234b6331f0 100644
--- a/src/plugins/glsleditor/glslcompletionassist.h
+++ b/src/plugins/glsleditor/glslcompletionassist.h
@@ -33,7 +33,6 @@
#include <texteditor/codeassist/ifunctionhintproposalmodel.h>
-#include <QIcon>
#include <QScopedPointer>
#include <QSharedPointer>
@@ -106,16 +105,6 @@ private:
int m_startPosition;
QScopedPointer<const GlslCompletionAssistInterface> m_interface;
-
- QIcon m_keywordIcon;
- QIcon m_varIcon;
- QIcon m_functionIcon;
- QIcon m_typeIcon;
- QIcon m_constIcon;
- QIcon m_attributeIcon;
- QIcon m_uniformIcon;
- QIcon m_varyingIcon;
- QIcon m_otherIcon;
};
class GlslCompletionAssistInterface : public TextEditor::AssistInterface
diff --git a/src/plugins/glsleditor/glsleditor.qrc b/src/plugins/glsleditor/glsleditor.qrc
index 3455048e00..cb1c737c9a 100644
--- a/src/plugins/glsleditor/glsleditor.qrc
+++ b/src/plugins/glsleditor/glsleditor.qrc
@@ -2,14 +2,5 @@
<qresource prefix="/glsleditor">
<file>GLSLEditor.mimetypes.xml</file>
<file>images/glslfile.png</file>
- <file>images/keyword.png</file>
- <file>images/var.png</file>
- <file>images/func.png</file>
- <file>images/type.png</file>
- <file>images/const.png</file>
- <file>images/attribute.png</file>
- <file>images/uniform.png</file>
- <file>images/varying.png</file>
- <file>images/other.png</file>
</qresource>
</RCC>
diff --git a/src/plugins/glsleditor/images/attribute.png b/src/plugins/glsleditor/images/attribute.png
deleted file mode 100644
index fe2bdc36fd..0000000000
--- a/src/plugins/glsleditor/images/attribute.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/const.png b/src/plugins/glsleditor/images/const.png
deleted file mode 100644
index 25fc49c659..0000000000
--- a/src/plugins/glsleditor/images/const.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/func.png b/src/plugins/glsleditor/images/func.png
deleted file mode 100644
index e515e76e61..0000000000
--- a/src/plugins/glsleditor/images/func.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/keyword.png b/src/plugins/glsleditor/images/keyword.png
deleted file mode 100644
index e5a51858d9..0000000000
--- a/src/plugins/glsleditor/images/keyword.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/other.png b/src/plugins/glsleditor/images/other.png
deleted file mode 100644
index 18d2941572..0000000000
--- a/src/plugins/glsleditor/images/other.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/type.png b/src/plugins/glsleditor/images/type.png
deleted file mode 100644
index 88432d2cb1..0000000000
--- a/src/plugins/glsleditor/images/type.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/uniform.png b/src/plugins/glsleditor/images/uniform.png
deleted file mode 100644
index 075e875dd2..0000000000
--- a/src/plugins/glsleditor/images/uniform.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/var.png b/src/plugins/glsleditor/images/var.png
deleted file mode 100644
index 089cfb45e5..0000000000
--- a/src/plugins/glsleditor/images/var.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/glsleditor/images/varying.png b/src/plugins/glsleditor/images/varying.png
deleted file mode 100644
index a6e3e12c6d..0000000000
--- a/src/plugins/glsleditor/images/varying.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/imageviewer/images/outline.png b/src/plugins/imageviewer/images/outline.png
deleted file mode 100644
index aaa9464535..0000000000
--- a/src/plugins/imageviewer/images/outline.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/imageviewer/images/pause-small.png b/src/plugins/imageviewer/images/pause-small.png
deleted file mode 100644
index 66d1f46d3d..0000000000
--- a/src/plugins/imageviewer/images/pause-small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/imageviewer/images/play-small.png b/src/plugins/imageviewer/images/play-small.png
deleted file mode 100644
index 3a7a99fb24..0000000000
--- a/src/plugins/imageviewer/images/play-small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/imageviewer/imageviewer.cpp b/src/plugins/imageviewer/imageviewer.cpp
index 44f86c44b9..5710174a1d 100644
--- a/src/plugins/imageviewer/imageviewer.cpp
+++ b/src/plugins/imageviewer/imageviewer.cpp
@@ -102,9 +102,10 @@ void ImageViewer::ctor()
d->ui_toolbar.setupUi(d->toolbar);
d->ui_toolbar.toolButtonExportImage->setIcon(QIcon::fromTheme(QLatin1String("document-save"),
Core::Icons::SAVEFILE.icon()));
+ d->ui_toolbar.toolButtonOutline->setIcon(Core::Icons::BOUNDING_RECT.icon());
d->ui_toolbar.toolButtonZoomIn->setIcon(Core::Icons::PLUS.icon());
d->ui_toolbar.toolButtonZoomOut->setIcon(Core::Icons::MINUS.icon());
- d->ui_toolbar.toolButtonFitToScreen->setIcon(Core::Icons::ZOOM.icon());
+ d->ui_toolbar.toolButtonFitToScreen->setIcon(Core::Icons::ZOOM_TOOLBAR.icon());
// icons update - try to use system theme
updateButtonIconByTheme(d->ui_toolbar.toolButtonZoomIn, QLatin1String("zoom-in"));
updateButtonIconByTheme(d->ui_toolbar.toolButtonZoomOut, QLatin1String("zoom-out"));
@@ -253,10 +254,10 @@ void ImageViewer::updatePauseAction()
if (isMovie) {
if (d->file->isPaused()) {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Play Animation"));
- d->ui_toolbar.toolButtonPlayPause->setIcon(QPixmap(QLatin1String(":/imageviewer/images/play-small.png")));
+ d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::RUN_SMALL.pixmap());
} else {
d->ui_toolbar.toolButtonPlayPause->setToolTipBase(tr("Pause Animation"));
- d->ui_toolbar.toolButtonPlayPause->setIcon(QPixmap(QLatin1String(":/imageviewer/images/pause-small.png")));
+ d->ui_toolbar.toolButtonPlayPause->setIcon(Core::Icons::INTERRUPT_SMALL.pixmap());
}
}
}
diff --git a/src/plugins/imageviewer/imageviewer.qrc b/src/plugins/imageviewer/imageviewer.qrc
index e39039ade1..60678a9ced 100644
--- a/src/plugins/imageviewer/imageviewer.qrc
+++ b/src/plugins/imageviewer/imageviewer.qrc
@@ -1,10 +1,7 @@
<RCC>
<qresource prefix="/imageviewer">
- <file>images/outline.png</file>
<file>images/originalsize.png</file>
<file>images/background.png</file>
- <file>images/pause-small.png</file>
- <file>images/play-small.png</file>
<file>ImageViewer.mimetypes.xml</file>
</qresource>
</RCC>
diff --git a/src/plugins/imageviewer/imageviewerplugin.cpp b/src/plugins/imageviewer/imageviewerplugin.cpp
index 12d0f86524..2193c5c43c 100644
--- a/src/plugins/imageviewer/imageviewerplugin.cpp
+++ b/src/plugins/imageviewer/imageviewerplugin.cpp
@@ -86,7 +86,7 @@ void ImageViewerPlugin::extensionsInitialized()
iv->resetToOriginalSize();
});
- a = registerNewAction(Constants::ACTION_FIT_TO_SCREEN, tr("Fit To Screen"),
+ a = registerNewAction(Constants::ACTION_FIT_TO_SCREEN, tr("Fit to Screen"),
QKeySequence(tr("Ctrl+=")));
connect(a, &QAction::triggered, this, [this]() {
if (ImageViewer *iv = currentImageViewer())
diff --git a/src/plugins/imageviewer/imageviewertoolbar.ui b/src/plugins/imageviewer/imageviewertoolbar.ui
index 0c86a3e585..4dec6dc66e 100644
--- a/src/plugins/imageviewer/imageviewertoolbar.ui
+++ b/src/plugins/imageviewer/imageviewertoolbar.ui
@@ -46,10 +46,6 @@
<property name="toolTipBase">
<string>Show Outline</string>
</property>
- <property name="icon">
- <iconset resource="imageviewer.qrc">
- <normaloff>:/imageviewer/images/outline.png</normaloff>:/imageviewer/images/outline.png</iconset>
- </property>
<property name="checkable">
<bool>true</bool>
</property>
diff --git a/src/plugins/ios/iosruncontrol.cpp b/src/plugins/ios/iosruncontrol.cpp
index 47e019a6e6..237790fff3 100644
--- a/src/plugins/ios/iosruncontrol.cpp
+++ b/src/plugins/ios/iosruncontrol.cpp
@@ -28,8 +28,9 @@
#include "iosrunconfiguration.h"
#include "iosrunner.h"
+#include <coreplugin/coreicons.h>
+
#include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/projectexplorericons.h>
using namespace ProjectExplorer;
@@ -41,7 +42,7 @@ IosRunControl::IosRunControl(IosRunConfiguration *rc)
, m_runner(new IosRunner(this, rc, false, QmlDebug::NoQmlDebugServices))
, m_running(false)
{
- setIcon(Icons::RUN_SMALL);
+ setIcon(Core::Icons::RUN_SMALL);
}
IosRunControl::~IosRunControl()
diff --git a/src/plugins/modeleditor/extpropertiesmview.cpp b/src/plugins/modeleditor/extpropertiesmview.cpp
index 05acb4435b..529f251dca 100644
--- a/src/plugins/modeleditor/extpropertiesmview.cpp
+++ b/src/plugins/modeleditor/extpropertiesmview.cpp
@@ -65,7 +65,7 @@ void ExtPropertiesMView::visitMPackage(const qmt::MPackage *package)
return edit->text().isEmpty() || m_configPath->defaultValidationFunction()(edit, errorMessage);
});
m_configPath->setInitialBrowsePathBackup(QFileInfo(project->fileName()).absolutePath());
- addRow(tr("Config Path:"), m_configPath, "configpath");
+ addRow(tr("Config path:"), m_configPath, "configpath");
connect(m_configPath, &Utils::PathChooser::pathChanged,
this, &ExtPropertiesMView::onConfigPathChanged);
}
diff --git a/src/plugins/modeleditor/modeldocument.cpp b/src/plugins/modeleditor/modeldocument.cpp
index 019084eadc..e75ff0760e 100644
--- a/src/plugins/modeleditor/modeldocument.cpp
+++ b/src/plugins/modeleditor/modeldocument.cpp
@@ -93,7 +93,9 @@ bool ModelDocument::save(QString *errorString, const QString &name, bool autoSav
return false;
}
- if (!autoSave) {
+ if (autoSave) {
+ d->documentController->projectController()->setModified();
+ } else {
setFilePath(Utils::FileName::fromString(d->documentController->projectController()->project()->fileName()));
emit changed();
}
@@ -101,6 +103,11 @@ bool ModelDocument::save(QString *errorString, const QString &name, bool autoSav
return true;
}
+bool ModelDocument::shouldAutoSave() const
+{
+ return isModified();
+}
+
bool ModelDocument::isModified() const
{
return d->documentController ? d->documentController->projectController()->isModified() : false;
diff --git a/src/plugins/modeleditor/modeldocument.h b/src/plugins/modeleditor/modeldocument.h
index 5998065157..f83085866a 100644
--- a/src/plugins/modeleditor/modeldocument.h
+++ b/src/plugins/modeleditor/modeldocument.h
@@ -51,6 +51,7 @@ public:
OpenResult open(QString *errorString, const QString &fileName,
const QString &realFileName) override;
bool save(QString *errorString, const QString &fileName, bool autoSave) override;
+ bool shouldAutoSave() const override;
bool isModified() const override;
bool isSaveAsAllowed() const override;
bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override;
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
index 4084290281..8346697f6c 100644
--- a/src/plugins/projectexplorer/appoutputpane.cpp
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
@@ -158,7 +158,7 @@ AppOutputPane::AppOutputPane() :
setObjectName(QLatin1String("AppOutputPane")); // Used in valgrind engine
// Rerun
- m_reRunButton->setIcon(Icons::RUN_SMALL.icon());
+ m_reRunButton->setIcon(Core::Icons::RUN_SMALL.icon());
m_reRunButton->setToolTip(tr("Re-run this run-configuration"));
m_reRunButton->setAutoRaise(true);
m_reRunButton->setEnabled(false);
@@ -166,7 +166,7 @@ AppOutputPane::AppOutputPane() :
this, &AppOutputPane::reRunRunControl);
// Stop
- m_stopAction->setIcon(Icons::STOP_SMALL.icon());
+ m_stopAction->setIcon(Core::Icons::STOP_SMALL.icon());
m_stopAction->setToolTip(tr("Stop"));
m_stopAction->setEnabled(false);
@@ -644,7 +644,7 @@ void AppOutputPane::enableButtons(const RunControl *rc /* = 0 */, bool isRunning
m_zoomOutButton->setEnabled(true);
} else {
m_reRunButton->setEnabled(false);
- m_reRunButton->setIcon(Icons::RUN_SMALL.icon());
+ m_reRunButton->setIcon(Core::Icons::RUN_SMALL.icon());
m_attachButton->setEnabled(false);
m_attachButton->setToolTip(msgAttachDebuggerTooltip());
m_stopAction->setEnabled(false);
diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp
index 2a69b1563d..71ecf037d5 100644
--- a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp
+++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp
@@ -32,6 +32,8 @@
#include <projectexplorer/projectexplorerconstants.h>
#include <ssh/sshconnection.h>
+
+#include <utils/environment.h>
#include <utils/portlist.h>
#include <QCoreApplication>
@@ -116,6 +118,22 @@ DeviceProcessSignalOperation::Ptr DesktopDevice::signalOperation() const
return DeviceProcessSignalOperation::Ptr(new DesktopProcessSignalOperation());
}
+class DesktopDeviceEnvironmentFetcher : public DeviceEnvironmentFetcher
+{
+public:
+ DesktopDeviceEnvironmentFetcher() {}
+
+ void start() override
+ {
+ emit finished(Utils::Environment::systemEnvironment(), true);
+ }
+};
+
+DeviceEnvironmentFetcher::Ptr DesktopDevice::environmentFetcher() const
+{
+ return DeviceEnvironmentFetcher::Ptr(new DesktopDeviceEnvironmentFetcher());
+}
+
QString DesktopDevice::qmlProfilerHost() const
{
return QLatin1String("localhost");
diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.h b/src/plugins/projectexplorer/devicesupport/desktopdevice.h
index da6c1fada9..b99d83457d 100644
--- a/src/plugins/projectexplorer/devicesupport/desktopdevice.h
+++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.h
@@ -51,6 +51,7 @@ public:
bool canCreateProcess() const override { return true; }
DeviceProcess *createProcess(QObject *parent) const override;
DeviceProcessSignalOperation::Ptr signalOperation() const override;
+ DeviceEnvironmentFetcher::Ptr environmentFetcher() const override;
QString qmlProfilerHost() const override;
IDevice::Ptr clone() const override;
diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp
index 2f7a19ec9b..b48a6b51ec 100644
--- a/src/plugins/projectexplorer/devicesupport/idevice.cpp
+++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp
@@ -277,6 +277,11 @@ DeviceProcess *IDevice::createProcess(QObject * /* parent */) const
return 0;
}
+DeviceEnvironmentFetcher::Ptr IDevice::environmentFetcher() const
+{
+ return DeviceEnvironmentFetcher::Ptr();
+}
+
IDevice::DeviceState IDevice::deviceState() const
{
return d->deviceState;
@@ -457,4 +462,8 @@ DeviceProcessSignalOperation::DeviceProcessSignalOperation()
{
}
+DeviceEnvironmentFetcher::DeviceEnvironmentFetcher()
+{
+}
+
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h
index d1484e25ff..3ab1ff03cd 100644
--- a/src/plugins/projectexplorer/devicesupport/idevice.h
+++ b/src/plugins/projectexplorer/devicesupport/idevice.h
@@ -40,7 +40,11 @@ class QWidget;
QT_END_NAMESPACE
namespace QSsh { class SshConnectionParameters; }
-namespace Utils { class PortList; }
+
+namespace Utils {
+class Environment;
+class PortList;
+} // Utils
namespace ProjectExplorer {
class DeviceProcess;
@@ -77,6 +81,21 @@ protected:
QString m_errorMessage;
};
+class PROJECTEXPLORER_EXPORT DeviceEnvironmentFetcher : public QObject
+{
+ Q_OBJECT
+public:
+ typedef QSharedPointer<DeviceEnvironmentFetcher> Ptr;
+
+ virtual void start() = 0;
+
+signals:
+ void finished(const Utils::Environment &env, bool success);
+
+protected:
+ explicit DeviceEnvironmentFetcher();
+};
+
class PROJECTEXPLORER_EXPORT PortsGatheringMethod
{
public:
@@ -138,6 +157,7 @@ public:
virtual bool canCreateProcess() const { return false; }
virtual DeviceProcess *createProcess(QObject *parent) const;
virtual DeviceProcessSignalOperation::Ptr signalOperation() const = 0;
+ virtual DeviceEnvironmentFetcher::Ptr environmentFetcher() const;
enum DeviceState { DeviceReadyToUse, DeviceConnected, DeviceDisconnected, DeviceStateUnknown };
DeviceState deviceState() const;
diff --git a/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp b/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp
index c347dd79e4..686d4ce712 100644
--- a/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp
+++ b/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp
@@ -80,7 +80,11 @@ SshDeviceProcess::~SshDeviceProcess()
void SshDeviceProcess::start(const Runnable &runnable)
{
QTC_ASSERT(d->state == SshDeviceProcessPrivate::Inactive, return);
- QTC_ASSERT(runnable.is<StandardRunnable>(), return);
+ if (!runnable.is<StandardRunnable>()) {
+ d->errorMessage = tr("Internal error");
+ error(QProcess::FailedToStart);
+ return;
+ }
d->setState(SshDeviceProcessPrivate::Connecting);
d->errorMessage.clear();
diff --git a/src/plugins/projectexplorer/environmentaspect.h b/src/plugins/projectexplorer/environmentaspect.h
index 9fb946ef4b..20c59f84c1 100644
--- a/src/plugins/projectexplorer/environmentaspect.h
+++ b/src/plugins/projectexplorer/environmentaspect.h
@@ -53,8 +53,10 @@ public:
QList<Utils::EnvironmentItem> userEnvironmentChanges() const { return m_changes; }
void setUserEnvironmentChanges(const QList<Utils::EnvironmentItem> &diff);
+ // The environment the user chose as base for his modifications.
virtual Utils::Environment baseEnvironment() const = 0;
- virtual Utils::Environment environment() const;
+ // The environment including the user's modifications.
+ Utils::Environment environment() const;
signals:
void baseEnvironmentChanged();
diff --git a/src/plugins/projectexplorer/extracompiler.cpp b/src/plugins/projectexplorer/extracompiler.cpp
index 82c6a0b2f9..605e24252e 100644
--- a/src/plugins/projectexplorer/extracompiler.cpp
+++ b/src/plugins/projectexplorer/extracompiler.cpp
@@ -375,6 +375,14 @@ ProcessExtraCompiler::ProcessExtraCompiler(const Project *project, const Utils::
ExtraCompiler(project, source, targets, parent)
{ }
+ProcessExtraCompiler::~ProcessExtraCompiler()
+{
+ if (!m_watcher)
+ return;
+ m_watcher->cancel();
+ m_watcher->waitForFinished();
+}
+
void ProcessExtraCompiler::run(const QByteArray &sourceContents)
{
ContentProvider contents = [this, sourceContents]() { return sourceContents; };
@@ -429,17 +437,18 @@ void ProcessExtraCompiler::runImpl(const ContentProvider &provider)
buildEnvironment()));
}
-FileNameToContentsHash ProcessExtraCompiler::runInThread(
+void ProcessExtraCompiler::runInThread(
+ QFutureInterface<FileNameToContentsHash> &futureInterface,
const Utils::FileName &cmd, const Utils::FileName &workDir,
const QStringList &args, const ContentProvider &provider,
const Utils::Environment &env)
{
if (cmd.isEmpty() || !cmd.toFileInfo().isExecutable())
- return FileNameToContentsHash();
+ return;
const QByteArray sourceContents = provider();
if (sourceContents.isNull() || !prepareToRun(sourceContents))
- return FileNameToContentsHash();
+ return;
QProcess process;
@@ -449,25 +458,38 @@ FileNameToContentsHash ProcessExtraCompiler::runInThread(
process.start(cmd.toString(), args, QIODevice::ReadWrite);
if (!process.waitForStarted()) {
handleProcessError(&process);
- return FileNameToContentsHash();
+ return;
+ }
+ bool isCanceled = futureInterface.isCanceled();
+ if (!isCanceled) {
+ handleProcessStarted(&process, sourceContents);
+ forever {
+ bool done = process.waitForFinished(200);
+ isCanceled = futureInterface.isCanceled();
+ if (done || isCanceled)
+ break;
+ }
}
- handleProcessStarted(&process, sourceContents);
- process.waitForFinished();
- if (process.state() == QProcess::Running) {
+ isCanceled |= process.state() == QProcess::Running;
+ if (isCanceled) {
process.kill();
process.waitForFinished(3000);
+ return;
}
- return handleProcessFinished(&process);
+ futureInterface.reportResult(handleProcessFinished(&process));
}
void ProcessExtraCompiler::cleanUp()
{
QTC_ASSERT(m_watcher, return);
- const FileNameToContentsHash data = m_watcher->future().result();
+ auto future = m_watcher->future();
delete m_watcher;
m_watcher = nullptr;
+ if (!future.resultCount())
+ return;
+ const FileNameToContentsHash data = future.result();
if (data.isEmpty())
return; // There was some kind of error...
diff --git a/src/plugins/projectexplorer/extracompiler.h b/src/plugins/projectexplorer/extracompiler.h
index 024c9b8758..21efd6b29f 100644
--- a/src/plugins/projectexplorer/extracompiler.h
+++ b/src/plugins/projectexplorer/extracompiler.h
@@ -101,6 +101,7 @@ public:
ProcessExtraCompiler(const Project *project, const Utils::FileName &source,
const Utils::FileNameList &targets, QObject *parent = nullptr);
+ ~ProcessExtraCompiler();
protected:
// This will run a process in a thread, if
@@ -128,9 +129,10 @@ protected:
private:
using ContentProvider = std::function<QByteArray()>;
void runImpl(const ContentProvider &sourceContents);
- FileNameToContentsHash runInThread(const Utils::FileName &cmd, const Utils::FileName &workDir,
- const QStringList &args, const ContentProvider &provider,
- const Utils::Environment &env);
+ void runInThread(QFutureInterface<FileNameToContentsHash> &futureInterface,
+ const Utils::FileName &cmd, const Utils::FileName &workDir,
+ const QStringList &args, const ContentProvider &provider,
+ const Utils::Environment &env);
void cleanUp();
QFutureWatcher<FileNameToContentsHash> *m_watcher = nullptr;
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 6853c9e41e..dff1c85ecb 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -326,6 +326,8 @@ Abi GccToolChain::targetAbi() const
QString GccToolChain::originalTargetTriple() const
{
+ if (m_originalTargetTriple.isEmpty())
+ m_originalTargetTriple = detectSupportedAbis().originalTargetTriple;
return m_originalTargetTriple;
}
diff --git a/src/plugins/projectexplorer/images/clean.png b/src/plugins/projectexplorer/images/clean.png
deleted file mode 100644
index ab5e07ef79..0000000000
--- a/src/plugins/projectexplorer/images/clean.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/clean_small.png b/src/plugins/projectexplorer/images/clean_small.png
deleted file mode 100644
index 6a6d16718c..0000000000
--- a/src/plugins/projectexplorer/images/clean_small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/continue_1_small.png b/src/plugins/projectexplorer/images/continue_1_small.png
new file mode 100644
index 0000000000..1240171792
--- /dev/null
+++ b/src/plugins/projectexplorer/images/continue_1_small.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/continue_1_small@2x.png b/src/plugins/projectexplorer/images/continue_1_small@2x.png
new file mode 100644
index 0000000000..f683251b92
--- /dev/null
+++ b/src/plugins/projectexplorer/images/continue_1_small@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/continue_2_small.png b/src/plugins/projectexplorer/images/continue_2_small.png
new file mode 100644
index 0000000000..876cb829bf
--- /dev/null
+++ b/src/plugins/projectexplorer/images/continue_2_small.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/continue_2_small@2x.png b/src/plugins/projectexplorer/images/continue_2_small@2x.png
new file mode 100644
index 0000000000..5794fa039e
--- /dev/null
+++ b/src/plugins/projectexplorer/images/continue_2_small@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/debugger_beetle_mask.png b/src/plugins/projectexplorer/images/debugger_beetle_mask.png
index 359b6cc425..b041005b3a 100644
--- a/src/plugins/projectexplorer/images/debugger_beetle_mask.png
+++ b/src/plugins/projectexplorer/images/debugger_beetle_mask.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/debugger_beetle_mask@2x.png b/src/plugins/projectexplorer/images/debugger_beetle_mask@2x.png
index 24a5f3b7bc..f4f7098ee3 100644
--- a/src/plugins/projectexplorer/images/debugger_beetle_mask@2x.png
+++ b/src/plugins/projectexplorer/images/debugger_beetle_mask@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/debugger_overlay_small.png b/src/plugins/projectexplorer/images/debugger_overlay_small.png
index deb68239db..809bf34732 100644
--- a/src/plugins/projectexplorer/images/debugger_overlay_small.png
+++ b/src/plugins/projectexplorer/images/debugger_overlay_small.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/debugger_overlay_small@2x.png b/src/plugins/projectexplorer/images/debugger_overlay_small@2x.png
index fe9107f75f..c24c861cbb 100644
--- a/src/plugins/projectexplorer/images/debugger_overlay_small@2x.png
+++ b/src/plugins/projectexplorer/images/debugger_overlay_small@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/debugger_run_mask.png b/src/plugins/projectexplorer/images/debugger_run_mask.png
deleted file mode 100644
index 0e3ab010d0..0000000000
--- a/src/plugins/projectexplorer/images/debugger_run_mask.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/debugger_run_mask@2x.png b/src/plugins/projectexplorer/images/debugger_run_mask@2x.png
deleted file mode 100644
index 978d099a9c..0000000000
--- a/src/plugins/projectexplorer/images/debugger_run_mask@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/rebuild.png b/src/plugins/projectexplorer/images/rebuild.png
deleted file mode 100644
index 2888e90539..0000000000
--- a/src/plugins/projectexplorer/images/rebuild.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/rebuild_small.png b/src/plugins/projectexplorer/images/rebuild_small.png
deleted file mode 100644
index 85d3bcd681..0000000000
--- a/src/plugins/projectexplorer/images/rebuild_small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/rebuildhammerhandles.png b/src/plugins/projectexplorer/images/rebuildhammerhandles.png
new file mode 100644
index 0000000000..d0c117da13
--- /dev/null
+++ b/src/plugins/projectexplorer/images/rebuildhammerhandles.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/rebuildhammerhandles@2x.png b/src/plugins/projectexplorer/images/rebuildhammerhandles@2x.png
new file mode 100644
index 0000000000..9ea2b3a871
--- /dev/null
+++ b/src/plugins/projectexplorer/images/rebuildhammerhandles@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/rebuildhammerheads.png b/src/plugins/projectexplorer/images/rebuildhammerheads.png
new file mode 100644
index 0000000000..24de5314c9
--- /dev/null
+++ b/src/plugins/projectexplorer/images/rebuildhammerheads.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/rebuildhammerheads@2x.png b/src/plugins/projectexplorer/images/rebuildhammerheads@2x.png
new file mode 100644
index 0000000000..50f8757d19
--- /dev/null
+++ b/src/plugins/projectexplorer/images/rebuildhammerheads@2x.png
Binary files differ
diff --git a/src/plugins/projectexplorer/images/run_overlay_small.png b/src/plugins/projectexplorer/images/run_overlay_small.png
deleted file mode 100644
index db22edd2fb..0000000000
--- a/src/plugins/projectexplorer/images/run_overlay_small.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/images/run_overlay_small@2x.png b/src/plugins/projectexplorer/images/run_overlay_small@2x.png
deleted file mode 100644
index a5ec8416b6..0000000000
--- a/src/plugins/projectexplorer/images/run_overlay_small@2x.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/projectexplorer/localapplicationruncontrol.cpp b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
index c0ea09d341..2e99c51b18 100644
--- a/src/plugins/projectexplorer/localapplicationruncontrol.cpp
+++ b/src/plugins/projectexplorer/localapplicationruncontrol.cpp
@@ -28,10 +28,11 @@
#include "environmentaspect.h"
#include <projectexplorer/projectexplorerconstants.h>
-#include <projectexplorer/projectexplorericons.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/target.h>
+#include <coreplugin/coreicons.h>
+
#include <utils/qtcassert.h>
#include <QDir>
@@ -62,7 +63,7 @@ LocalApplicationRunControl::LocalApplicationRunControl(RunConfiguration *rc, Cor
: RunControl(rc, mode)
{
setRunnable(rc->runnable());
- setIcon(Icons::RUN_SMALL);
+ setIcon(Core::Icons::RUN_SMALL);
connect(&m_applicationLauncher, &ApplicationLauncher::appendMessage,
this, static_cast<void(RunControl::*)(const QString &, Utils::OutputFormat)>(&RunControl::appendMessage));
connect(&m_applicationLauncher, &ApplicationLauncher::processStarted,
@@ -119,7 +120,7 @@ void LocalApplicationRunControl::processExited(int exitCode, QProcess::ExitStatu
QString msg;
QString exe = runnable().as<StandardRunnable>().executable;
if (status == QProcess::CrashExit)
- msg = tr("%1 crashed").arg(QDir::toNativeSeparators(exe));
+ msg = tr("%1 crashed.").arg(QDir::toNativeSeparators(exe));
else
msg = tr("%1 exited with code %2").arg(QDir::toNativeSeparators(exe)).arg(exitCode);
appendMessage(msg + QLatin1Char('\n'), Utils::NormalMessageFormat);
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 930060f47c..d20c324c39 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -684,6 +684,11 @@ bool Project::needsSpecialDeployment() const
return false;
}
+bool Project::knowsAllBuildExecutables() const
+{
+ return true;
+}
+
void Project::setup(QList<const BuildInfo *> infoList)
{
QList<Target *> toRegister;
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index aa28e8ed14..7fd785279f 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -139,6 +139,9 @@ public:
void setPreferredKitMatcher(const KitMatcher &matcher);
virtual bool needsSpecialDeployment() const;
+ // The build system is able to report all executables that can be built, independent
+ // of configuration.
+ virtual bool knowsAllBuildExecutables() const;
void setup(QList<const BuildInfo *> infoList);
Utils::MacroExpander *macroExpander() const;
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 5f016e71d8..e68a06ed96 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -105,6 +105,7 @@
#include <coreplugin/idocumentfactory.h>
#include <coreplugin/idocument.h>
#include <coreplugin/coreconstants.h>
+#include <coreplugin/coreicons.h>
#include <coreplugin/documentmanager.h>
#include <coreplugin/imode.h>
#include <coreplugin/modemanager.h>
@@ -700,7 +701,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
ActionContainer *runMenu = ActionManager::createMenu(Constants::RUNMENUCONTEXTMENU);
runMenu->setOnAllDisabledBehavior(ActionContainer::Hide);
QIcon runIcon = Utils::Icon::sideBarIcon(Icons::RUN, Icons::RUN_FLAT);
- runIcon.addPixmap(Icons::RUN_SMALL.pixmap());
+ runIcon.addPixmap(Core::Icons::RUN_SMALL.pixmap());
runMenu->menu()->setIcon(runIcon);
runMenu->menu()->setTitle(tr("Run"));
msubProjectContextMenu->addMenu(runMenu, ProjectExplorer::Constants::G_PROJECT_RUN);
@@ -849,17 +850,13 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
msessionContextMenu->addAction(cmd, Constants::G_SESSION_BUILD);
// rebuild session action
- QIcon rebuildIcon = Icons::REBUILD.icon();
- rebuildIcon.addPixmap(Icons::REBUILD_SMALL.pixmap());
- dd->m_rebuildSessionAction = new QAction(rebuildIcon, tr("Rebuild All"), this);
+ dd->m_rebuildSessionAction = new QAction(Icons::REBUILD.icon(), tr("Rebuild All"), this);
cmd = ActionManager::registerAction(dd->m_rebuildSessionAction, Constants::REBUILDSESSION);
mbuild->addAction(cmd, Constants::G_BUILD_REBUILD);
msessionContextMenu->addAction(cmd, Constants::G_SESSION_REBUILD);
// clean session
- QIcon cleanIcon = Icons::CLEAN.icon();
- cleanIcon.addPixmap(Icons::CLEAN_SMALL.pixmap());
- dd->m_cleanSessionAction = new QAction(cleanIcon, tr("Clean All"), this);
+ dd->m_cleanSessionAction = new QAction(Icons::CLEAN.icon(), tr("Clean All"), this);
cmd = ActionManager::registerAction(dd->m_cleanSessionAction, Constants::CLEANSESSION);
mbuild->addAction(cmd, Constants::G_BUILD_CLEAN);
msessionContextMenu->addAction(cmd, Constants::G_SESSION_REBUILD);
@@ -902,7 +899,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
mbuild->addAction(cmd, Constants::G_BUILD_CLEAN);
// cancel build action
- dd->m_cancelBuildAction = new QAction(Icons::STOP_SMALL.icon(), tr("Cancel Build"), this);
+ dd->m_cancelBuildAction = new QAction(Core::Icons::STOP_SMALL.icon(), tr("Cancel Build"), this);
cmd = ActionManager::registerAction(dd->m_cancelBuildAction, Constants::CANCELBUILD);
mbuild->addAction(cmd, Constants::G_BUILD_CANCEL);
diff --git a/src/plugins/projectexplorer/projectexplorer.qrc b/src/plugins/projectexplorer/projectexplorer.qrc
index e8d0044e3f..6d9310c46f 100644
--- a/src/plugins/projectexplorer/projectexplorer.qrc
+++ b/src/plugins/projectexplorer/projectexplorer.qrc
@@ -2,32 +2,26 @@
<qresource prefix="/projectexplorer">
<file>images/build_small.png</file>
<file>images/category_buildrun.png</file>
- <file>images/clean.png</file>
- <file>images/clean_small.png</file>
<file>images/closetab.png</file>
<file>images/debugger_start.png</file>
<file>images/debugger_start@2x.png</file>
<file>images/debugger_beetle_mask.png</file>
<file>images/debugger_beetle_mask@2x.png</file>
- <file>images/debugger_run_mask.png</file>
- <file>images/debugger_run_mask@2x.png</file>
<file>images/mode_project.png</file>
<file>images/mode_project@2x.png</file>
<file>images/mode_project_mask.png</file>
<file>images/mode_project_mask@2x.png</file>
<file>images/projectexplorer.png</file>
- <file>images/rebuild.png</file>
- <file>images/rebuild_small.png</file>
+ <file>images/rebuildhammerhandles.png</file>
+ <file>images/rebuildhammerhandles@2x.png</file>
+ <file>images/rebuildhammerheads.png</file>
+ <file>images/rebuildhammerheads@2x.png</file>
<file>images/run.png</file>
<file>images/run@2x.png</file>
<file>images/run_mask.png</file>
<file>images/run_mask@2x.png</file>
- <file>images/run_small.png</file>
- <file>images/run_small@2x.png</file>
<file>images/debugger_overlay_small.png</file>
<file>images/debugger_overlay_small@2x.png</file>
- <file>images/run_overlay_small.png</file>
- <file>images/run_overlay_small@2x.png</file>
<file>images/session.png</file>
<file>images/targetrunselected.png</file>
<file>images/targetrunselected@2x.png</file>
@@ -54,10 +48,10 @@
<file>images/targetpanel_bottom.png</file>
<file>images/targetpanel_gradient.png</file>
<file>images/window.png</file>
- <file>images/stop_small.png</file>
- <file>images/stop_small@2x.png</file>
- <file>images/interrupt_small.png</file>
- <file>images/interrupt_small@2x.png</file>
+ <file>images/continue_1_small.png</file>
+ <file>images/continue_1_small@2x.png</file>
+ <file>images/continue_2_small.png</file>
+ <file>images/continue_2_small@2x.png</file>
<file>images/buildstepdisable.png</file>
<file>images/buildstepdisable@2x.png</file>
<file>images/buildstepmovedown.png</file>
diff --git a/src/plugins/projectexplorer/projectexplorericons.h b/src/plugins/projectexplorer/projectexplorericons.h
index 05a2ce3c36..384be59100 100644
--- a/src/plugins/projectexplorer/projectexplorericons.h
+++ b/src/plugins/projectexplorer/projectexplorericons.h
@@ -37,14 +37,11 @@ const Utils::Icon BUILD_FLAT({
{QLatin1String(":/projectexplorer/images/build_hammerhead_mask.png"), Utils::Theme::IconsBuildHammerHeadColor}});
const Utils::Icon BUILD_SMALL(
QLatin1String(":/projectexplorer/images/build_small.png"));
-const Utils::Icon CLEAN(
- QLatin1String(":/projectexplorer/images/clean.png"));
-const Utils::Icon CLEAN_SMALL(
- QLatin1String(":/projectexplorer/images/clean_small.png"));
-const Utils::Icon REBUILD(
- QLatin1String(":/projectexplorer/images/rebuild.png"));
-const Utils::Icon REBUILD_SMALL(
- QLatin1String(":/projectexplorer/images/rebuild_small.png"));
+const Utils::Icon CLEAN({
+ {QLatin1String(":/core/images/clean_pane_small.png"), Utils::Theme::PanelTextColorMid}}, Utils::Icon::Tint);
+const Utils::Icon REBUILD({
+ {QLatin1String(":/projectexplorer/images/rebuildhammerhandles.png"), Utils::Theme::IconsBuildHammerHandleColor},
+ {QLatin1String(":/projectexplorer/images/rebuildhammerheads.png"), Utils::Theme::IconsBuildHammerHeadColor}}, Utils::Icon::Tint);
const Utils::Icon RUN(
QLatin1String(":/projectexplorer/images/run.png"));
const Utils::Icon RUN_FLAT({
@@ -55,11 +52,11 @@ const Utils::Icon DEBUG_START(
QLatin1String(":/projectexplorer/images/debugger_start.png"));
const Utils::Icon DEBUG_START_FLAT({
- {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/projectexplorer/images/debugger_run_mask.png"), Utils::Theme::IconsRunColor}});
+ {QLatin1String(":/projectexplorer/images/run_mask.png"), Utils::Theme::IconsRunColor},
+ {QLatin1String(":/projectexplorer/images/debugger_beetle_mask.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon DEBUG_START_SMALL({
- {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor},
- {QLatin1String(":/projectexplorer/images/run_overlay_small.png"), Utils::Theme::IconsRunColor}});
+ {QLatin1String(":/core/images/run_small.png"), Utils::Theme::IconsRunColor},
+ {QLatin1String(":/projectexplorer/images/debugger_overlay_small.png"), Utils::Theme::IconsDebugColor}});
const Utils::Icon BUILDSTEP_MOVEUP({
{QLatin1String(":/projectexplorer/images/buildstepmoveup.png"), Utils::Theme::PanelTextColorDark}}, Utils::Icon::Tint);
@@ -75,18 +72,12 @@ const Utils::Icon DESKTOP_DEVICE({
const Utils::Icon DESKTOP_DEVICE_SMALL({
{QLatin1String(":/projectexplorer/images/desktopdevicesmall.png"), Utils::Theme::PanelTextColorDark}}, Utils::Icon::Tint);
-const Utils::Icon RUN_SMALL({
- {QLatin1String(":/projectexplorer/images/run_small.png"), Utils::Theme::IconsRunColor}});
-const Utils::Icon STOP_SMALL({
- {QLatin1String(":/projectexplorer/images/stop_small.png"), Utils::Theme::IconsStopColor}});
const Utils::Icon MODE_PROJECT_CLASSIC(
QLatin1String(":/projectexplorer/images/mode_project.png"));
const Utils::Icon MODE_PROJECT_FLAT({
{QLatin1String(":/projectexplorer/images/mode_project_mask.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon MODE_PROJECT_FLAT_ACTIVE({
{QLatin1String(":/projectexplorer/images/mode_project_mask.png"), Utils::Theme::IconsModeProjetcsActiveColor}});
-const Utils::Icon INTERRUPT_SMALL({
- {QLatin1String(":/projectexplorer/images/interrupt_small.png"), Utils::Theme::IconsInterruptColor}});
} // namespace Icons
} // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/selectablefilesmodel.cpp b/src/plugins/projectexplorer/selectablefilesmodel.cpp
index b88f2e72f0..e3f3abe7b5 100644
--- a/src/plugins/projectexplorer/selectablefilesmodel.cpp
+++ b/src/plugins/projectexplorer/selectablefilesmodel.cpp
@@ -58,15 +58,12 @@ SelectableFilesModel::SelectableFilesModel(QObject *parent) : QAbstractItemModel
connect(this, &SelectableFilesModel::modelReset, this, [this] { emit checkedFilesChanged(); });
m_root = new Tree;
- m_root->parent = 0;
}
void SelectableFilesModel::setInitialMarkedFiles(const Utils::FileNameList &files)
{
m_files = files.toSet();
- m_outOfBaseDirFiles
- = Utils::filtered(m_files, [this](const Utils::FileName &fn) { return !fn.isChildOf(m_baseDir); });
- m_allFiles = false;
+ m_allFiles = files.isEmpty();
}
void SelectableFilesModel::startParsing(const Utils::FileName &baseDir)
@@ -78,7 +75,6 @@ void SelectableFilesModel::startParsing(const Utils::FileName &baseDir)
// Build a tree in a future
m_rootForFuture = new Tree;
m_rootForFuture->name = baseDir.toUserOutput();
- m_rootForFuture->parent = 0;
m_rootForFuture->fullPath = baseDir;
m_rootForFuture->isDir = true;
@@ -96,7 +92,10 @@ void SelectableFilesModel::buildTreeFinished()
beginResetModel();
delete m_root;
m_root = m_rootForFuture;
- m_rootForFuture = 0;
+ m_rootForFuture = nullptr;
+ m_outOfBaseDirFiles
+ = Utils::filtered(m_files, [this](const Utils::FileName &fn) { return !fn.isChildOf(m_baseDir); });
+
endResetModel();
emit parsingFinished();
}
@@ -158,7 +157,7 @@ void SelectableFilesModel::buildTree(const Utils::FileName &baseDir, Tree *tree,
Tree *t = new Tree;
t->parent = tree;
t->name = fileInfo.fileName();
- t->checked = m_allFiles || m_files.contains(fn) ? Qt::Checked : Qt::Unchecked;
+ t->checked = (m_allFiles || m_files.contains(fn)) ? Qt::Checked : Qt::Unchecked;
t->fullPath = fn;
t->isDir = false;
allChecked &= t->checked == Qt::Checked;
@@ -562,7 +561,7 @@ SelectableFilesWidget::SelectableFilesWidget(QWidget *parent) :
connect(m_baseDirChooser, &Utils::PathChooser::validChanged,
this, &SelectableFilesWidget::baseDirectoryChanged);
connect(m_startParsingButton, &QAbstractButton::clicked,
- this, &SelectableFilesWidget::startParsing);
+ this, [this]() { startParsing(m_baseDirChooser->fileName()); });
m_showFilesFilterLabel->setText(tr("Show files matching:"));
m_showFilesFilterEdit->setText(showFilter);
@@ -627,7 +626,7 @@ bool SelectableFilesWidget::hasFilesSelected() const
void SelectableFilesWidget::resetModel(const Utils::FileName &path, const Utils::FileNameList &files)
{
- m_view->setModel(0);
+ m_view->setModel(nullptr);
delete m_model;
m_model = new SelectableFilesModel(this);
@@ -643,7 +642,7 @@ void SelectableFilesWidget::resetModel(const Utils::FileName &path, const Utils:
m_baseDirChooser->setFileName(path);
m_view->setModel(m_model);
- startParsing();
+ startParsing(path);
}
void SelectableFilesWidget::cancelParsing()
@@ -677,13 +676,13 @@ void SelectableFilesWidget::baseDirectoryChanged(bool validState)
m_startParsingButton->setEnabled(validState);
}
-void SelectableFilesWidget::startParsing()
+void SelectableFilesWidget::startParsing(const Utils::FileName &baseDir)
{
if (!m_model)
return;
enableWidgets(false);
- m_model->startParsing(m_baseDirChooser->fileName());
+ m_model->startParsing(baseDir);
}
void SelectableFilesWidget::parsingProgress(const Utils::FileName &fileName)
@@ -696,7 +695,6 @@ void SelectableFilesWidget::parsingFinished()
if (!m_model)
return;
- m_model->selectAllFiles();
applyFilter();
smartExpand(m_model->index(0,0, QModelIndex()));
diff --git a/src/plugins/projectexplorer/selectablefilesmodel.h b/src/plugins/projectexplorer/selectablefilesmodel.h
index d31159931b..f4de2fd253 100644
--- a/src/plugins/projectexplorer/selectablefilesmodel.h
+++ b/src/plugins/projectexplorer/selectablefilesmodel.h
@@ -57,7 +57,7 @@ public:
QList<Tree *> visibleFiles;
QIcon icon;
Utils::FileName fullPath;
- Tree *parent;
+ Tree *parent = nullptr;
};
class Glob
@@ -133,14 +133,14 @@ private:
void propagateDown(const QModelIndex &index);
void selectAllFiles(Tree *root);
- Tree *m_root = 0;
+ Tree *m_root = nullptr;
// Used in the future thread need to all not used after calling startParsing
Utils::FileName m_baseDir;
QSet<Utils::FileName> m_files;
QSet<Utils::FileName> m_outOfBaseDirFiles;
QFutureWatcher<void> m_watcher;
- Tree *m_rootForFuture = 0;
+ Tree *m_rootForFuture = nullptr;
int m_futureCount = 0;
bool m_allFiles = true;
@@ -153,9 +153,9 @@ class PROJECTEXPLORER_EXPORT SelectableFilesWidget : public QWidget
Q_OBJECT
public:
- explicit SelectableFilesWidget(QWidget *parent = 0);
+ explicit SelectableFilesWidget(QWidget *parent = nullptr);
SelectableFilesWidget(const Utils::FileName &path, const Utils::FileNameList &files,
- QWidget *parent = 0);
+ QWidget *parent = nullptr);
void setAddFileFilter(const QString &filter);
void setBaseDirEditable(bool edit);
@@ -176,7 +176,7 @@ private:
void applyFilter();
void baseDirectoryChanged(bool validState);
- void startParsing();
+ void startParsing(const Utils::FileName &baseDir);
void parsingProgress(const Utils::FileName &fileName);
void parsingFinished();
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 2840cc878e..e42a76ec1d 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -590,14 +590,10 @@ void Target::updateDefaultRunConfigurations()
QList<RunConfiguration *> newConfigured; // NEW configured Rcs
QList<RunConfiguration *> newUnconfigured; // NEW unconfigured RCs
-
// sort existing RCs into configured/unconfigured.
- foreach (RunConfiguration *rc, runConfigurations()) {
- if (!rc->isConfigured())
- existingUnconfigured << rc;
- else
- existingConfigured << rc;
- }
+ std::tie(existingConfigured, existingUnconfigured)
+ = Utils::partition(runConfigurations(),
+ [](const RunConfiguration *rc) { return rc->isConfigured(); });
int configuredCount = existingConfigured.count();
// find all RC ids that can get created:
@@ -617,7 +613,7 @@ void Target::updateDefaultRunConfigurations()
foreach (RunConfiguration *rc, existingConfigured) {
if (availableFactoryIds.contains(rc->id()))
toIgnore.append(rc->id()); // Already there
- else
+ else if (project()->knowsAllBuildExecutables())
toRemove << rc;
}
foreach (Core::Id i, toIgnore)
@@ -679,25 +675,27 @@ void Target::updateDefaultRunConfigurations()
// Make sure a configured RC will be active after we delete the RCs:
RunConfiguration *active = activeRunConfiguration();
- if (removalList.contains(active)) {
- if (!existingConfigured.isEmpty()) {
- setActiveRunConfiguration(existingConfigured.at(0));
- } else if (!newConfigured.isEmpty()) {
- RunConfiguration *selected = newConfigured.at(0);
- // Try to find a runconfiguration that matches the project name. That is a good
- // candidate for something to run initially.
- selected = Utils::findOr(newConfigured, selected,
- Utils::equal(&RunConfiguration::displayName, project()->displayName()));
- setActiveRunConfiguration(selected);
- } else if (!newUnconfigured.isEmpty()){
- setActiveRunConfiguration(newUnconfigured.at(0));
- } else {
- if (!removalList.isEmpty())
- setActiveRunConfiguration(removalList.last());
- // Nothing will be left after removal: We set this to the last of in the removal list
- // since that gives us the minimum number of signals (one signal for the change here and
- // one more when the last RC is removed and the active RC becomes 0).
+ if (removalList.contains(active) || !active->isEnabled()) {
+ RunConfiguration *newConfiguredDefault = newConfigured.isEmpty() ? nullptr : newConfigured.at(0);
+
+ RunConfiguration *rc
+ = Utils::findOrDefault(existingConfigured,
+ [](RunConfiguration *rc) { return rc->isEnabled(); });
+ if (!rc) {
+ rc = Utils::findOr(newConfigured, newConfiguredDefault,
+ Utils::equal(&RunConfiguration::displayName, project()->displayName()));
}
+ if (!rc)
+ rc = newUnconfigured.isEmpty() ? nullptr : newUnconfigured.at(0);
+ if (!rc) {
+ // No RCs will be deleted, so use the one that will emit the minimum number of signals.
+ // One signal will be emitted from the next setActiveRunConfiguration, another one
+ // when the RC gets removed (and the activeRunConfiguration turns into a nullptr).
+ rc = removalList.isEmpty() ? nullptr : removalList.last();
+ }
+
+ if (rc)
+ setActiveRunConfiguration(rc);
}
// Remove the RCs that are no longer needed:
diff --git a/src/plugins/projectexplorer/task.cpp b/src/plugins/projectexplorer/task.cpp
index bdb6e26125..91e6d5c987 100644
--- a/src/plugins/projectexplorer/task.cpp
+++ b/src/plugins/projectexplorer/task.cpp
@@ -98,13 +98,15 @@ bool Task::isNull() const
void Task::clear()
{
taskId = 0;
+ type = Task::Unknown;
description.clear();
file = Utils::FileName();
line = -1;
movedLine = -1;
category = Core::Id();
- type = Task::Unknown;
icon = QIcon();
+ formats.clear();
+ m_mark.clear();
}
//
diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp
index 92648cdad3..efa9057997 100644
--- a/src/plugins/pythoneditor/pythoneditorplugin.cpp
+++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp
@@ -30,6 +30,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/coreconstants.h>
+#include <coreplugin/coreicons.h>
#include <coreplugin/documentmanager.h>
#include <coreplugin/fileiconprovider.h>
#include <coreplugin/id.h>
@@ -47,7 +48,6 @@
#include <projectexplorer/target.h>
#include <projectexplorer/iprojectmanager.h>
#include <projectexplorer/projectnodes.h>
-#include <projectexplorer/projectexplorericons.h>
#include <texteditor/texteditorconstants.h>
@@ -1061,7 +1061,7 @@ RunControl *PythonRunControlFactory::create(RunConfiguration *runConfiguration,
PythonRunControl::PythonRunControl(PythonRunConfiguration *rc, Core::Id mode)
: RunControl(rc, mode), m_running(false)
{
- setIcon(ProjectExplorer::Icons::RUN_SMALL);
+ setIcon(Core::Icons::RUN_SMALL);
m_interpreter = rc->interpreter();
m_mainScript = rc->mainScript();
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
index 68b468a0ef..8a02827803 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
@@ -30,6 +30,7 @@
#include "qbsproject.h"
#include <coreplugin/coreicons.h>
+#include <coreplugin/messagemanager.h>
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildstep.h>
#include <projectexplorer/buildsteplist.h>
@@ -276,7 +277,12 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const
procEnv.insert(QLatin1String("QBS_RUN_FILE_PATH"), executable());
qbs::RunEnvironment qbsRunEnv = project->qbsProject().getRunEnvironment(product, installOptions(),
procEnv, QbsManager::settings());
- procEnv = qbsRunEnv.runEnvironment();
+ qbs::ErrorInfo error;
+ procEnv = qbsRunEnv.runEnvironment(&error);
+ if (error.hasError()) {
+ Core::MessageManager::write(tr("Error retrieving run environment: %1")
+ .arg(error.toString()));
+ }
if (!procEnv.isEmpty()) {
env = Utils::Environment();
foreach (const QString &key, procEnv.keys())
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index 6a18b55fdb..b419d7fc2e 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -300,7 +300,7 @@ bool singleSelectionAndInQtQuickLayout(const SelectionContext &context)
if (!metaInfo.isValid())
return false;
- return metaInfo.isSubclassOf("QtQuick.Layouts.Layout", -1, -1);
+ return metaInfo.isSubclassOf("QtQuick.Layouts.Layout");
}
bool isLayout(const SelectionContext &context)
@@ -321,7 +321,7 @@ bool isLayout(const SelectionContext &context)
if (!metaInfo.isValid())
return false;
- return metaInfo.isSubclassOf("QtQuick.Layouts.Layout", -1, -1);
+ return metaInfo.isSubclassOf("QtQuick.Layouts.Layout");
}
bool isPositioner(const SelectionContext &context)
@@ -342,8 +342,8 @@ bool isPositioner(const SelectionContext &context)
if (!metaInfo.isValid())
return false;
- return metaInfo.isSubclassOf("<cpp>.QDeclarativeBasePositioner", -1, -1)
- || metaInfo.isSubclassOf("QtQuick.Positioner", -1, -1);
+ return metaInfo.isSubclassOf("<cpp>.QDeclarativeBasePositioner")
+ || metaInfo.isSubclassOf("QtQuick.Positioner");
}
bool layoutOptionVisible(const SelectionContext &context)
diff --git a/src/plugins/qmldesigner/components/formeditor/contentnoteditableindicator.cpp b/src/plugins/qmldesigner/components/formeditor/contentnoteditableindicator.cpp
index fc84448788..d2bb2e02b0 100644
--- a/src/plugins/qmldesigner/components/formeditor/contentnoteditableindicator.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/contentnoteditableindicator.cpp
@@ -88,7 +88,7 @@ void ContentNotEditableIndicator::updateItems(const QList<FormEditorItem *> &ite
void ContentNotEditableIndicator::addAddiationEntries(const QList<FormEditorItem *> &itemList)
{
foreach (FormEditorItem *formEditorItem, itemList) {
- if (formEditorItem->qmlItemNode().modelNode().metaInfo().isSubclassOf("QtQuick.Loader", -1, -1)) {
+ if (formEditorItem->qmlItemNode().modelNode().metaInfo().isSubclassOf("QtQuick.Loader")) {
if (!m_entryList.contains(EntryPair(formEditorItem, 0))) {
QGraphicsRectItem *indicatorShape = new QGraphicsRectItem(m_layerItem);
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc
index 4b949ad92c..6f986b3a1e 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc
+++ b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc
@@ -6,8 +6,6 @@
<file>no_snapping@2x.png</file>
<file>snapping_and_anchoring.png</file>
<file>snapping_and_anchoring@2x.png</file>
- <file>boundingrect.png</file>
- <file>boundingrect@2x.png</file>
</qresource>
<qresource prefix="/icon">
<file>reset.png</file>
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index 8ffd1da11e..664be17399 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -416,7 +416,7 @@ void FormEditorView::instanceInformationsChange(const QMultiHash<ModelNode, Info
{
QList<FormEditorItem*> itemNodeList;
- foreach (const ModelNode &node, informationChangeHash.keys()) {
+ foreach (const ModelNode &node, informationChangeHash.keys().toSet()) {
QmlItemNode qmlItemNode(node);
if (qmlItemNode.isValid() && scene()->hasItemForQmlItemNode(qmlItemNode)) {
scene()->synchronizeTransformation(qmlItemNode);
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index 8ca2afd850..936c299b84 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -40,6 +40,7 @@
#include <lineeditaction.h>
#include <backgroundaction.h>
+#include <coreplugin/coreicons.h>
#include <utils/fileutils.h>
namespace QmlDesigner {
@@ -97,7 +98,7 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
m_showBoundingRectAction->setShortcutContext(Qt::WidgetWithChildrenShortcut);
m_showBoundingRectAction->setCheckable(true);
m_showBoundingRectAction->setChecked(true);
- m_showBoundingRectAction->setIcon(Icons::BOUNDING_RECT.icon());
+ m_showBoundingRectAction->setIcon(Core::Icons::BOUNDING_RECT.icon());
addAction(m_showBoundingRectAction.data());
upperActions.append(m_showBoundingRectAction.data());
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
index d2472826ac..3080c9befe 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
+++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp
@@ -148,7 +148,7 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
foreach (ItemLibraryEntry entry, itemLibraryInfo->entries()) {
- NodeMetaInfo metaInfo = model->metaInfo(entry.typeName(), -1, -1);
+ NodeMetaInfo metaInfo = model->metaInfo(entry.typeName());
bool valid = metaInfo.isValid() && metaInfo.majorVersion() == entry.majorVersion();
if (valid
diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
index 0b01e02e03..db3fb2183d 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp
@@ -693,7 +693,7 @@ void NavigatorTreeModel::moveNodesInteractive(NodeAbstractProperty &parentProper
if (modelNode.isValid()
&& modelNode != parentProperty.parentModelNode()
&& !modelNode.isAncestorOf(parentProperty.parentModelNode())
- && (modelNode.metaInfo().isSubclassOf(propertyQmlType, -1, -1) || propertyQmlType == "alias")) {
+ && (modelNode.metaInfo().isSubclassOf(propertyQmlType) || propertyQmlType == "alias")) {
//### todo: allowing alias is just a heuristic
//once the MetaInfo is part of instances we can do this right
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp
index ce23c29ade..06d6e53a80 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp
@@ -100,7 +100,7 @@ PropertyEditorQmlBackend::PropertyEditorQmlBackend(PropertyEditorView *propertyE
m_contextObject->setBackendValues(&m_backendValuesPropertyMap);
m_contextObject->insertInQmlContext(context());
- QObject::connect(&m_backendValuesPropertyMap, SIGNAL(valueChanged(QString,QVariant)), propertyEditor, SLOT(changeValue(QString)));
+ QObject::connect(&m_backendValuesPropertyMap, &DesignerPropertyMap::valueChanged, propertyEditor, &PropertyEditorView::changeValue);
}
PropertyEditorQmlBackend::~PropertyEditorQmlBackend()
@@ -114,8 +114,8 @@ void PropertyEditorQmlBackend::setupPropertyEditorValue(const PropertyName &name
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(backendValuesPropertyMap().value(QString::fromUtf8(propertyName))));
if (!valueObject) {
valueObject = new PropertyEditorValue(&backendValuesPropertyMap());
- QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), &backendValuesPropertyMap(), SIGNAL(valueChanged(QString,QVariant)));
- QObject::connect(valueObject, SIGNAL(expressionChanged(QString)), propertyEditor, SLOT(changeExpression(QString)));
+ QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
+ QObject::connect(valueObject, &PropertyEditorValue::expressionChanged, propertyEditor, &PropertyEditorView::changeExpression);
backendValuesPropertyMap().insert(QString::fromUtf8(propertyName), QVariant::fromValue(valueObject));
}
valueObject->setName(propertyName);
@@ -183,8 +183,8 @@ void PropertyEditorQmlBackend::createPropertyEditorValue(const QmlObjectNode &qm
PropertyEditorValue *valueObject = qobject_cast<PropertyEditorValue*>(variantToQObject(backendValuesPropertyMap().value(QString::fromUtf8(propertyName))));
if (!valueObject) {
valueObject = new PropertyEditorValue(&backendValuesPropertyMap());
- QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), &backendValuesPropertyMap(), SIGNAL(valueChanged(QString,QVariant)));
- QObject::connect(valueObject, SIGNAL(expressionChanged(QString)), propertyEditor, SLOT(changeExpression(QString)));
+ QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
+ QObject::connect(valueObject, &PropertyEditorValue::expressionChanged, propertyEditor, &PropertyEditorView::changeExpression);
backendValuesPropertyMap().insert(QString::fromUtf8(propertyName), QVariant::fromValue(valueObject));
}
valueObject->setName(name);
@@ -274,7 +274,7 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q
valueObject->setName("className");
valueObject->setModelNode(qmlObjectNode.modelNode());
valueObject->setValue(qmlObjectNode.modelNode().simplifiedTypeName());
- QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), &m_backendValuesPropertyMap, SIGNAL(valueChanged(QString,QVariant)));
+ QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
m_backendValuesPropertyMap.insert(QLatin1String("className"), QVariant::fromValue(valueObject));
// id
@@ -283,7 +283,7 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
valueObject->setName("id");
valueObject->setValue(qmlObjectNode.id());
- QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), &m_backendValuesPropertyMap, SIGNAL(valueChanged(QString,QVariant)));
+ QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
m_backendValuesPropertyMap.insert(QLatin1String("id"), QVariant::fromValue(valueObject));
QmlItemNode itemNode(qmlObjectNode.modelNode());
@@ -331,7 +331,7 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q
void PropertyEditorQmlBackend::initialSetup(const TypeName &typeName, const QUrl &qmlSpecificsFile, PropertyEditorView *propertyEditor)
{
- NodeMetaInfo metaInfo = propertyEditor->model()->metaInfo(typeName, 4, 7);
+ NodeMetaInfo metaInfo = propertyEditor->model()->metaInfo(typeName);
foreach (const PropertyName &propertyName, metaInfo.propertyNames())
setupPropertyEditorValue(propertyName, propertyEditor, QString::fromUtf8(metaInfo.propertyTypeName(propertyName)));
@@ -342,7 +342,7 @@ void PropertyEditorQmlBackend::initialSetup(const TypeName &typeName, const QUrl
valueObject->setName("className");
valueObject->setValue(typeName);
- QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), &m_backendValuesPropertyMap, SIGNAL(valueChanged(QString,QVariant)));
+ QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
m_backendValuesPropertyMap.insert(QLatin1String("className"), QVariant::fromValue(valueObject));
// id
@@ -350,8 +350,8 @@ void PropertyEditorQmlBackend::initialSetup(const TypeName &typeName, const QUrl
if (!valueObject)
valueObject = new PropertyEditorValue(&m_backendValuesPropertyMap);
valueObject->setName("id");
- valueObject->setValue(QLatin1String("id"));
- QObject::connect(valueObject, SIGNAL(valueChanged(QString,QVariant)), &m_backendValuesPropertyMap, SIGNAL(valueChanged(QString,QVariant)));
+ valueObject->setValue("id");
+ QObject::connect(valueObject, &PropertyEditorValue::valueChanged, &backendValuesPropertyMap(), &DesignerPropertyMap::valueChanged);
m_backendValuesPropertyMap.insert(QLatin1String("id"), QVariant::fromValue(valueObject));
context()->setContextProperty(QLatin1String("anchorBackend"), &m_backendAnchorBinding);
@@ -444,8 +444,6 @@ TypeName PropertyEditorQmlBackend::fixTypeNameForPanes(const TypeName &typeName)
TypeName PropertyEditorQmlBackend::qmlFileName(const NodeMetaInfo &nodeInfo)
{
- if (nodeInfo.typeName().split('.').last() == "QDeclarativeItem")
- return "QtQuick/ItemPane.qml";
const TypeName fixedTypeName = fixTypeNameForPanes(nodeInfo.typeName());
return fixedTypeName + "Pane.qml";
}
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.h
index 28af9cce67..ac3bb9e7d0 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.h
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorview.h
@@ -81,6 +81,10 @@ public:
void rootNodeTypeChanged(const QString &type, int majorVersion, int minorVersion) override;
+public slots:
+ void changeValue(const QString &name);
+ void changeExpression(const QString &name);
+
protected:
void timerEvent(QTimerEvent *event) override;
void setupPane(const TypeName &typeName);
@@ -88,8 +92,6 @@ protected:
private slots:
void reloadQml();
- void changeValue(const QString &name);
- void changeExpression(const QString &name);
void updateSize();
void setupPanes();
diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
index 46fd80e40c..493fbf3bd7 100644
--- a/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
+++ b/src/plugins/qmldesigner/components/stateseditor/stateseditorview.cpp
@@ -77,7 +77,7 @@ void StatesEditorView::removeState(int nodeId)
try {
if (nodeId > 0 && hasModelNodeForInternalId(nodeId)) {
ModelNode stateNode(modelNodeForInternalId(nodeId));
- Q_ASSERT(stateNode.metaInfo().isSubclassOf("QtQuick.State", -1, -1));
+ Q_ASSERT(stateNode.metaInfo().isSubclassOf("QtQuick.State"));
NodeListProperty parentProperty = stateNode.parentProperty().toNodeListProperty();
if (parentProperty.count() <= 1) {
@@ -188,7 +188,7 @@ void StatesEditorView::duplicateCurrentState()
void StatesEditorView::checkForWindow()
{
if (m_statesEditorWidget)
- m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Window.Window", -1, -1));
+ m_statesEditorWidget->showAddNewStatesButton(!rootModelNode().metaInfo().isSubclassOf("QtQuick.Window.Window"));
}
void StatesEditorView::setCurrentState(const QmlModelState &state)
diff --git a/src/plugins/qmldesigner/componentsplugin/addtabdesigneraction.cpp b/src/plugins/qmldesigner/componentsplugin/addtabdesigneraction.cpp
index 15310e221f..43b9230b1e 100644
--- a/src/plugins/qmldesigner/componentsplugin/addtabdesigneraction.cpp
+++ b/src/plugins/qmldesigner/componentsplugin/addtabdesigneraction.cpp
@@ -44,14 +44,14 @@ namespace QmlDesigner {
bool isTabView(const ModelNode &modelNode)
{
- return modelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView", -1, -1);
+ return modelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView");
}
bool isTabAndParentIsTabView(const ModelNode &modelNode)
{
- return modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab", -1, -1)
+ return modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab")
&& modelNode.hasParentProperty()
- && modelNode.parentProperty().parentModelNode().metaInfo().isSubclassOf("QtQuick.Controls.TabView", -1, -1);
+ && modelNode.parentProperty().parentModelNode().metaInfo().isSubclassOf("QtQuick.Controls.TabView");
}
AddTabDesignerAction::AddTabDesignerAction()
@@ -97,7 +97,7 @@ bool AddTabDesignerAction::isEnabled(const SelectionContext &selectionContext) c
static ModelNode findTabViewModelNode(const ModelNode &currentModelNode)
{
- if (currentModelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView", -1, -1))
+ if (currentModelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView"))
return currentModelNode;
else
return findTabViewModelNode(currentModelNode.parentProperty().parentModelNode());
diff --git a/src/plugins/qmldesigner/componentsplugin/entertabdesigneraction.cpp b/src/plugins/qmldesigner/componentsplugin/entertabdesigneraction.cpp
index 6500bf268c..c45b14dded 100644
--- a/src/plugins/qmldesigner/componentsplugin/entertabdesigneraction.cpp
+++ b/src/plugins/qmldesigner/componentsplugin/entertabdesigneraction.cpp
@@ -83,7 +83,7 @@ void EnterTabDesignerAction::updateContext()
if (action()->isEnabled()) {
const ModelNode selectedModelNode = selectionContext().currentSingleSelectedNode();
if (selectedModelNode.metaInfo().isValid()
- && selectedModelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView", -1, -1)) {
+ && selectedModelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView")) {
const NodeAbstractProperty defaultProperty = selectedModelNode.defaultNodeAbstractProperty();
foreach (const QmlDesigner::ModelNode &childModelNode, defaultProperty.directSubNodes()) {
@@ -117,7 +117,7 @@ bool EnterTabDesignerAction::isEnabled(const SelectionContext &selectionContext)
void EnterTabDesignerAction::createActionForTab(const ModelNode &modelNode)
{
if (modelNode.metaInfo().isValid()
- && modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab", -1, -1)) {
+ && modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab")) {
QmlDesigner::QmlItemNode itemNode(modelNode);
diff --git a/src/plugins/qmldesigner/componentsplugin/tabviewindexmodel.cpp b/src/plugins/qmldesigner/componentsplugin/tabviewindexmodel.cpp
index 5fc9d6e54a..751ec18235 100644
--- a/src/plugins/qmldesigner/componentsplugin/tabviewindexmodel.cpp
+++ b/src/plugins/qmldesigner/componentsplugin/tabviewindexmodel.cpp
@@ -60,11 +60,11 @@ void TabViewIndexModel::setupModel()
m_tabViewIndexModel.clear();
if (m_modelNode.isValid()
&& m_modelNode.metaInfo().isValid()
- && m_modelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView", -1, -1)) {
+ && m_modelNode.metaInfo().isSubclassOf("QtQuick.Controls.TabView")) {
foreach (const QmlDesigner::ModelNode &childModelNode, m_modelNode.defaultNodeAbstractProperty().directSubNodes()) {
if (childModelNode.metaInfo().isValid()
- && childModelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab", -1, -1)) {
+ && childModelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab")) {
QmlDesigner::QmlItemNode itemNode(childModelNode);
if (itemNode.isValid()) {
m_tabViewIndexModel.append(itemNode.instanceValue("title").toString());
diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h
index 68df5eced9..2fc5a9b794 100644
--- a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h
+++ b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h
@@ -75,7 +75,7 @@ public:
QList<Property> properties() const;
- void setType(const TypeName &typeName, int majorVersion, int minorVersion);
+ void setType(const TypeName &typeName, int majorVersion = -1, int minorVersion = -1);
void setName(const QString &name);
void setLibraryEntryIconPath(const QString &libraryEntryIconPath);
void addProperty(const Property &p);
diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h
index d2166b92cc..0ed326b804 100644
--- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h
+++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h
@@ -95,7 +95,7 @@ public:
bool hasCustomParser() const;
bool availableInVersion(int majorVersion, int minorVersion) const;
- bool isSubclassOf(const TypeName &type, int majorVersion, int minorVersio) const;
+ bool isSubclassOf(const TypeName &type, int majorVersion = -1, int minorVersion = -1) const;
bool isGraphicalItem() const;
bool isLayoutable() const;
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index 5699a680ef..d5bcfaff6b 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -783,7 +783,7 @@ CreateSceneCommand NodeInstanceView::createCreateSceneCommand()
InstanceContainer::NodeSourceType nodeSourceType = static_cast<InstanceContainer::NodeSourceType>(instance.modelNode().nodeSourceType());
InstanceContainer::NodeMetaType nodeMetaType = InstanceContainer::ObjectMetaType;
- if (instance.modelNode().metaInfo().isSubclassOf("QtQuick.Item", -1, -1))
+ if (instance.modelNode().metaInfo().isSubclassOf("QtQuick.Item"))
nodeMetaType = InstanceContainer::ItemMetaType;
InstanceContainer container(instance.instanceId(),
@@ -885,7 +885,7 @@ CreateInstancesCommand NodeInstanceView::createCreateInstancesCommand(const QLis
InstanceContainer::NodeSourceType nodeSourceType = static_cast<InstanceContainer::NodeSourceType>(instance.modelNode().nodeSourceType());
InstanceContainer::NodeMetaType nodeMetaType = InstanceContainer::ObjectMetaType;
- if (instance.modelNode().metaInfo().isSubclassOf("QtQuick.Item", -1, -1))
+ if (instance.modelNode().metaInfo().isSubclassOf("QtQuick.Item"))
nodeMetaType = InstanceContainer::ItemMetaType;
InstanceContainer container(instance.instanceId(), instance.modelNode().type(), instance.modelNode().majorVersion(), instance.modelNode().minorVersion(),
diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp
index 31baa4c193..68f093578b 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp
@@ -160,7 +160,7 @@ MetaInfoReader::ParserSate MetaInfoReader::readTypeElement(const QString &name)
{
if (name == ItemLibraryEntryElementName) {
m_currentEntry = ItemLibraryEntry();
- m_currentEntry.setType(m_currentClassName, -1, -1);
+ m_currentEntry.setType(m_currentClassName);
m_currentEntry.setTypeIcon(QIcon(m_currentIcon));
return ParsingItemLibrary;
} else {
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
index e013561d89..e7f13239fd 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
@@ -1520,7 +1520,7 @@ bool NodeMetaInfo::isSubclassOf(const TypeName &type, int majorVersion, int mino
bool NodeMetaInfo::isGraphicalItem() const
{
- return isSubclassOf("QtQuick.Item", -1, -1) || isSubclassOf("QtQuick.Window.Window", -1, -1);
+ return isSubclassOf("QtQuick.Item") || isSubclassOf("QtQuick.Window.Window");
}
void NodeMetaInfo::clearCache()
@@ -1530,25 +1530,25 @@ void NodeMetaInfo::clearCache()
bool NodeMetaInfo::isLayoutable() const
{
- if (isSubclassOf("<cpp>.QDeclarativeBasePositioner", -1, -1))
+ if (isSubclassOf("<cpp>.QDeclarativeBasePositioner"))
return true; //QtQuick 1
- return isSubclassOf("QtQuick.Positioner", -1, -1)
- || isSubclassOf("QtQuick.Layouts.Layout", -1, -1)
- || isSubclassOf("QtQuick.Controls.SplitView", -1, -1);
+ return isSubclassOf("QtQuick.Positioner")
+ || isSubclassOf("QtQuick.Layouts.Layout")
+ || isSubclassOf("QtQuick.Controls.SplitView");
}
bool NodeMetaInfo::isView() const
{
return isValid() &&
- (isSubclassOf("QtQuick.ListView", -1, -1) ||
- isSubclassOf("QtQuick.GridView", -1, -1) ||
- isSubclassOf("QtQuick.PathView", -1, -1));
+ (isSubclassOf("QtQuick.ListView") ||
+ isSubclassOf("QtQuick.GridView") ||
+ isSubclassOf("QtQuick.PathView"));
}
bool NodeMetaInfo::isTabView() const
{
- return isSubclassOf("QtQuick.Controls.TabView", -1, -1);
+ return isSubclassOf("QtQuick.Controls.TabView");
}
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp
index ea9523a706..ea829d5e18 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp
@@ -384,7 +384,7 @@ void SubComponentManager::registerQmlFile(const QFileInfo &fileInfo, const QStri
if (addToLibrary) {
// Add file components to the library
ItemLibraryEntry itemLibraryEntry;
- itemLibraryEntry.setType(componentName.toUtf8(), -1, -1);
+ itemLibraryEntry.setType(componentName.toUtf8());
itemLibraryEntry.setName(baseComponentName);
itemLibraryEntry.setCategory(QLatin1String("QML Components"));
if (!qualifier.isEmpty()) {
diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp
index e8e586c3ed..8af40b27aa 100644
--- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp
@@ -1056,7 +1056,7 @@ bool ModelNode::isComponent() const
return true;
}
- if (metaInfo().isSubclassOf("QtQuick.Loader", -1 , -1)) {
+ if (metaInfo().isSubclassOf("QtQuick.Loader")) {
if (hasNodeListProperty("component")) {
diff --git a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp
index 564654882c..cb9a43753e 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp
@@ -51,7 +51,7 @@ bool QmlPropertyChanges::isValid() const
bool QmlPropertyChanges::isValidQmlPropertyChanges(const ModelNode &modelNode)
{
- return isValidQmlModelNodeFacade(modelNode) && modelNode.metaInfo().isSubclassOf("QtQuick.PropertyChanges", -1, -1);
+ return isValidQmlModelNodeFacade(modelNode) && modelNode.metaInfo().isSubclassOf("QtQuick.PropertyChanges");
}
bool QmlModelStateOperation::isValid() const
@@ -62,8 +62,8 @@ bool QmlModelStateOperation::isValid() const
bool QmlModelStateOperation::isValidQmlModelStateOperation(const ModelNode &modelNode)
{
return isValidQmlModelNodeFacade(modelNode)
- && (modelNode.metaInfo().isSubclassOf("<cpp>.QDeclarative1StateOperation", -1, -1)
- || modelNode.metaInfo().isSubclassOf("<cpp>.QQuickStateOperation", -1, -1));
+ && (modelNode.metaInfo().isSubclassOf("<cpp>.QDeclarative1StateOperation")
+ || modelNode.metaInfo().isSubclassOf("<cpp>.QQuickStateOperation"));
}
void QmlPropertyChanges::removeProperty(const PropertyName &name)
diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
index 177a36acaf..4503650c8d 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp
@@ -47,10 +47,10 @@ namespace QmlDesigner {
bool QmlItemNode::isItemOrWindow(const ModelNode &modelNode)
{
- if (modelNode.metaInfo().isSubclassOf("QtQuick.Item", -1, -1))
+ if (modelNode.metaInfo().isSubclassOf("QtQuick.Item"))
return true;
- if (modelNode.metaInfo().isSubclassOf("QtQuick.Window.Window", -1, -1) && modelNode.isRootNode())
+ if (modelNode.metaInfo().isSubclassOf("QtQuick.Window.Window") && modelNode.isRootNode())
return true;
return false;
@@ -364,7 +364,7 @@ bool QmlItemNode::instanceHasRotationTransform() const
bool itemIsMovable(const ModelNode &modelNode)
{
- if (modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab", -1, -1))
+ if (modelNode.metaInfo().isSubclassOf("QtQuick.Controls.Tab"))
return false;
if (modelNode.hasParentProperty()) {
@@ -599,7 +599,7 @@ bool QmlItemNode::isInLayout() const
ModelNode parent = modelNode().parentProperty().parentModelNode();
if (parent.isValid() && parent.metaInfo().isValid())
- return parent.metaInfo().isSubclassOf("QtQuick.Layouts.Layout", -1, -1);
+ return parent.metaInfo().isSubclassOf("QtQuick.Layouts.Layout");
}
return false;
diff --git a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp
index bb6edff74c..aecc77d491 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlstate.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlstate.cpp
@@ -224,7 +224,7 @@ bool QmlModelState::isValidQmlModelState(const ModelNode &modelNode)
{
return isValidQmlModelNodeFacade(modelNode)
&& modelNode.metaInfo().isValid()
- && (modelNode.metaInfo().isSubclassOf("QtQuick.State", -1, -1) || isBaseState(modelNode));
+ && (modelNode.metaInfo().isSubclassOf("QtQuick.State") || isBaseState(modelNode));
}
/**
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index d0293a17c7..b1750aaede 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -86,7 +86,8 @@ static inline QStringList globalQtEnums()
static inline QStringList knownEnumScopes()
{
- static QStringList list = QStringList() << QStringLiteral("TextInput") << QStringLiteral("TextEdit");
+ static QStringList list = QStringList() << QStringLiteral("TextInput") << QStringLiteral("TextEdit")
+ << QStringLiteral("Material") << QStringLiteral("Universal") ;;
return list;
}
@@ -293,7 +294,7 @@ static bool isConnectionsType(const QmlDesigner::TypeName &type)
static bool propertyIsComponentType(const QmlDesigner::NodeAbstractProperty &property, const QmlDesigner::TypeName &type, QmlDesigner::Model *model)
{
- if (model->metaInfo(type, -1, -1).isSubclassOf("QtQuick.Component", -1, -1) && !isComponentType(type))
+ if (model->metaInfo(type).isSubclassOf("QtQuick.Component") && !isComponentType(type))
return false; //If the type is already a subclass of Component keep it
return property.parentModelNode().isValid() &&
diff --git a/src/plugins/qmldesigner/documentmanager.cpp b/src/plugins/qmldesigner/documentmanager.cpp
index baa8d6a441..2870a87ce6 100644
--- a/src/plugins/qmldesigner/documentmanager.cpp
+++ b/src/plugins/qmldesigner/documentmanager.cpp
@@ -240,7 +240,7 @@ static bool isLoaderWithSourceComponent(const ModelNode &modelNode)
{
if (modelNode.isValid()
&& modelNode.metaInfo().isValid()
- && modelNode.metaInfo().isSubclassOf("QtQuick.Loader", -1, -1)) {
+ && modelNode.metaInfo().isSubclassOf("QtQuick.Loader")) {
if (modelNode.hasNodeProperty("sourceComponent"))
return true;
@@ -256,7 +256,7 @@ static bool hasSourceWithFileComponent(const ModelNode &modelNode)
{
if (modelNode.isValid()
&& modelNode.metaInfo().isValid()
- && modelNode.metaInfo().isSubclassOf("QtQuick.Loader", -1, -1)
+ && modelNode.metaInfo().isSubclassOf("QtQuick.Loader")
&& modelNode.hasVariantProperty("source"))
return true;
diff --git a/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtool.cpp b/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtool.cpp
index f9e768a48c..4b73ee59ba 100644
--- a/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtool.cpp
+++ b/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtool.cpp
@@ -78,7 +78,7 @@ static int pathRankForModelNode(const ModelNode &modelNode) {
if (modelNode.metaInfo().hasProperty("path")) {
if (modelNode.hasNodeProperty("path")) {
ModelNode pathNode = modelNode.nodeProperty("path").modelNode();
- if (pathNode.metaInfo().isSubclassOf("QtQuick.Path", -1, -1) && pathNode.hasNodeListProperty("pathElements")) {
+ if (pathNode.metaInfo().isSubclassOf("QtQuick.Path") && pathNode.hasNodeListProperty("pathElements")) {
QList<ModelNode> pathElements = pathNode.nodeListProperty("pathElements").toModelNodeList();
if (pathElements.isEmpty())
return 0;
diff --git a/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtoolview.cpp b/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtoolview.cpp
index 25e0d83043..a15abf569e 100644
--- a/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtoolview.cpp
+++ b/src/plugins/qmldesigner/qmldesignerextension/pathtool/pathtoolview.cpp
@@ -47,7 +47,7 @@ static bool isInEditedPath(const NodeAbstractProperty &propertyParent, const Mod
if (editingPathViewModelNode.isValid()) {
if (editingPathViewModelNode.hasNodeProperty("path")) {
ModelNode pathModelNode = editingPathViewModelNode.nodeProperty("path").modelNode();
- if (pathModelNode.metaInfo().isSubclassOf("QtQuick.Path", -1, -1)) {
+ if (pathModelNode.metaInfo().isSubclassOf("QtQuick.Path")) {
if (propertyParent.name() == "pathElements" && propertyParent.parentModelNode() == pathModelNode)
return true;
}
diff --git a/src/plugins/qmldesigner/qmldesignerextension/texttool/textedititem.cpp b/src/plugins/qmldesigner/qmldesignerextension/texttool/textedititem.cpp
index 38f62bfb64..bd22558a4e 100644
--- a/src/plugins/qmldesigner/qmldesignerextension/texttool/textedititem.cpp
+++ b/src/plugins/qmldesigner/qmldesignerextension/texttool/textedititem.cpp
@@ -65,8 +65,8 @@ void TextEditItem::setFormEditorItem(FormEditorItem *formEditorItem)
NodeMetaInfo metaInfo = m_formEditorItem->qmlItemNode().modelNode().metaInfo();
if (metaInfo.isValid() &&
- (metaInfo.isSubclassOf("QtQuick.TextEdit", -1, -1)
- || metaInfo.isSubclassOf("QtQuick.Controls.TextArea", -1, -1))) {
+ (metaInfo.isSubclassOf("QtQuick.TextEdit")
+ || metaInfo.isSubclassOf("QtQuick.Controls.TextArea"))) {
QSize maximumSize = rect.size().toSize();
activateTextEdit(maximumSize);
} else {
diff --git a/src/plugins/qmldesigner/qmldesignericons.h b/src/plugins/qmldesigner/qmldesignericons.h
index ab10dda7e3..922e385f55 100644
--- a/src/plugins/qmldesigner/qmldesignericons.h
+++ b/src/plugins/qmldesigner/qmldesignericons.h
@@ -46,8 +46,6 @@ const Utils::Icon EXPORT_CHECKED({
{QLatin1String(":/navigator/icon/export_checked.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon EXPORT_UNCHECKED({
{QLatin1String(":/navigator/icon/export_unchecked.png"), Utils::Theme::IconsBaseColor}});
-const Utils::Icon BOUNDING_RECT({
- {QLatin1String(":/icon/layout/boundingrect.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon SNAPPING({
{QLatin1String(":/icon/layout/snapping.png"), Utils::Theme::IconsBaseColor}});
const Utils::Icon NO_SNAPPING({
diff --git a/src/plugins/qmldesigner/settingspage.ui b/src/plugins/qmldesigner/settingspage.ui
index 451d98fe11..0ca22cc9cd 100644
--- a/src/plugins/qmldesigner/settingspage.ui
+++ b/src/plugins/qmldesigner/settingspage.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>629</width>
+ <width>706</width>
<height>472</height>
</rect>
</property>
@@ -343,7 +343,7 @@
<item>
<widget class="QLabel" name="label_4">
<property name="text">
- <string>Forward puppet output:</string>
+ <string>Forward QML emulation layer output:</string>
</property>
</widget>
</item>
@@ -384,7 +384,7 @@
<item>
<widget class="QLabel" name="label_5">
<property name="text">
- <string>Debug puppet:</string>
+ <string>Debug QML emulation layer:</string>
</property>
</widget>
</item>
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp
index 077e0ee34a..7102c078d7 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.cpp
+++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp
@@ -472,7 +472,7 @@ QModelIndex QmlOutlineModel::enterObjectDefinition(AST::UiObjectDefinition *objD
} else {
// it's a grouped propery like 'anchors'
data.insert(ItemTypeRole, NonElementBindingType);
- icon = m_icons->scriptBindingIcon();
+ icon = Icons::scriptBindingIcon();
}
QmlOutlineItem *item = enterNode(data, objDef, idNode, icon);
@@ -492,7 +492,7 @@ QModelIndex QmlOutlineModel::enterObjectBinding(AST::UiObjectBinding *objBinding
bindingData.insert(Qt::DisplayRole, asString(objBinding->qualifiedId));
bindingData.insert(ItemTypeRole, ElementBindingType);
- QmlOutlineItem *bindingItem = enterNode(bindingData, objBinding, objBinding->qualifiedId, m_icons->scriptBindingIcon());
+ QmlOutlineItem *bindingItem = enterNode(bindingData, objBinding, objBinding->qualifiedId, Icons::scriptBindingIcon());
const QString typeName = asString(objBinding->qualifiedTypeNameId);
if (!m_typeToIcon.contains(typeName))
@@ -521,7 +521,7 @@ QModelIndex QmlOutlineModel::enterArrayBinding(AST::UiArrayBinding *arrayBinding
bindingData.insert(Qt::DisplayRole, asString(arrayBinding->qualifiedId));
bindingData.insert(ItemTypeRole, ElementBindingType);
- QmlOutlineItem *item = enterNode(bindingData, arrayBinding, arrayBinding->qualifiedId, m_icons->scriptBindingIcon());
+ QmlOutlineItem *item = enterNode(bindingData, arrayBinding, arrayBinding->qualifiedId, Icons::scriptBindingIcon());
return item->index();
}
@@ -539,7 +539,7 @@ QModelIndex QmlOutlineModel::enterScriptBinding(AST::UiScriptBinding *scriptBind
objectData.insert(AnnotationRole, getAnnotation(scriptBinding->statement));
objectData.insert(ItemTypeRole, NonElementBindingType);
- QmlOutlineItem *item = enterNode(objectData, scriptBinding, scriptBinding->qualifiedId, m_icons->scriptBindingIcon());
+ QmlOutlineItem *item = enterNode(objectData, scriptBinding, scriptBinding->qualifiedId, Icons::scriptBindingIcon());
return item->index();
}
@@ -558,7 +558,7 @@ QModelIndex QmlOutlineModel::enterPublicMember(AST::UiPublicMember *publicMember
objectData.insert(AnnotationRole, getAnnotation(publicMember->statement));
objectData.insert(ItemTypeRole, NonElementBindingType);
- QmlOutlineItem *item = enterNode(objectData, publicMember, 0, m_icons->publicMemberIcon());
+ QmlOutlineItem *item = enterNode(objectData, publicMember, 0, Icons::publicMemberIcon());
return item->index();
}
@@ -576,7 +576,7 @@ QModelIndex QmlOutlineModel::enterFunctionDeclaration(AST::FunctionDeclaration *
objectData.insert(Qt::DisplayRole, functionDeclaration->name.toString());
objectData.insert(ItemTypeRole, ElementBindingType);
- QmlOutlineItem *item = enterNode(objectData, functionDeclaration, 0, m_icons->functionDeclarationIcon());
+ QmlOutlineItem *item = enterNode(objectData, functionDeclaration, 0, Icons::functionDeclarationIcon());
return item->index();
}
@@ -593,7 +593,7 @@ QModelIndex QmlOutlineModel::enterTestCase(AST::ObjectLiteral *objectLiteral)
objectData.insert(Qt::DisplayRole, QLatin1String("testcase"));
objectData.insert(ItemTypeRole, ElementBindingType);
- QmlOutlineItem *item = enterNode(objectData, objectLiteral, 0, m_icons->objectDefinitionIcon());
+ QmlOutlineItem *item = enterNode(objectData, objectLiteral, 0, Icons::objectDefinitionIcon());
return item->index();
}
@@ -613,11 +613,11 @@ QModelIndex QmlOutlineModel::enterTestCaseProperties(AST::PropertyAssignmentList
objectData.insert(ItemTypeRole, ElementBindingType);
QmlOutlineItem *item;
if (assignment->value->kind == AST::Node::Kind_FunctionExpression)
- item = enterNode(objectData, assignment, 0, m_icons->functionDeclarationIcon());
+ item = enterNode(objectData, assignment, 0, Icons::functionDeclarationIcon());
else if (assignment->value->kind == AST::Node::Kind_ObjectLiteral)
- item = enterNode(objectData, assignment, 0, m_icons->objectDefinitionIcon());
+ item = enterNode(objectData, assignment, 0, Icons::objectDefinitionIcon());
else
- item = enterNode(objectData, assignment, 0, m_icons->scriptBindingIcon());
+ item = enterNode(objectData, assignment, 0, Icons::scriptBindingIcon());
return item->index();
}
@@ -628,7 +628,7 @@ QModelIndex QmlOutlineModel::enterTestCaseProperties(AST::PropertyAssignmentList
objectData.insert(Qt::DisplayRole, propertyName->id.toString());
objectData.insert(ItemTypeRole, ElementBindingType);
QmlOutlineItem *item;
- item = enterNode(objectData, getterSetter, 0, m_icons->functionDeclarationIcon());
+ item = enterNode(objectData, getterSetter, 0, Icons::functionDeclarationIcon());
return item->index();
diff --git a/src/plugins/qmlprofiler/qml/qmlprofiler.qrc b/src/plugins/qmlprofiler/qml/qmlprofiler.qrc
index ffef45e6a8..88bd7130ec 100644
--- a/src/plugins/qmlprofiler/qml/qmlprofiler.qrc
+++ b/src/plugins/qmlprofiler/qml/qmlprofiler.qrc
@@ -1,7 +1,5 @@
<RCC>
<qresource prefix="/qmlprofiler">
- <file>recordOff.png</file>
- <file>recordOn.png</file>
<file>bindingloops.vert</file>
<file>bindingloops.frag</file>
</qresource>
diff --git a/src/plugins/qmlprofiler/qml/recordOff.png b/src/plugins/qmlprofiler/qml/recordOff.png
deleted file mode 100644
index 45f5136ca8..0000000000
--- a/src/plugins/qmlprofiler/qml/recordOff.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/qmlprofiler/qml/recordOn.png b/src/plugins/qmlprofiler/qml/recordOn.png
deleted file mode 100644
index e693af8162..0000000000
--- a/src/plugins/qmlprofiler/qml/recordOn.png
+++ /dev/null
Binary files differ
diff --git a/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp b/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp
index efc94d143b..f2ce13c544 100644
--- a/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerdetailsrewriter.cpp
@@ -133,6 +133,8 @@ void QmlProfilerDetailsRewriter::requestDetailsForLocation(int requestId,
if (!QmlJS::ModelManagerInterface::guessLanguageOfFile(localFile).isQmlLikeLanguage())
return;
+ localFile = fileInfo.canonicalFilePath();
+
PendingEvent ev = {location, localFile, requestId};
d->m_pendingEvents << ev;
if (!d->m_pendingDocs.contains(localFile)) {
diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp
index fd69d95de4..7c9ad18606 100644
--- a/src/plugins/qmlprofiler/qmlprofilertool.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp
@@ -37,6 +37,7 @@
#include "qmlprofilersettings.h"
#include "qmlprofilerplugin.h"
+#include <debugger/debuggericons.h>
#include <debugger/analyzer/analyzermanager.h>
#include <debugger/analyzer/analyzerruncontrol.h>
#include <debugger/analyzer/analyzerstartparameters.h>
@@ -204,7 +205,7 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent)
setRecording(d->m_profilerState->clientRecording());
d->m_clearButton = new QToolButton;
- d->m_clearButton->setIcon(Icons::CLEAN_PANE.icon());
+ d->m_clearButton->setIcon(Core::Icons::CLEAN_PANE.icon());
d->m_clearButton->setToolTip(tr("Discard data"));
connect(d->m_clearButton, &QAbstractButton::clicked, [this](){
@@ -213,13 +214,13 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent)
});
d->m_searchButton = new QToolButton;
- d->m_searchButton->setIcon(Icons::ZOOM.icon());
+ d->m_searchButton->setIcon(Core::Icons::ZOOM_TOOLBAR.icon());
d->m_searchButton->setToolTip(tr("Search timeline event notes."));
connect(d->m_searchButton, &QToolButton::clicked, this, &QmlProfilerTool::showTimeLineSearch);
d->m_displayFeaturesButton = new QToolButton;
- d->m_displayFeaturesButton->setIcon(Icons::FILTER.icon());
+ d->m_displayFeaturesButton->setIcon(Core::Icons::FILTER.icon());
d->m_displayFeaturesButton->setToolTip(tr("Hide or show event categories."));
d->m_displayFeaturesButton->setPopupMode(QToolButton::InstantPopup);
d->m_displayFeaturesButton->setProperty("noArrow", true);
@@ -428,10 +429,12 @@ void QmlProfilerTool::recordingButtonChanged(bool recording)
void QmlProfilerTool::setRecording(bool recording)
{
+ const static QIcon recordOn = Debugger::Icons::RECORD_ON.icon();
+ const static QIcon recordOff = Debugger::Icons::RECORD_OFF.icon();
+
// update display
d->m_recordButton->setToolTip( recording ? tr("Disable Profiling") : tr("Enable Profiling"));
- d->m_recordButton->setIcon(QIcon(recording ? QLatin1String(":/qmlprofiler/recordOn.png") :
- QLatin1String(":/qmlprofiler/recordOff.png")));
+ d->m_recordButton->setIcon(recording ? recordOn : recordOff);
d->m_recordButton->setChecked(recording);
diff --git a/src/plugins/qmlprofilerextension/qmlprofilerextensionplugin.cpp b/src/plugins/qmlprofilerextension/qmlprofilerextensionplugin.cpp
index 05c7ac9b9e..e5492d3c31 100644
--- a/src/plugins/qmlprofilerextension/qmlprofilerextensionplugin.cpp
+++ b/src/plugins/qmlprofilerextension/qmlprofilerextensionplugin.cpp
@@ -128,8 +128,8 @@ ExtensionSystem::IPlugin::ShutdownFlag QmlProfilerExtensionPlugin::aboutToShutdo
void QmlProfilerExtensionPlugin::triggerAction()
{
QMessageBox::information(Core::ICore::mainWindow(),
- tr("Action triggered"),
- tr("This is an action from QmlProfilerExtension."));
+ tr("Action Triggered"),
+ tr("This is an action from QML Profiler Extension."));
}
#include "qmlprofilerextensionplugin.moc"
diff --git a/src/plugins/qtsupport/customexecutableconfigurationwidget.cpp b/src/plugins/qtsupport/customexecutableconfigurationwidget.cpp
index 0bb23d8a46..8cf0b1d26d 100644
--- a/src/plugins/qtsupport/customexecutableconfigurationwidget.cpp
+++ b/src/plugins/qtsupport/customexecutableconfigurationwidget.cpp
@@ -56,7 +56,7 @@ CustomExecutableConfigurationWidget::CustomExecutableConfigurationWidget(CustomE
m_executableChooser = new PathChooser(this);
m_executableChooser->setHistoryCompleter(QLatin1String("Qt.CustomExecutable.History"));
- m_executableChooser->setExpectedKind(PathChooser::Command);
+ m_executableChooser->setExpectedKind(PathChooser::ExistingCommand);
layout->addRow(tr("Executable:"), m_executableChooser);
auto argumentsAspect = rc->extraAspect<ArgumentsAspect>();
diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp
index 40f5bb37a8..6f960c0786 100644
--- a/src/plugins/remotelinux/linuxdevice.cpp
+++ b/src/plugins/remotelinux/linuxdevice.cpp
@@ -31,6 +31,7 @@
#include "publickeydeploymentdialog.h"
#include "remotelinux_constants.h"
#include "remotelinuxsignaloperation.h"
+#include "remotelinuxenvironmentreader.h"
#include <coreplugin/id.h>
#include <projectexplorer/devicesupport/sshdeviceprocesslist.h>
@@ -254,4 +255,29 @@ DeviceProcessSignalOperation::Ptr LinuxDevice::signalOperation() const
return DeviceProcessSignalOperation::Ptr(new RemoteLinuxSignalOperation(sshParameters()));
}
+class LinuxDeviceEnvironmentFetcher : public DeviceEnvironmentFetcher
+{
+public:
+ LinuxDeviceEnvironmentFetcher(const IDevice::ConstPtr &device)
+ : m_reader(device)
+ {
+ connect(&m_reader, &Internal::RemoteLinuxEnvironmentReader::finished,
+ this, &LinuxDeviceEnvironmentFetcher::readerFinished);
+ connect(&m_reader, &Internal::RemoteLinuxEnvironmentReader::error,
+ this, &LinuxDeviceEnvironmentFetcher::readerError);
+ }
+
+private:
+ void start() override { m_reader.start(); }
+ void readerFinished() { emit finished(m_reader.remoteEnvironment(), true); }
+ void readerError() { emit finished(Utils::Environment(), false); }
+
+ Internal::RemoteLinuxEnvironmentReader m_reader;
+};
+
+DeviceEnvironmentFetcher::Ptr LinuxDevice::environmentFetcher() const
+{
+ return DeviceEnvironmentFetcher::Ptr(new LinuxDeviceEnvironmentFetcher(sharedFromThis()));
+}
+
} // namespace RemoteLinux
diff --git a/src/plugins/remotelinux/linuxdevice.h b/src/plugins/remotelinux/linuxdevice.h
index c834bfa519..f9469abeb5 100644
--- a/src/plugins/remotelinux/linuxdevice.h
+++ b/src/plugins/remotelinux/linuxdevice.h
@@ -65,6 +65,7 @@ public:
bool hasDeviceTester() const { return true; }
ProjectExplorer::DeviceTester *createDeviceTester() const;
ProjectExplorer::DeviceProcessSignalOperation::Ptr signalOperation() const;
+ ProjectExplorer::DeviceEnvironmentFetcher::Ptr environmentFetcher() const;
protected:
LinuxDevice() {}
diff --git a/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp b/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp
index f3f6820311..dce7464e8e 100644
--- a/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp
+++ b/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp
@@ -28,10 +28,16 @@
#include "remotelinuxrunconfiguration.h"
#include "remotelinuxenvironmentreader.h"
+#include <projectexplorer/target.h>
+#include <projectexplorer/kitinformation.h>
+
#include <QCoreApplication>
#include <QMessageBox>
#include <QPushButton>
+using namespace ProjectExplorer;
+using namespace RemoteLinux::Internal;
+
namespace {
const QString FetchEnvButtonText
= QCoreApplication::translate("RemoteLinux::RemoteLinuxEnvironmentAspectWidget",
@@ -41,15 +47,22 @@ const QString FetchEnvButtonText
namespace RemoteLinux {
RemoteLinuxEnvironmentAspectWidget::RemoteLinuxEnvironmentAspectWidget(RemoteLinuxEnvironmentAspect *aspect) :
- ProjectExplorer::EnvironmentAspectWidget(aspect, new QPushButton),
- deviceEnvReader(new Internal::RemoteLinuxEnvironmentReader(aspect->runConfiguration(), this))
+ EnvironmentAspectWidget(aspect, new QPushButton)
{
+ RunConfiguration *runConfiguration = aspect->runConfiguration();
+ Target *target = runConfiguration->target();
+ IDevice::ConstPtr device = DeviceKitInformation::device(target->kit());
+
+ deviceEnvReader = new RemoteLinuxEnvironmentReader(device, this);
+ connect(target, &ProjectExplorer::Target::kitChanged,
+ deviceEnvReader, &RemoteLinuxEnvironmentReader::handleCurrentDeviceConfigChanged);
+
QPushButton *button = fetchButton();
button->setText(FetchEnvButtonText);
connect(button, &QPushButton::clicked, this, &RemoteLinuxEnvironmentAspectWidget::fetchEnvironment);
- connect(deviceEnvReader, &Internal::RemoteLinuxEnvironmentReader::finished,
+ connect(deviceEnvReader, &RemoteLinuxEnvironmentReader::finished,
this, &RemoteLinuxEnvironmentAspectWidget::fetchEnvironmentFinished);
- connect(deviceEnvReader, &Internal::RemoteLinuxEnvironmentReader::error,
+ connect(deviceEnvReader, &RemoteLinuxEnvironmentReader::error,
this, &RemoteLinuxEnvironmentAspectWidget::fetchEnvironmentError);
}
diff --git a/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp b/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp
index 3d79335b5c..81bca05e97 100644
--- a/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp
+++ b/src/plugins/remotelinux/remotelinuxenvironmentreader.cpp
@@ -27,38 +27,39 @@
#include <projectexplorer/devicesupport/deviceprocess.h>
#include <projectexplorer/devicesupport/idevice.h>
-#include <projectexplorer/kitinformation.h>
-#include <projectexplorer/runconfiguration.h>
-#include <projectexplorer/target.h>
+#include <projectexplorer/runnables.h>
using namespace ProjectExplorer;
namespace RemoteLinux {
namespace Internal {
-RemoteLinuxEnvironmentReader::RemoteLinuxEnvironmentReader(RunConfiguration *config, QObject *parent)
+RemoteLinuxEnvironmentReader::RemoteLinuxEnvironmentReader(const IDevice::ConstPtr &device,
+ QObject *parent)
: QObject(parent)
, m_stop(false)
, m_env(Utils::OsTypeLinux)
- , m_kit(config->target()->kit())
+ , m_device(device)
, m_deviceProcess(0)
{
- connect(config->target(), SIGNAL(kitChanged()),
- this, SLOT(handleCurrentDeviceConfigChanged()));
}
void RemoteLinuxEnvironmentReader::start()
{
- IDevice::ConstPtr device = DeviceKitInformation::device(m_kit);
- if (!device)
+ if (!m_device) {
+ emit error(tr("Error: No device"));
+ setFinished();
return;
+ }
m_stop = false;
- m_deviceProcess = device->createProcess(this);
+ m_deviceProcess = m_device->createProcess(this);
connect(m_deviceProcess, &DeviceProcess::error,
this, &RemoteLinuxEnvironmentReader::handleError);
connect(m_deviceProcess, &DeviceProcess::finished,
this, &RemoteLinuxEnvironmentReader::remoteProcessFinished);
- m_deviceProcess->start(QLatin1String("env"));
+ StandardRunnable runnable;
+ runnable.executable = QLatin1String("env");
+ m_deviceProcess->start(runnable);
}
void RemoteLinuxEnvironmentReader::stop()
diff --git a/src/plugins/remotelinux/remotelinuxenvironmentreader.h b/src/plugins/remotelinux/remotelinuxenvironmentreader.h
index 99db24ee08..3642a556e0 100644
--- a/src/plugins/remotelinux/remotelinuxenvironmentreader.h
+++ b/src/plugins/remotelinux/remotelinuxenvironmentreader.h
@@ -25,15 +25,12 @@
#pragma once
+#include <projectexplorer/devicesupport/idevice.h>
#include <utils/environment.h>
#include <QObject>
-namespace ProjectExplorer {
-class DeviceProcess;
-class Kit;
-class RunConfiguration;
-}
+namespace ProjectExplorer { class DeviceProcess; }
namespace RemoteLinux {
namespace Internal {
@@ -43,29 +40,27 @@ class RemoteLinuxEnvironmentReader : public QObject
Q_OBJECT
public:
- RemoteLinuxEnvironmentReader(ProjectExplorer::RunConfiguration *config, QObject *parent = 0);
-
+ RemoteLinuxEnvironmentReader(const ProjectExplorer::IDevice::ConstPtr &device,
+ QObject *parent = 0);
void start();
void stop();
Utils::Environment remoteEnvironment() const { return m_env; }
+ void handleCurrentDeviceConfigChanged();
signals:
void finished();
void error(const QString &error);
-private slots:
+private:
void handleError();
- void handleCurrentDeviceConfigChanged();
void remoteProcessFinished();
-
-private:
void setFinished();
void destroyProcess();
bool m_stop;
Utils::Environment m_env;
- ProjectExplorer::Kit *m_kit;
+ ProjectExplorer::IDevice::ConstPtr m_device;
ProjectExplorer::DeviceProcess *m_deviceProcess;
};
diff --git a/src/plugins/remotelinux/remotelinuxruncontrol.cpp b/src/plugins/remotelinux/remotelinuxruncontrol.cpp
index 63d4012679..9108b8597d 100644
--- a/src/plugins/remotelinux/remotelinuxruncontrol.cpp
+++ b/src/plugins/remotelinux/remotelinuxruncontrol.cpp
@@ -25,8 +25,9 @@
#include "remotelinuxruncontrol.h"
+#include <coreplugin/coreicons.h>
+
#include <projectexplorer/devicesupport/deviceapplicationrunner.h>
-#include <projectexplorer/projectexplorericons.h>
using namespace ProjectExplorer;
@@ -42,7 +43,7 @@ public:
RemoteLinuxRunControl::RemoteLinuxRunControl(RunConfiguration *rc)
: RunControl(rc, ProjectExplorer::Constants::NORMAL_RUN_MODE), d(new RemoteLinuxRunControlPrivate)
{
- setIcon(ProjectExplorer::Icons::RUN_SMALL);
+ setIcon(Core::Icons::RUN_SMALL);
setRunnable(rc->runnable());
d->running = false;
diff --git a/src/plugins/texteditor/autocompleter.cpp b/src/plugins/texteditor/autocompleter.cpp
index d2de0effc8..8cf39ac6ec 100644
--- a/src/plugins/texteditor/autocompleter.cpp
+++ b/src/plugins/texteditor/autocompleter.cpp
@@ -208,7 +208,6 @@ bool AutoCompleter::autoBackspace(QTextCursor &cursor)
QTextDocument *doc = cursor.document();
const QChar lookAhead = doc->characterAt(pos);
const QChar lookBehind = doc->characterAt(pos - 1);
- const QChar lookFurtherBehind = doc->characterAt(pos - 2);
const QChar character = lookBehind;
if (character == QLatin1Char('(') || character == QLatin1Char('[')) {
@@ -237,11 +236,7 @@ bool AutoCompleter::autoBackspace(QTextCursor &cursor)
// ### this code needs to be generalized
if ((lookBehind == QLatin1Char('(') && lookAhead == QLatin1Char(')'))
- || (lookBehind == QLatin1Char('[') && lookAhead == QLatin1Char(']'))
- || (lookBehind == QLatin1Char('"') && lookAhead == QLatin1Char('"')
- && lookFurtherBehind != QLatin1Char('\\'))
- || (lookBehind == QLatin1Char('\'') && lookAhead == QLatin1Char('\'')
- && lookFurtherBehind != QLatin1Char('\\'))) {
+ || (lookBehind == QLatin1Char('[') && lookAhead == QLatin1Char(']'))) {
if (! isInComment(c)) {
cursor.beginEditBlock();
cursor.deleteChar();
diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
index b1f72f7924..6a792c152c 100644
--- a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
+++ b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
@@ -275,6 +275,7 @@ GenericProposalWidgetPrivate::GenericProposalWidgetPrivate(QWidget *completionWi
, m_assistant(0)
, m_autoWidth(true)
{
+ m_completionListView->setIconSize(QSize(16, 16));
connect(m_completionListView, &QAbstractItemView::activated,
this, &GenericProposalWidgetPrivate::handleActivation);
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 064d8bc1e0..b4aee7ad10 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -4763,10 +4763,13 @@ void TextEditorWidgetPrivate::updateCurrentLineInScrollbar()
m_highlightScrollBar->removeHighlights(Constants::SCROLL_BAR_CURRENT_LINE);
if (m_highlightScrollBar->maximum() > 0) {
const QTextCursor &tc = q->textCursor();
- const int lineNumberInBlock =
- tc.block().layout()->lineForTextPosition(tc.positionInBlock()).lineNumber();
- m_highlightScrollBar->addHighlight(Constants::SCROLL_BAR_CURRENT_LINE,
- q->textCursor().block().firstLineNumber() + lineNumberInBlock);
+ if (QTextLayout *layout = tc.block().layout()) {
+ const int lineNumberInBlock =
+ layout->lineForTextPosition(tc.positionInBlock()).lineNumber();
+ m_highlightScrollBar->addHighlight(
+ Constants::SCROLL_BAR_CURRENT_LINE,
+ q->textCursor().block().firstLineNumber() + lineNumberInBlock);
+ }
}
}
}
diff --git a/src/plugins/todo/todoplugin.cpp b/src/plugins/todo/todoplugin.cpp
index c32007a9c3..475c04cc42 100644
--- a/src/plugins/todo/todoplugin.cpp
+++ b/src/plugins/todo/todoplugin.cpp
@@ -70,7 +70,7 @@ bool TodoPlugin::initialize(const QStringList& args, QString *errMsg)
auto panelFactory = new ProjectExplorer::ProjectPanelFactory();
panelFactory->setPriority(100);
- panelFactory->setDisplayName(TodoProjectSettingsWidget::tr("To-Do Settings"));
+ panelFactory->setDisplayName(TodoProjectSettingsWidget::tr("To-Do"));
panelFactory->setCreateWidgetFunction([this, panelFactory](ProjectExplorer::Project *project) -> QWidget * {
auto *panel = new ProjectExplorer::PropertiesPanel;
panel->setDisplayName(panelFactory->displayName());
diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp
index 246fe18883..182106f7e3 100644
--- a/src/plugins/valgrind/callgrindtool.cpp
+++ b/src/plugins/valgrind/callgrindtool.cpp
@@ -71,7 +71,6 @@
#include <utils/qtcassert.h>
#include <utils/styledbar.h>
-#include <projectexplorer/projectexplorericons.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projecttree.h>
@@ -239,7 +238,7 @@ CallgrindTool::CallgrindTool(QObject *parent)
m_stopAction = Debugger::createStopAction();
ActionDescription desc;
- desc.setToolTip(tr("Valgrind Function Profile uses the "
+ desc.setToolTip(tr("Valgrind Function Profiler uses the "
"Callgrind tool to record function calls when a program runs."));
if (!Utils::HostOsInfo::isWindowsHost()) {
@@ -371,7 +370,7 @@ CallgrindTool::CallgrindTool(QObject *parent)
// pause action
m_pauseAction = action = new QAction(this);
action->setCheckable(true);
- action->setIcon(ProjectExplorer::Icons::INTERRUPT_SMALL.icon());
+ action->setIcon(Core::Icons::INTERRUPT_SMALL.icon());
//action->setText(tr("Ignore"));
action->setToolTip(tr("Pause event logging. No events are counted which will speed up program execution during profiling."));
connect(action, &QAction::toggled, this, &CallgrindTool::pauseToggled);
@@ -431,7 +430,7 @@ CallgrindTool::CallgrindTool(QObject *parent)
// Show costs relative to parent
m_costRelativeToParent = new QAction(tr("Relative Costs to Parent"), this);
- m_costRelativeToParent->setToolTip(tr("Show costs relative to parent functions inclusive cost."));
+ m_costRelativeToParent->setToolTip(tr("Show costs relative to parent function's inclusive cost."));
m_costRelativeToParent->setCheckable(true);
connect(m_costRelativeToParent, &QAction::toggled, this, &CallgrindTool::updateCostFormat);
group->addAction(m_costRelativeToParent);
@@ -456,7 +455,7 @@ CallgrindTool::CallgrindTool(QObject *parent)
// Shorter template signature
action = m_shortenTemplates = new QAction(QLatin1String("<>"), this);
- action->setToolTip(tr("This removes template parameter lists when displaying function names."));
+ action->setToolTip(tr("Remove template parameter lists when displaying function names."));
action->setCheckable(true);
connect(action, &QAction::toggled, &m_dataModel, &DataModel::setShortenTemplates);
connect(action, &QAction::toggled, settings, &ValgrindGlobalSettings::setShortenTemplates);
@@ -850,7 +849,7 @@ void CallgrindTool::requestContextMenu(TextEditorWidget *widget, int line, QMenu
foreach (CallgrindTextMark *textMark, m_textMarks) {
if (textMark->fileName() == widget->textDocument()->filePath().toString() && textMark->lineNumber() == line) {
const Function *func = textMark->function();
- QAction *action = menu->addAction(tr("Select this Function in the Analyzer Output"));
+ QAction *action = menu->addAction(tr("Select This Function in the Analyzer Output"));
connect(action, &QAction::triggered, this, [this, func] { selectFunction(func); });
break;
}
diff --git a/src/plugins/winrt/winrtruncontrol.cpp b/src/plugins/winrt/winrtruncontrol.cpp
index 9fad1e879f..d8be5885ea 100644
--- a/src/plugins/winrt/winrtruncontrol.cpp
+++ b/src/plugins/winrt/winrtruncontrol.cpp
@@ -29,6 +29,7 @@
#include "winrtrunconfiguration.h"
#include "winrtrunnerhelper.h"
+#include <coreplugin/coreicons.h>
#include <coreplugin/idocument.h>
#include <extensionsystem/pluginmanager.h>
#include <projectexplorer/buildconfiguration.h>
@@ -36,7 +37,6 @@
#include <projectexplorer/target.h>
#include <projectexplorer/project.h>
#include <projectexplorer/kitinformation.h>
-#include <projectexplorer/projectexplorericons.h>
#include <qtsupport/qtkitinformation.h>
#include <QTimer>
@@ -56,7 +56,7 @@ WinRtRunControl::WinRtRunControl(WinRtRunConfiguration *runConfiguration, Core::
, m_state(StoppedState)
, m_runner(0)
{
- setIcon(ProjectExplorer::Icons::RUN_SMALL);
+ setIcon(Core::Icons::RUN_SMALL);
}
void WinRtRunControl::start()
diff --git a/src/shared/qbs b/src/shared/qbs
-Subproject ed37fd99438a2053d18b31ecd2366305bbc3ae0
+Subproject bc5ef731d64edd6d2f152a7c68b6ad46efd7066
diff --git a/src/tools/3rdparty/3rdparty.pro b/src/tools/3rdparty/3rdparty.pro
index c0c053bf4c..a173e5dd58 100644
--- a/src/tools/3rdparty/3rdparty.pro
+++ b/src/tools/3rdparty/3rdparty.pro
@@ -5,3 +5,6 @@ mac {
iossim \
iossim_1_8_2
}
+
+isEmpty(BUILD_CPLUSPLUS_TOOLS):BUILD_CPLUSPLUS_TOOLS=$$(BUILD_CPLUSPLUS_TOOLS)
+!isEmpty(BUILD_CPLUSPLUS_TOOLS): SUBDIRS += cplusplus-keywordgen
diff --git a/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.cpp b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp
index 8219c390e9..8219c390e9 100644
--- a/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.cpp
+++ b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.cpp
diff --git a/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.pro b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.pro
new file mode 100644
index 0000000000..5c61e999c9
--- /dev/null
+++ b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.pro
@@ -0,0 +1,3 @@
+include(../../cplusplus-shared/tool.pri)
+
+SOURCES += cplusplus-keywordgen.cpp
diff --git a/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.qbs b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.qbs
index a101414e2e..a57eb3dfd5 100644
--- a/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.qbs
+++ b/src/tools/3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.qbs
@@ -1,4 +1,4 @@
-import "../cplusplus-shared/CPlusPlusTool.qbs" as CPlusPlusTool
+import "../../cplusplus-shared/CPlusPlusTool.qbs" as CPlusPlusTool
CPlusPlusTool {
name: "cplusplus-keywordgen"
diff --git a/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.pro b/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.pro
deleted file mode 100644
index 7d64777539..0000000000
--- a/src/tools/cplusplus-keywordgen/cplusplus-keywordgen.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../cplusplus-shared/tool.pri)
-
-SOURCES += cplusplus-keywordgen.cpp
diff --git a/src/tools/cplusplustools.qbs b/src/tools/cplusplustools.qbs
index ee17e6baa6..d67d558330 100644
--- a/src/tools/cplusplustools.qbs
+++ b/src/tools/cplusplustools.qbs
@@ -5,9 +5,9 @@ Project {
name: "CPlusPlus Tools"
condition: Environment.getEnv("BUILD_CPLUSPLUS_TOOLS")
references: [
+ "3rdparty/cplusplus-keywordgen/cplusplus-keywordgen.qbs",
"cplusplus-ast2png/cplusplus-ast2png.qbs",
"cplusplus-frontend/cplusplus-frontend.qbs",
- "cplusplus-keywordgen/cplusplus-keywordgen.qbs",
"cplusplus-mkvisitor/cplusplus-mkvisitor.qbs",
"cplusplus-update-frontend/cplusplus-update-frontend.qbs",
]
diff --git a/src/tools/icons/qtcreatoricons.svg b/src/tools/icons/qtcreatoricons.svg
index e325bb9ab5..cb962e1c69 100644
--- a/src/tools/icons/qtcreatoricons.svg
+++ b/src/tools/icons/qtcreatoricons.svg
@@ -625,11 +625,11 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="93.473168"
- inkscape:cy="23.946208"
+ inkscape:zoom="4"
+ inkscape:cx="407.31417"
+ inkscape:cy="170.08332"
inkscape:document-units="px"
- inkscape:current-layer="layer3"
+ inkscape:current-layer="g4718"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
@@ -2155,7 +2155,7 @@
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
<g
- id="src/plugins/projectexplorer/images/run_small"
+ id="src/plugins/coreplugin/images/run_small"
transform="translate(112,0)">
<rect
id="rect4901-1"
@@ -2171,7 +2171,7 @@
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
<g
- id="src/plugins/projectexplorer/images/stop_small"
+ id="src/plugins/coreplugin/images/stop_small"
transform="translate(112,0)">
<rect
id="rect4907-4"
@@ -2190,7 +2190,7 @@
</g>
<g
transform="translate(128,0)"
- id="src/plugins/projectexplorer/images/interrupt_small">
+ id="src/plugins/coreplugin/images/interrupt_small">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none"
x="265"
@@ -2214,95 +2214,6 @@
y="570" />
</g>
<g
- id="src/plugins/projectexplorer/images/run_overlay_small"
- transform="translate(-16,0)">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- x="425"
- y="568"
- width="16"
- height="16"
- id="rect4959-4-0" />
- <polygon
- style="fill:#000000;fill-opacity:1;stroke:none"
- id="polygon4953-0-5"
- points="610,266 616,262 610,258 "
- transform="matrix(1.3333333,0,0,1.125,-381.33331,283.75)" />
- </g>
- <g
- id="src/plugins/debugger/images/stop_overlay_small"
- transform="translate(-16,0)">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- x="441"
- y="568"
- width="16"
- height="16"
- id="rect4959-4-0-0" />
- <rect
- y="575"
- x="448"
- height="8"
- width="8"
- id="rect6539"
- style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- </g>
- <g
- id="src/plugins/debugger/images/interrupt_overlay_small"
- transform="translate(-16,0)">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- x="457"
- y="568"
- width="16"
- height="16"
- id="rect4959-4-0-0-6" />
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4608"
- width="3"
- height="8"
- x="464"
- y="575" />
- <rect
- style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="rect4610"
- width="3"
- height="8"
- x="469"
- y="575" />
- </g>
- <g
- id="src/plugins/debugger/images/continue_overlay_small"
- transform="translate(16,0)">
- <rect
- id="rect4959-4-0-0-6-5"
- height="16"
- width="16"
- y="568"
- x="441"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- <path
- style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.35263491;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path5679"
- sodipodi:type="arc"
- sodipodi:cx="-450.5011"
- sodipodi:cy="578.72314"
- sodipodi:rx="3.3180437"
- sodipodi:ry="3.556159"
- sodipodi:start="2.3561945"
- sodipodi:end="0.61086524"
- d="m -452.84731,581.23773 a 3.3180437,3.556159 0 0 1 -0.13245,-4.87871 3.3180437,3.556159 0 0 1 4.53663,-0.42538 3.3180437,3.556159 0 0 1 0.66001,4.82923"
- sodipodi:open="true"
- transform="scale(-1,1)" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 456.23301,581.60239 -5.2335,-3.09121 0,4.48882 z"
- id="path5681"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc" />
- </g>
- <g
id="src/plugins/projectexplorer/images/debugger_overlay_small"
transform="translate(16,0)">
<rect
@@ -2314,25 +2225,33 @@
id="rect4959-4" />
<g
id="g6659"
- transform="translate(0,0.625)">
+ transform="translate(2,0.625)">
<path
id="asdfasdfasdf"
inkscape:connector-curvature="0"
- d="m 463.49975,569 c -0.678,0 -1.757,0.619 -2.071,1.453 l 2.071,1.164 2.07,-1.164 c -0.314,-0.834 -1.394,-1.453 -2.07,-1.453 z" />
+ d="m 466.5,575.875 c -1.2497,0 -1.25,1.125 -1.25,1.5 l 2.5,0 c 0,-0.375 -3e-4,-1.5 -1.25,-1.5 z"
+ sodipodi:nodetypes="zccz" />
<path
id="sdfgdsfgsdfg"
inkscape:connector-curvature="0"
- d="m 460.60937,571.96875 -1.625,-0.89063 -0.57812,1 1.71012,0.895 -0.22575,1.40188 -1.89062,0 0,1 1.89062,0 0.35388,1.14909 -1.53296,1.03206 0.67635,0.83906 1.34648,-0.86396 1.26563,0.84375 1,0 0,-4.54105 0,-1.639 -1.76475,-1.05013 z"
- sodipodi:nodetypes="cccccccccccccccccc" />
+ d="m 463.27023,577.37502 -0.15225,1 1.36286,0 -0.24267,0.99998 -1.23817,0 0,1 1.23817,0 0.27709,1.00002 -1.39728,0 0.15225,1 1.13211,0 0.88226,-0.5 0.7154,0.49998 0,-4.5 -0.75,0 0,-0.5 z"
+ sodipodi:nodetypes="ccccccccccccccccc" />
<use
height="100%"
width="100%"
- transform="matrix(-1,0,0,1,927,0)"
+ transform="matrix(-1,0,0,1,933,0)"
id="use6516"
xlink:href="#sdfgdsfgsdfg"
y="0"
x="0" />
</g>
+ <rect
+ style="opacity:1;fill:#808080;fill-opacity:1"
+ id="rect4816"
+ width="1"
+ height="4.5"
+ x="468"
+ y="578.5" />
</g>
<g
id="src/plugins/debugger/analyzer/images/analyzer_overlay_small"
@@ -2347,8 +2266,9 @@
<path
inkscape:connector-curvature="0"
id="rect4603-5"
- d="m 474,570 0,10 10,0 0,-1 -9,0 0,-9 z m 2,0 0,2 8,0 0,-2 z m 0,3 0,2 6,0 0,-2 z m 0,3 0,2 4,0 0,-2 z"
- style="fill:#000000;fill-opacity:1;stroke:none" />
+ d="m 481,576 0,7 7,0 0,-1 -6,0 0,-6 z m 2,0 0,1 5,0 0,-1 z m 0,2 0,1 3,0 0,-1 z m 0,2 0,1 1,0 0,-1 z"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:nodetypes="cccccccccccccccccccccc" />
</g>
<g
transform="translate(185,368)"
@@ -2676,7 +2596,7 @@
<g
transform="translate(608,268)"
style="display:inline"
- id="src/plugins/qmldesigner/components/formeditor/boundingrect">
+ id="src/plugins/coreplugin/images/boundingrect">
<rect
id="rect6754-2"
height="16"
@@ -3061,6 +2981,43 @@
</g>
</g>
<g
+ style="display:inline"
+ transform="translate(144,0)"
+ id="src/plugins/projectexplorer/images/continue_1_small">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ x="265"
+ y="568"
+ width="16"
+ height="16"
+ id="rect4810-6" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4815-1"
+ width="4"
+ height="12"
+ x="267"
+ y="570" />
+ </g>
+ <g
+ style="display:inline"
+ transform="translate(160,0)"
+ id="src/plugins/projectexplorer/images/continue_2_small">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ x="265"
+ y="568"
+ width="16"
+ height="16"
+ id="rect4810-1" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 274,570 6,6 -6,6 z"
+ id="rect4817-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ <g
id="src/plugins/help/images/home">
<rect
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none"
@@ -3102,6 +3059,42 @@
points="555,374 555,362 561,362 561,374 558,370 "
style="fill:#000000;fill-opacity:1" />
</g>
+ <g
+ transform="translate(16,0)"
+ style="display:inline"
+ id="src/plugins/debugger/images/recordoutline">
+ <rect
+ id="rect6782-96-9"
+ height="16"
+ width="16"
+ y="568"
+ x="952"
+ style="fill:#ffffff;fill-opacity:1" />
+ <circle
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4864"
+ cx="960"
+ cy="576"
+ r="6.5" />
+ </g>
+ <g
+ transform="translate(32,0)"
+ style="display:inline"
+ id="src/plugins/debugger/images/recordfill">
+ <rect
+ id="rect6782-96-9-4"
+ height="16"
+ width="16"
+ y="568"
+ x="952"
+ style="fill:#ffffff;fill-opacity:1" />
+ <circle
+ style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4864-3"
+ cx="960"
+ cy="576"
+ r="6" />
+ </g>
</g>
<g
inkscape:groupmode="layer"
@@ -3184,6 +3177,68 @@
style="fill:none;stroke:#000000;stroke-width:1.42;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1.0;stroke-dasharray:none" />
</g>
<g
+ style="display:inline"
+ id="src/plugins/projectexplorer/images/rebuildhammerhandles"
+ transform="translate(-1266.5,289)">
+ <rect
+ y="263"
+ x="1339.5"
+ height="16"
+ width="16"
+ id="rect6249-7"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="smallhammerhandle"
+ d="m 1343,269 9,9 1.5,-1.5 -9,-9 z" />
+ <use
+ height="100%"
+ width="100%"
+ transform="matrix(-1,0,0,1,2695,0)"
+ id="use6253-7"
+ xlink:href="#smallhammerhandle"
+ y="0"
+ x="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1347.675,273.675 1.5,-1.5"
+ id="path6284"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="display:inline;fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.50006026;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 1345.8268,271.82353 1.5,-1.50041"
+ id="path6284-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ style="display:inline"
+ id="src/plugins/projectexplorer/images/rebuildhammerheads"
+ transform="translate(-1250.5,289)">
+ <rect
+ y="263"
+ x="1339.5"
+ height="16"
+ width="16"
+ id="rect6249"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ inkscape:connector-curvature="0"
+ id="smallhammerhead"
+ d="m 1339.5,268.5 2,2.5 6,-6 -4.5,0 z" />
+ <use
+ height="100%"
+ width="100%"
+ transform="matrix(-1,0,0,1,2695,0)"
+ id="use6253"
+ xlink:href="#smallhammerhead"
+ y="0"
+ x="0" />
+ </g>
+ <g
transform="translate(-34,374)"
id="src/plugins/welcome/images/new">
<rect
@@ -3350,6 +3405,587 @@
id="path5457-0-5"
style="display:inline" />
</g>
+ <g
+ id="src/libs/cplusplus/images/member"
+ transform="translate(-28,0)">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="rect4853-8"
+ width="16"
+ height="16"
+ x="149"
+ y="552" />
+ <path
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ id="codemodelrectangle"
+ d="m 158.5,554 4.5,4.5 -7.5,7.5 -4.5,-4.5"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/signal">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="rect4853-8-7"
+ width="16"
+ height="16"
+ x="137"
+ y="552" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#codemodelrectangle"
+ id="use4961"
+ transform="translate(-12,0)"
+ width="100%"
+ height="100%" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4966"
+ width="8.5"
+ height="3.5"
+ x="494.26025"
+ y="287.81021"
+ transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path5051"
+ sodipodi:type="arc"
+ sodipodi:cx="143.50003"
+ sodipodi:cy="561.49994"
+ sodipodi:rx="5"
+ sodipodi:ry="5"
+ sodipodi:start="4.7996554"
+ sodipodi:end="6.1959188"
+ d="m 143.93581,556.51897 a 5,5 0 0 1 4.54519,4.54519"
+ sodipodi:open="true" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.89999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path5053"
+ sodipodi:type="arc"
+ sodipodi:cx="143.50003"
+ sodipodi:cy="561.49994"
+ sodipodi:rx="7"
+ sodipodi:ry="7"
+ sodipodi:start="4.7996554"
+ sodipodi:end="6.1959188"
+ d="m 144.11012,554.52658 a 7,7 0 0 1 6.36327,6.36327"
+ sodipodi:open="true" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.89999998;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path5055"
+ sodipodi:type="arc"
+ sodipodi:cx="143.50003"
+ sodipodi:cy="561.49994"
+ sodipodi:rx="9"
+ sodipodi:ry="9"
+ sodipodi:start="4.7996554"
+ sodipodi:end="6.1959188"
+ d="m 144.28443,552.53419 a 9,9 0 0 1 8.18135,8.18135"
+ sodipodi:open="true" />
+ </g>
+ <g
+ transform="translate(4,0)"
+ id="src/libs/cplusplus/images/slot">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="rect4853-8-0"
+ width="16"
+ height="16"
+ x="149"
+ y="552" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#codemodelrectangle"
+ id="use4943" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 153,557.5 3,3 -1.5,1.5 -3,-3 z"
+ id="slot_gap"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path4966"
+ sodipodi:nodetypes="ccccc" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#slot_gap"
+ id="use4968"
+ transform="translate(3,-3)"
+ width="100%"
+ height="100%" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/protected"
+ transform="translate(36,0)">
+ <rect
+ y="552"
+ x="133"
+ height="16"
+ width="16"
+ id="rect4853"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <g
+ id="prototype_key"
+ inkscape:label="#g5172">
+ <circle
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-opacity:1"
+ id="path4844"
+ cx="139.5"
+ cy="564.5"
+ r="2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 141.5,564.5 6,0 0,0"
+ id="path7855"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect7857"
+ width="3"
+ height="2"
+ x="144"
+ y="565" />
+ </g>
+ </g>
+ <g
+ id="src/libs/cplusplus/images/protectedbackground"
+ transform="translate(52,0)">
+ <rect
+ y="552"
+ x="133"
+ height="16"
+ width="16"
+ id="rect4853-7"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <g
+ id="prototype_key-68"
+ inkscape:label="#g5172">
+ <circle
+ style="opacity:1;fill:#000000;fill-opacity:1.0;stroke:#000000;stroke-opacity:1;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4844-1"
+ cx="139.5"
+ cy="564.5"
+ r="2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="m 141.5,564.5 6,0 0,0"
+ id="path7855-0"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect7857-6"
+ width="2"
+ height="1"
+ x="144.5"
+ y="565.5" />
+ </g>
+ </g>
+ <g
+ id="src/libs/cplusplus/images/private"
+ transform="translate(36,0)">
+ <rect
+ y="552"
+ x="165"
+ height="16"
+ width="16"
+ id="rect4853-8-9"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <rect
+ y="562"
+ x="173"
+ height="5"
+ width="7"
+ id="rect4897"
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4916"
+ sodipodi:type="arc"
+ sodipodi:cx="176.5"
+ sodipodi:cy="561.5"
+ sodipodi:rx="2"
+ sodipodi:ry="2"
+ sodipodi:start="3.1415927"
+ sodipodi:end="0"
+ d="m 174.5,561.5 a 2,2 0 0 1 2,-2 2,2 0 0 1 2,2"
+ sodipodi:open="true" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 174.5,561.5 c 0,0.5 0,0.5 0,0.5"
+ id="path4918"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 178.5,561.5 c 0,0.5 0,0.5 0,0.5"
+ id="path4920"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 176.5,563 c 1,0 1,1 1,1.5 0,0.5 0,1.5 -1,1.5 -1,0 -1,-1 -1,-1.5 0,-0.5 0,-1.5 1,-1.5 z"
+ id="path5026"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="zzzzz" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/privatebackground"
+ transform="translate(52,0)">
+ <rect
+ y="552"
+ x="165"
+ height="16"
+ width="16"
+ id="rect4853-8-9-7"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <rect
+ y="562"
+ x="173"
+ height="5"
+ width="7"
+ id="rect4897-3"
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4916-8"
+ sodipodi:type="arc"
+ sodipodi:cx="176.5"
+ sodipodi:cy="561.5"
+ sodipodi:rx="2"
+ sodipodi:ry="2"
+ sodipodi:start="3.1415927"
+ sodipodi:end="0"
+ d="m 174.5,561.5 a 2,2 0 0 1 2,-2 2,2 0 0 1 2,2"
+ sodipodi:open="true" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 174.5,561.5 c 0,0.5 0,0.5 0,0.5"
+ id="path4918-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 178.5,561.5 c 0,0.5 0,0.5 0,0.5"
+ id="path4920-8"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/static"
+ transform="translate(68,0)">
+ <rect
+ y="552"
+ x="165"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 171,554.5 -2,0 c -0.5,0 -1.5,0 -1.5,1 0,1 1,1 1.5,1 0.5,0 1.5,0 1.5,1 0,1 -1,1 -1.5,1 l -2,0"
+ id="path5086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cczczcc" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/staticbackground"
+ transform="translate(84,0)">
+ <rect
+ y="552"
+ x="165"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 172,554.5 -3,0 c -0.5,0 -1.5,0 -1.5,1 0,1 1,1 1.5,1 0.5,0 1.5,0 1.5,1 0,1 -1,1 -1.5,1 l -3,0"
+ id="path5086-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cczczcc" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/classparent"
+ transform="translate(84,0)">
+ <rect
+ y="552"
+ x="181"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-49"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 186.5,552 3,3 -5.5,5.5 -3,-3 z"
+ id="path4895-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/classmemberfunction"
+ transform="translate(100,0)">
+ <rect
+ y="552"
+ x="181"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-4"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 194.5,554.5 2.5,2.5 -4,4 -2.5,-2.5 z"
+ id="cppclassmember"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ inkscape:label="#path4895-4" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/classmembervariable"
+ transform="translate(116,0)">
+ <rect
+ y="552"
+ x="181"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#cppclassmember"
+ id="use4914-9-5"
+ transform="translate(0,7)"
+ width="100%"
+ height="100%" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/classrelation"
+ transform="translate(148,0)">
+ <rect
+ y="552"
+ x="165"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-5"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+ d="m 172.5,557.5 0,7 4.5,0"
+ id="path4919-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 169,557.5 9,0"
+ id="path4921-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/classrelationbackground"
+ transform="translate(164,0)">
+ <rect
+ y="552"
+ x="165"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-5-1"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 172.5,557.5 0,7 4.5,0"
+ id="path4919-8-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 169,557.5 9,0"
+ id="path4921-7-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/keyword">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="rect4853-8-9-8-3-7-5-1-9"
+ width="16"
+ height="16"
+ x="345"
+ y="552" />
+ <circle
+ r="2.5"
+ cy="560.5"
+ cx="353.5"
+ id="path4897"
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/namespace">
+ <rect
+ y="552"
+ x="361"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-5-1-9-9"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <rect
+ y="555"
+ x="365"
+ height="4"
+ width="3"
+ id="namespacedot"
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ ry="1.5" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(5,0)"
+ id="use4982"
+ xlink:href="#namespacedot"
+ y="0"
+ x="0" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(0,6)"
+ id="use4984"
+ xlink:href="#namespacedot"
+ y="0"
+ x="0" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(5,6)"
+ id="use4986"
+ xlink:href="#namespacedot"
+ y="0"
+ x="0" />
+ </g>
+ <g
+ id="src/libs/cplusplus/images/macro">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1"
+ id="rect4853-8-9-8-3-7-5-1-9-9-5"
+ width="16"
+ height="16"
+ x="377"
+ y="552" />
+ <rect
+ y="556.5"
+ x="378.5"
+ height="7"
+ width="13"
+ id="rect5079"
+ style="opacity:1;fill:#000000;fill-opacity:1.0;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ id="g5126"
+ style="stroke:#ffffff;stroke-opacity:1;stroke-width:1.00000002;stroke-miterlimit:4;stroke-dasharray:none;fill:none;stroke-linecap:square">
+ <circle
+ id="path5050"
+ cx="381.5"
+ cy="560.5"
+ r="1"
+ style="fill:none;stroke-linecap:square;stroke:#ffffff" />
+ <path
+ d="m 382.5,559.5 0,2"
+ id="path5075"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ style="stroke-linecap:square;stroke:#ffffff" />
+ <circle
+ id="path5050-3"
+ cx="385.5"
+ cy="560.5"
+ r="1"
+ style="stroke-linecap:square;stroke:#ffffff" />
+ <path
+ d="M 384.53125,558.44141 384.5,561.5"
+ id="path5077"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ style="stroke-linecap:square;stroke:#ffffff" />
+ <path
+ id="path5050-6"
+ sodipodi:type="arc"
+ sodipodi:cx="389.5"
+ sodipodi:cy="560.5"
+ sodipodi:rx="1"
+ sodipodi:ry="1"
+ sodipodi:start="0.90757121"
+ sodipodi:end="5.427974"
+ d="m 390.11566,561.28801 a 1,1 0 0 1 -1.36269,-0.12321 1,1 0 0 1 0.0358,-1.36778 1,1 0 0 1 1.36727,-0.0517"
+ sodipodi:open="true"
+ style="stroke-linecap:butt;stroke:#ffffff" />
+ </g>
+ </g>
+ <g
+ id="src/libs/cplusplus/images/enum"
+ transform="translate(16,0)">
+ <rect
+ y="552"
+ x="377"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-5-1-9-9-5-0"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(4,-5)"
+ id="use5194"
+ xlink:href="#enum"
+ y="0"
+ x="0" />
+ <rect
+ style="opacity:0.45;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5183-6"
+ width="11"
+ height="8"
+ x="378"
+ y="558" />
+ <g
+ id="enum"
+ transform="translate(1,1)">
+ <rect
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5183"
+ width="9"
+ height="6"
+ x="377.5"
+ y="558.5" />
+ </g>
+ </g>
+ <g
+ id="src/libs/cplusplus/images/enumerator"
+ transform="translate(32,0)">
+ <rect
+ y="552"
+ x="377"
+ height="16"
+ width="16"
+ id="rect4853-8-9-8-3-7-5-1-9-9-5-0-4"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-opacity:1" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#enum"
+ id="use4927"
+ transform="translate(4,-5)"
+ width="100%"
+ height="100%" />
+ <rect
+ style="opacity:0.45;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5183-6-1"
+ width="11"
+ height="8"
+ x="378"
+ y="558" />
+ <rect
+ y="559.5"
+ x="378.5"
+ height="6"
+ width="9"
+ id="rect5183-16"
+ style="opacity:1;fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
</g>
<g
inkscape:groupmode="layer"
@@ -4022,57 +4658,34 @@
width="24"
height="24"
id="rect5759-4-1" />
- <path
- style="fill:#000000;fill-opacity:1"
- inkscape:connector-curvature="0"
- d="m 758.5,52 c -1.016,0 -2.635,0.93 -3.105,2.18 l 3.105,1.746 3.105,-1.747 C 761.135,52.93 759.516,52 758.5,52 Z"
- id="path6121-0" />
- <path
- style="fill:#000000;fill-opacity:1"
- inkscape:connector-curvature="0"
- d="m 753.115,56.408 -1.055,-1.055 c -0.194,-0.194 -0.513,-0.194 -0.707,0 l 0,0 c -0.194,0.194 -0.194,0.513 0,0.707 l 1.407,1.407 -0.636,2.543 -1.124,0 c -0.275,0 -0.5,0.226 -0.5,0.5 0,0.274 0.225,0.5 0.5,0.5 l 1.156,0 0.873,2.794 -1.156,1.156 c -0.193,0.193 -0.193,0.512 0,0.707 0.195,0.193 0.514,0.193 0.707,0 l 0.963,-0.963 2.707,1.806 1.75,0.49 0,-7.75 0,-2.458 -3.256,-1.832 -1.629,1.448 z"
- id="path6123-6" />
- <use
- x="0"
- y="0"
- xlink:href="#path6123-6"
- id="use4775"
- transform="matrix(-1,0,0,1,1516.9862,0)"
- width="100%"
- height="100%" />
- </g>
- <g
- style="display:inline"
- transform="translate(-364,305)"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
- id="src/plugins/projectexplorer/images/debugger_run_mask">
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
- id="rect6723-8"
- height="24"
- width="24"
- y="50"
- x="750"
- style="display:inline;fill:#ffffff;fill-opacity:1" />
- <polygon
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
- id="polygon6717-3"
- points="763,74 774,67 763,60 "
- style="fill:#000000;fill-opacity:1"
- transform="translate(-1,-1)" />
+ <g
+ id="g4881"
+ transform="translate(-4,2.999762)">
+ <path
+ d="m 769.50001,58.836563 c -0.65839,0 -1.70859,0.724548 -2.00602,1.694142 l 2.00602,1.345458 2.006,-1.345458 c -0.29742,-0.97021 -1.34763,-1.694142 -2.006,-1.694142 z"
+ id="path4874"
+ inkscape:connector-curvature="0" />
+ <path
+ sodipodi:nodetypes="cccccccccccccccc"
+ d="m 767.12627,61.068318 c -0.25633,0.152637 -0.64848,0.411162 -1.25704,1.062795 l -1.53472,-1.238122 -0.75352,0.91144 1.76081,1.340958 C 765.1929,63.665163 764.94085,64.148012 764.875,65 l -1.875,0 0,1 1.875,0 c 0.13153,0.564121 0.25703,1.128242 0.58926,1.692363 l -1.66595,1.498516 0.73938,0.89637 1.61151,-1.446886 c 1.00647,0.777187 1.78541,1.06964 2.8508,1.139875 l 0,-7.354264 z"
+ id="path4872"
+ inkscape:connector-curvature="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#path4872"
+ id="use4876"
+ transform="matrix(-1,0,0,1,1539,0)"
+ width="100%"
+ height="100%" />
+ </g>
</g>
<g
id="src/plugins/debugger/images/debugger_interrupt_mask"
inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
- transform="translate(-340,305)"
+ transform="translate(-364,305)"
style="display:inline">
<rect
style="display:inline;fill:#ffffff;fill-opacity:1"
@@ -4087,54 +4700,66 @@
<rect
style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4608-0"
- width="4"
- height="12"
- x="763"
- y="61" />
+ width="7"
+ height="18"
+ x="753"
+ y="52" />
<rect
style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4610-6"
- width="4"
- height="12"
- x="769"
- y="61" />
+ width="7"
+ height="18"
+ x="763"
+ y="52" />
</g>
<g
- style="display:inline"
- transform="translate(-316,305)"
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
+ id="src/plugins/debugger/images/debugger_continue_1_mask"
inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
- id="src/plugins/debugger/images/debugger_continue_mask">
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ transform="translate(-340,305)"
+ style="display:inline">
<rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
- id="rect4797"
- height="24"
- width="24"
+ style="display:inline;fill:#ffffff;fill-opacity:1"
+ x="750"
y="50"
+ width="24"
+ height="24"
+ id="rect4791-9"
+ inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4608-0-4"
+ width="7"
+ height="18"
+ x="753"
+ y="52" />
+ </g>
+ <g
+ id="src/plugins/debugger/images/debugger_continue_2_mask"
+ inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ transform="translate(-316,305)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1"
x="750"
- style="display:inline;fill:#ffffff;fill-opacity:1" />
+ y="50"
+ width="24"
+ height="24"
+ id="rect4791-9-8"
+ inkscape:export-filename="c:\Users\aportale\ownprojects\stuff\experiments\iconrecoloring\icon.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
<path
- style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 772.5,72 -6.5,-6 0,6 z"
- id="path5681-4"
+ style="display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 763,52 9,9 -9,9 z"
+ id="rect4610-6-2-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
- <path
- style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path4867"
- sodipodi:type="arc"
- sodipodi:cx="-765"
- sodipodi:cy="65.99987"
- sodipodi:rx="5.5"
- sodipodi:ry="5.5"
- sodipodi:start="2.1642083"
- sodipodi:end="0"
- sodipodi:open="true"
- d="m -768.07556,70.559577 a 5.5,5.5 0 0 1 -1.99963,-6.679238 5.5,5.5 0 0 1 6.15603,-3.273221 5.5,5.5 0 0 1 4.41916,5.392752"
- transform="scale(-1,1)" />
</g>
<g
transform="translate(-392,305)"
diff --git a/src/tools/tools.pro b/src/tools/tools.pro
index 6e82be45c6..fe9f3a7397 100644
--- a/src/tools/tools.pro
+++ b/src/tools/tools.pro
@@ -27,7 +27,6 @@ isEmpty(BUILD_CPLUSPLUS_TOOLS):BUILD_CPLUSPLUS_TOOLS=$$(BUILD_CPLUSPLUS_TOOLS)
!isEmpty(BUILD_CPLUSPLUS_TOOLS) {
SUBDIRS += cplusplus-ast2png \
cplusplus-frontend \
- cplusplus-keywordgen \
cplusplus-mkvisitor \
cplusplus-update-frontend
}
diff --git a/tests/auto/debugger/debugger.qbs b/tests/auto/debugger/debugger.qbs
index 502a547517..5f3fffecaf 100644
--- a/tests/auto/debugger/debugger.qbs
+++ b/tests/auto/debugger/debugger.qbs
@@ -4,10 +4,11 @@ Project {
name: "Debugger autotests"
property path debuggerDir: project.ide_source_tree + "/src/plugins/debugger/"
references: [
+ "disassembler.qbs",
"dumpers.qbs",
"gdb.qbs",
"namedemangler.qbs",
+ "offsets.qbs",
"simplifytypes.qbs",
- "disassembler.qbs"
]
}
diff --git a/tests/auto/debugger/offsets.qbs b/tests/auto/debugger/offsets.qbs
new file mode 100644
index 0000000000..3c678d4e1b
--- /dev/null
+++ b/tests/auto/debugger/offsets.qbs
@@ -0,0 +1,10 @@
+import qbs
+
+QtcAutotest {
+ name: "offsets autotest"
+ Depends { name: "Qt.core-private" }
+ Group {
+ name: "Test sources"
+ files: "tst_offsets.cpp"
+ }
+}
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index 927f3ec752..c8f33edda0 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -1296,7 +1296,7 @@ void tst_Dumpers::dumper()
"python theDumper.setupDumpers()\n"
"run " + nograb + "\n"
"python theDumper.fetchVariables({"
- "'token':2,'fancy':1,'forcens':1,'sortstructs':1,"
+ "'token':2,'fancy':1,'forcens':1,"
"'autoderef':1,'dyntype':1,'passexceptions':1,"
"'qobjectnames':1,"
"'expanded':[" + expandedq + "]})\n";
@@ -1435,7 +1435,7 @@ void tst_Dumpers::dumper()
context.boostVersion = child["value"].toInt();
else {
WatchItem *item = new WatchItem;
- item->parse(child);
+ item->parse(child, true);
local.appendChild(item);
}
}
@@ -1566,6 +1566,30 @@ void tst_Dumpers::dumper_data()
" } // namespace nsB\n"
" } // namespace nsA\n";
+ QTest::newRow("QBitArray")
+ << Data("#include <QBitArray>\n",
+ "QBitArray ba0;\n"
+ "unused(&ba0);\n"
+ "QBitArray ba1(20, true);\n"
+ "ba1.setBit(1, false);\n"
+ "ba1.setBit(3, false);\n"
+ "ba1.setBit(16, false);\n"
+ "unused(&ba1);\n")
+
+ + CoreProfile()
+
+ + Check("ba0", "<0 items>", "@QBitArray")
+ + Check("ba1", "<20 items>", "@QBitArray")
+ // Cdb has "proper" "false"/"true"
+ + Check("ba1.0", "[0]", "true", "bool") % CdbEngine
+ + Check("ba1.0", "[0]", "1", "bool") % NoCdbEngine
+ + Check("ba1.1", "[1]", "0", "bool") % NoCdbEngine
+ + Check("ba1.2", "[2]", "1", "bool") % NoCdbEngine
+ + Check("ba1.3", "[3]", "0", "bool") % NoCdbEngine
+ + Check("ba1.15", "[15]", "1", "bool") % NoCdbEngine
+ + Check("ba1.16", "[16]", "0", "bool") % NoCdbEngine
+ + Check("ba1.17", "[17]", "1", "bool") % NoCdbEngine;
+
QTest::newRow("QByteArray")
<< Data("#include <QByteArray>\n"
"#include <QString>\n"
@@ -4293,6 +4317,96 @@ void tst_Dumpers::dumper_data()
+ Check("v.0", "[0]", "\"foo\"", "std::string");
+ QTest::newRow("StdValArray")
+ << Data("#include <valarray>\n"
+ "#include <list>\n",
+
+ "std::valarray<double> v0, v1 = { 1, 0, 2 };\n"
+ "unused(&v0, &v1);\n\n"
+
+ "std::valarray<int *> v2, v3 = { new int(1), 0, new int(2) };\n"
+ "unused(&v2, &v3);\n\n"
+
+ "std::valarray<int> v4 = { 1, 2, 3, 4 };\n"
+ "unused(&v4);\n\n"
+
+ "std::list<int> list;\n"
+ "std::list<int> list1 = { 45 };\n"
+ "std::valarray<std::list<int> *> v5 = {\n"
+ " new std::list<int>(list), 0,\n"
+ " new std::list<int>(list1), 0\n"
+ "};\n"
+ "unused(&v5);\n\n"
+
+ "std::valarray<bool> b0;\n"
+ "unused(&b0);\n\n"
+
+ "std::valarray<bool> b1 = { true, false, false, true, false };\n"
+ "unused(&b1);\n\n"
+
+ "std::valarray<bool> b2(true, 65);\n"
+ "unused(&b2);\n\n"
+
+ "std::valarray<bool> b3(300);\n"
+ "unused(&b3);\n")
+
+ + Cxx11Profile()
+
+ + Check("v0", "<0 items>", "std::valarray<double>")
+ + Check("v1", "<3 items>", "std::valarray<double>")
+ + Check("v1.0", "[0]", "1", "double")
+ + Check("v1.1", "[1]", "0", "double")
+ + Check("v1.2", "[2]", "2", "double")
+
+ + Check("v2", "<0 items>", "std::valarray<int*>")
+ + Check("v3", "<3 items>", "std::valarray<int*>")
+ + Check("v3.0", "[0]", "1", "int")
+ + Check("v3.1", "[1]", "0x0", "int *")
+ + Check("v3.2", "[2]", "2", "int")
+
+ + Check("v4", "<4 items>", "std::valarray<int>")
+ + Check("v4.0", "[0]", "1", "int")
+ + Check("v4.3", "[3]", "4", "int")
+
+ + Check("list1", "<1 items>", "std::list<int>")
+ + Check("list1.0", "[0]", "45", "int")
+ + Check("v5", "<4 items>", "std::valarray<std::list<int>*>")
+ + Check("v5.0", "[0]", "<0 items>", "std::list<int>")
+ + Check("v5.2", "[2]", "<1 items>", "std::list<int>")
+ + Check("v5.2.0", "[0]", "45", "int")
+ + Check("v5.3", "[3]", "0x0", "std::list<int> *")
+
+ + Check("b0", "<0 items>", "std::valarray<bool>")
+ + Check("b1", "<5 items>", "std::valarray<bool>")
+
+ + Check("b1.0", "[0]", "1", "bool") % NoCdbEngine
+ + Check("b1.1", "[1]", "0", "bool") % NoCdbEngine
+ + Check("b1.2", "[2]", "0", "bool") % NoCdbEngine
+ + Check("b1.3", "[3]", "1", "bool") % NoCdbEngine
+ + Check("b1.4", "[4]", "0", "bool") % NoCdbEngine
+
+ + Check("b1.0", "[0]", "true", "bool") % CdbEngine
+ + Check("b1.1", "[1]", "false", "bool") % CdbEngine
+ + Check("b1.2", "[2]", "false", "bool") % CdbEngine
+ + Check("b1.3", "[3]", "true", "bool") % CdbEngine
+ + Check("b1.4", "[4]", "false", "bool") % CdbEngine
+
+ + Check("b2", "<65 items>", "std::valarray<bool>")
+
+ + Check("b2.0", "[0]", "1", "bool") % NoCdbEngine
+ + Check("b2.64", "[64]", "1", "bool") % NoCdbEngine
+
+ + Check("b2.0", "[0]", "true", "bool") % CdbEngine
+ + Check("b2.64", "[64]", "true", "bool") % CdbEngine
+
+ + Check("b3", "<300 items>", "std::valarray<bool>")
+
+ + Check("b3.0", "[0]", "0", "bool") % NoCdbEngine
+ + Check("b3.299", "[299]", "0", "bool") % NoCdbEngine
+
+ + Check("b3.0", "[0]", "false", "bool") % CdbEngine
+ + Check("b3.99", "[99]", "false", "bool") % CdbEngine;
+
QTest::newRow("StdVector")
<< Data("#include <vector>\n"
"#include <list>\n",
diff --git a/tests/auto/debugger/tst_offsets.cpp b/tests/auto/debugger/tst_offsets.cpp
index 0886ec60e4..9256021c1f 100644
--- a/tests/auto/debugger/tst_offsets.cpp
+++ b/tests/auto/debugger/tst_offsets.cpp
@@ -37,38 +37,75 @@
#endif
#endif
-// Don't do this at home. This is test code, not production.
-#define protected public
-#define private public
-
#include <private/qdatetime_p.h>
#include <private/qfile_p.h>
#include <private/qfileinfo_p.h>
#include <private/qobject_p.h>
-#ifdef HAS_BOOST
-namespace {
// Based on http://bloglitb.blogspot.com/2011/12/access-to-private-members-safer.html
-template<typename Tag, typename Tag::type M>
-struct Rob {
- friend typename Tag::type get(Tag) {
- return M;
- }
+
+template<typename Class, typename Type, Type Value, typename Tag>
+class Access
+{
+ friend int offset(Tag) {
+ Class *c = 0;
+ return (char*)&(c->*Value) - (char*)c; // UB. Don't try at home.
+ }
};
-typedef boost::unordered_set<int> uset;
-typedef boost::unordered::detail::set<uset::allocator_type, uset::key_type,
- uset::hasher, uset::key_equal> uset_types;
+#define OFFSET_ACCESS0(Name, Tag, Type, Class, Member) \
+ struct Tag {}; \
+ int offset(Tag); \
+ template class Access<Class, Type Class::*, &Class::Member, Tag>; \
+ const int Name = offset(Tag())
-struct Table {
- typedef uset_types::table uset::*type;
- friend type get(Table);
-};
+#define OFFSET_ACCESS(Type, Class, Member) \
+ OFFSET_ACCESS0(Class ## _ ## Member, tag_ ## Class ## _ ## Member, Type, Class, Member)
+
+#define OFFSET_TEST(Class, Member) \
+ QTest::newRow(#Class "::" #Member) << Class ## _ ## Member
-template struct Rob<Table, &uset::table_>;
-} // anon namespace
+
+OFFSET_ACCESS(QString, QFilePrivate, fileName);
+OFFSET_ACCESS(QString, QFileSystemEntry, m_filePath);
+OFFSET_ACCESS(QFileSystemEntry, QFileInfoPrivate, fileEntry);
+OFFSET_ACCESS(QObjectPrivate::ExtraData*, QObjectPrivate, extraData);
+
+#if QT_VERSION < 0x50000
+OFFSET_ACCESS(QString, QObjectPrivate, objectName);
+#endif
+
+#if QT_VERSION < 0x50200
+OFFSET_ACCESS(QDate, QDateTimePrivate, date);
+OFFSET_ACCESS(QTime, QDateTimePrivate, time);
+OFFSET_ACCESS(Qt::TimeSpec, QDateTimePrivate, spec);
+OFFSET_ACCESS(int, QDateTimePrivate, utcOffset);
+#else
+OFFSET_ACCESS(qint64, QDateTimePrivate, m_msecs);
+OFFSET_ACCESS(Qt::TimeSpec, QDateTimePrivate, m_spec);
+OFFSET_ACCESS(int, QDateTimePrivate, m_offsetFromUtc);
+OFFSET_ACCESS(QTimeZone, QDateTimePrivate, m_timeZone);
+OFFSET_ACCESS(QDateTimePrivate::StatusFlags, QDateTimePrivate, m_status);
#endif
+
+#ifdef HAS_BOOST
+typedef boost::unordered::unordered_set<int>::key_type T_;
+typedef boost::unordered::unordered_set<int>::hasher H_;
+typedef boost::unordered::unordered_set<int>::key_equal P_;
+typedef boost::unordered::unordered_set<int>::allocator_type A_;
+
+typedef boost::unordered::detail::set<A_, T_, H_, P_> Uset_types;
+typedef boost::unordered::detail::table_impl<Uset_types>::table UsetTable;
+typedef boost::unordered_set<int> Uset;
+
+OFFSET_ACCESS(Uset::table, Uset, table_);
+OFFSET_ACCESS(std::size_t, UsetTable, size_);
+OFFSET_ACCESS(std::size_t, UsetTable, bucket_count_);
+OFFSET_ACCESS(UsetTable::bucket_pointer, UsetTable, buckets_);
+#endif
+
+
class tst_offsets : public QObject
{
Q_OBJECT
@@ -104,162 +141,108 @@ void tst_offsets::offsets_data()
const int qtVersion = QT_VERSION;
- {
- QFilePrivate *p = 0;
- QTestData &data = QTest::newRow("QFilePrivate::fileName")
- << int((char *)&p->fileName - (char *)p);
- if (qtVersion >= 0x50600)
+ if (qtVersion >= 0x50600)
#ifdef Q_OS_WIN
# ifdef Q_CC_MSVC
- data << 176 << 248;
+ OFFSET_TEST(QFilePrivate, fileName) << 176 << 248;
# else // MinGW
- data << 164 << 248;
+ OFFSET_TEST(QFilePrivate, fileName) << 164 << 248;
# endif
#else
- data << 168 << 248;
+ OFFSET_TEST(QFilePrivate, fileName) << 168 << 248;
#endif
- else if (qtVersion >= 0x50500)
+ else if (qtVersion >= 0x50500)
#ifdef Q_OS_WIN
# ifdef Q_CC_MSVC
- data << 176 << 248;
+ OFFSET_TEST(QFilePrivate, fileName) << 176 << 248;
# else // MinGW
- data << 164 << 248;
+ OFFSET_TEST(QFilePrivate, fileName) << 164 << 248;
# endif
#else
- data << 164 << 248;
+ OFFSET_TEST(QFilePrivate, fileName) << 164 << 248;
#endif
- else if (qtVersion >= 0x50400)
+ else if (qtVersion >= 0x50400)
#ifdef Q_OS_WIN
# ifdef Q_CC_MSVC
- data << 196 << 272;
+ OFFSET_TEST(QFilePrivate, fileName) << 196 << 272;
# else // MinGW
- data << 188 << 272;
+ OFFSET_TEST(QFilePrivate, fileName) << 188 << 272;
# endif
#else
- data << 180 << 272;
+ OFFSET_TEST(QFilePrivate, fileName) << 180 << 272;
#endif
- else if (qtVersion > 0x50200)
+ else if (qtVersion > 0x50200)
#ifdef Q_OS_WIN
# ifdef Q_CC_MSVC
- data << 184 << 272;
+ OFFSET_TEST(QFilePrivate, fileName) << 184 << 272;
# else // MinGW
- data << 180 << 272;
+ OFFSET_TEST(QFilePrivate, fileName) << 180 << 272;
# endif
#else
- data << 176 << 272;
+ OFFSET_TEST(QFilePrivate, fileName) << 176 << 272;
#endif
- else if (qtVersion >= 0x50000)
- data << 176 << 280;
- else
+ else if (qtVersion >= 0x50000)
+ OFFSET_TEST(QFilePrivate, fileName) << 176 << 280;
+ else
#ifdef Q_OS_WIN
- data << 144 << 232;
+ OFFSET_TEST(QFilePrivate, fileName) << 144 << 232;
#else
- data << 140 << 232;
+ OFFSET_TEST(QFilePrivate, fileName) << 140 << 232;
#endif
- }
- {
- QFileInfoPrivate *p = 0;
- QTestData &data = QTest::newRow("QFileInfoPrivate::filePath")
- << int((char *)&p->fileEntry.m_filePath - (char *)p);
- data << 4 << 8;
- }
+ OFFSET_TEST(QFileSystemEntry, m_filePath) << 0 << 0;
+ OFFSET_TEST(QFileInfoPrivate, fileEntry) << 4 << 8;
- {
- QTestData &data = QTest::newRow("sizeof(QObjectData)")
- << int(sizeof(QObjectData));
- data << 28 << 48; // vptr + 3 ptr + 2 int + ptr
- }
+ QTest::newRow("sizeof(QObjectData)") << int(sizeof(QObjectData))
+ << 28 << 48; // vptr + 3 ptr + 2 int + ptr
- {
- QObjectPrivate *p = 0;
- QTestData &data = QTest::newRow("QObjectPrivate::extraData")
- << int((char *)&p->extraData - (char *)p);
- if (qtVersion >= 0x50000)
- data << 28 << 48; // sizeof(QObjectData)
- else
- data << 32 << 56; // sizeof(QObjectData) + 1 ptr
- }
+ if (qtVersion >= 0x50000)
+ OFFSET_TEST(QObjectPrivate, extraData) << 28 << 48; // sizeof(QObjectData)
+ else
+ OFFSET_TEST(QObjectPrivate, extraData) << 32 << 56; // sizeof(QObjectData) + 1 ptr
#if QT_VERSION < 0x50000
- {
- QObjectPrivate *p = 0;
- QTestData &data = QTest::newRow("QObjectPrivate::objectName")
- << int((char *)&p->objectName - (char *)p);
- data << 28 << 48; // sizeof(QObjectData)
- }
+ OFFSET_TEST(QObjectPrivate, objectName) << 28 << 48; // sizeof(QObjectData)
#endif
- {
- QDateTimePrivate *p = 0;
#if QT_VERSION < 0x50000
- QTest::newRow("QDateTimePrivate::date")
- << int((char *)&p->date - (char *)p) << 4 << 4;
- QTest::newRow("QDateTimePrivate::time")
- << int((char *)&p->time - (char *)p) << 8 << 8;
- QTest::newRow("QDateTimePrivate::spec")
- << int((char *)&p->spec - (char *)p) << 12 << 12;
- QTest::newRow("QDateTimePrivate::utcOffset")
- << int((char *)&p->utcOffset - (char *)p) << 16 << 16;
+ OFFSET_TEST(QDateTimePrivate, date) << 4 << 4;
+ OFFSET_TEST(QDateTimePrivate, time) << 8 << 8;
+ OFFSET_TEST(QDateTimePrivate, spec) << 12 << 12;
+ OFFSET_TEST(QDateTimePrivate, utcOffset) << 16 << 16;
#elif QT_VERSION < 0x50200
# ifdef Q_OS_WIN
- QTest::newRow("QDateTimePrivate::date")
- << int((char *)&p->date - (char *)p) << 8 << 8;
- QTest::newRow("QDateTimePrivate::time")
- << int((char *)&p->time - (char *)p) << 16 << 16;
- QTest::newRow("QDateTimePrivate::spec")
- << int((char *)&p->spec - (char *)p) << 20 << 20;
- QTest::newRow("QDateTimePrivate::utcOffset")
- << int((char *)&p->utcOffset - (char *)p) << 24 << 24;
+ OFFSET_TEST(QDateTimePrivate, date) << 8 << 8;
+ OFFSET_TEST(QDateTimePrivate, time) << 16 << 16;
+ OFFSET_TEST(QDateTimePrivate, spec) << 20 << 20;
+ OFFSET_TEST(QDateTimePrivate, utcOffset) << 24 << 24;
# else
- QTest::newRow("QDateTimePrivate::date")
- << int((char *)&p->date - (char *)p) << 4 << 8;
- QTest::newRow("QDateTimePrivate::time")
- << int((char *)&p->time - (char *)p) << 12 << 16;
- QTest::newRow("QDateTimePrivate::spec")
- << int((char *)&p->spec - (char *)p) << 16 << 20;
- QTest::newRow("QDateTimePrivate::utcOffset")
- << int((char *)&p->utcOffset - (char *)p) << 20 << 24;
+ OFFSET_TEST(QDateTimePrivate, date) << 4 << 8;
+ OFFSET_TEST(QDateTimePrivate, time) << 12 << 16;
+ OFFSET_TEST(QDateTimePrivate, spec) << 16 << 20;
+ OFFSET_TEST(QDateTimePrivate, utcOffset) << 20 << 24;
# endif
#else
# ifdef Q_OS_WIN
- QTest::newRow("QDateTimePrivate::m_msecs")
- << int((char *)&p->m_msecs - (char *)p) << 8 << 8;
- QTest::newRow("QDateTimePrivate::m_spec")
- << int((char *)&p->m_spec - (char *)p) << 16 << 16;
- QTest::newRow("QDateTimePrivate::m_offsetFromUtc")
- << int((char *)&p->m_offsetFromUtc - (char *)p) << 20 << 20;
- QTest::newRow("QDateTimePrivate::m_timeZone")
- << int((char *)&p->m_timeZone - (char *)p) << 24 << 24;
- QTest::newRow("QDateTimePrivate::m_status")
- << int((char *)&p->m_status - (char *)p) << 28 << 32;
+ OFFSET_TEST(QDateTimePrivate, m_msecs) << 8 << 8;
+ OFFSET_TEST(QDateTimePrivate, m_spec) << 16 << 16;
+ OFFSET_TEST(QDateTimePrivate, m_offsetFromUtc) << 20 << 20;
+ OFFSET_TEST(QDateTimePrivate, m_timeZone) << 24 << 24;
+ OFFSET_TEST(QDateTimePrivate, m_status) << 28 << 32;
# else
- QTest::newRow("QDateTimePrivate::m_msecs")
- << int((char *)&p->m_msecs - (char *)p) << 4 << 8;
- QTest::newRow("QDateTimePrivate::m_spec")
- << int((char *)&p->m_spec - (char *)p) << 12 << 16;
- QTest::newRow("QDateTimePrivate::m_offsetFromUtc")
- << int((char *)&p->m_offsetFromUtc - (char *)p) << 16 << 20;
- QTest::newRow("QDateTimePrivate::m_timeZone")
- << int((char *)&p->m_timeZone - (char *)p) << 20 << 24;
- QTest::newRow("QDateTimePrivate::m_status")
- << int((char *)&p->m_status - (char *)p) << 24 << 32;
+ OFFSET_TEST(QDateTimePrivate, m_msecs) << 4 << 8;
+ OFFSET_TEST(QDateTimePrivate, m_spec) << 12 << 16;
+ OFFSET_TEST(QDateTimePrivate, m_offsetFromUtc) << 16 << 20;
+ OFFSET_TEST(QDateTimePrivate, m_timeZone) << 20 << 24;
+ OFFSET_TEST(QDateTimePrivate, m_status) << 24 << 32;
# endif
#endif
- }
#ifdef HAS_BOOST
- {
- boost::unordered::unordered_set<int> *p = 0;
-
- auto &table = p->*get(Table());
- QTest::newRow("boost::unordered::unordered_set::size")
- << int((char *)&table.size_ - (char *)p) << 8 << 16;
- QTest::newRow("boost::unordered::unordered_set::bucket_count")
- << int((char *)&table.bucket_count_ - (char *)p) << 4 << 8;
- QTest::newRow("boost::unordered::unordered_set::buckets_")
- << int((char *)&table.buckets_ - (char *)p) << 20 << 40;
- }
+ OFFSET_TEST(Uset, table_) << 0 << 0;
+ OFFSET_TEST(UsetTable, size_) << 8 << 16;
+ OFFSET_TEST(UsetTable, bucket_count_) << 4 << 8;
+ OFFSET_TEST(UsetTable, buckets_) << 20 << 40;
#endif
}
diff --git a/tests/auto/qml/codemodel/check/tst_check.cpp b/tests/auto/qml/codemodel/check/tst_check.cpp
index b5bef43c9e..4c9a8e4d65 100644
--- a/tests/auto/qml/codemodel/check/tst_check.cpp
+++ b/tests/auto/qml/codemodel/check/tst_check.cpp
@@ -36,6 +36,7 @@
#include <qmljs/qmljslink.h>
#include <qmljs/qmljscheck.h>
#include <qmljs/qmljscontext.h>
+#include <qmljs/qmljsmodelmanagerinterface.h>
#include <qmljs/parser/qmljsast_p.h>
#include <qmljs/parser/qmljsengine_p.h>
@@ -57,6 +58,9 @@ private slots:
void test_data();
void initTestCase();
+
+private:
+ ModelManagerInterface m_modelManager; // we indirectly need an instance of the modelmanager
};
tst_Check::tst_Check()
diff --git a/tests/system/shared/build_utils.py b/tests/system/shared/build_utils.py
index 3d1cfdaaa9..964cec2458 100644
--- a/tests/system/shared/build_utils.py
+++ b/tests/system/shared/build_utils.py
@@ -43,10 +43,7 @@ def checkLastBuild(expectedToFail=False, createTasksFileOnError=True):
errors = types.count("1")
warnings = types.count("2")
gotErrors = errors != 0
- if not (gotErrors ^ expectedToFail):
- test.passes("Errors: %s | Warnings: %s" % (errors, warnings))
- else:
- test.fail("Errors: %s | Warnings: %s" % (errors, warnings))
+ test.verify(not (gotErrors ^ expectedToFail), "Errors: %s | Warnings: %s" % (errors, warnings))
# additional stuff - could be removed... or improved :)
test.log("Rows inside issues: %d" % model.rowCount())
if gotErrors and createTasksFileOnError:
diff --git a/tests/system/shared/debugger.py b/tests/system/shared/debugger.py
index cbaf7027eb..9263f52d52 100644
--- a/tests/system/shared/debugger.py
+++ b/tests/system/shared/debugger.py
@@ -141,9 +141,12 @@ def doSimpleDebugging(kitCount, currentKit, currentConfigName, pressContinueCoun
verifyBreakPoint(expectedBPOrder[i])
else:
test.fail('%s' % str(statusLabel.text))
- contDbg = waitForObject(":*Qt Creator.Continue_Core::Internal::FancyToolButton", 3000)
- test.log("Continuing...")
- clickButton(contDbg)
+ try:
+ contDbg = waitForObject(":*Qt Creator.Continue_Core::Internal::FancyToolButton", 3000)
+ test.log("Continuing...")
+ clickButton(contDbg)
+ except LookupError:
+ test.fail("Debugger did not stop at breakpoint")
waitFor("str(statusLabel.text) == 'Running.'", 5000)
timedOut = not waitFor("str(statusLabel.text) in ['Running.', 'Debugger finished.']", 30000)
if timedOut:
diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py
index 93b5155c82..f21fdf7201 100755
--- a/tests/system/suite_HELP/tst_HELP02/test.py
+++ b/tests/system/suite_HELP/tst_HELP02/test.py
@@ -58,7 +58,7 @@ def checkQtCreatorHelpVersion(expectedVersion):
'Qt Creator Manual %s' % expectedVersion,
'Verifying whether manual uses expected version.')
except:
- test.xverify(False, "Missing Qt Creator Manual (QTCREATORBUG-13233).")
+ test.fail("Missing Qt Creator Manual.")
def setKeyboardShortcutForAboutQtC():
invokeMenuItem("Tools", "Options...")
diff --git a/tests/system/suite_debugger/tst_cli_output_console/test.py b/tests/system/suite_debugger/tst_cli_output_console/test.py
index 2356aca08b..97dd1a6937 100644
--- a/tests/system/suite_debugger/tst_cli_output_console/test.py
+++ b/tests/system/suite_debugger/tst_cli_output_console/test.py
@@ -29,7 +29,7 @@ project = "untitled"
def main():
if platform.system() == "Darwin" and JIRA.isBugStillOpen(6853, JIRA.Bug.CREATOR):
- test.xverify(False, "This test is unstable on Mac, see QTCREATORBUG-6853.")
+ test.xfail("This test is unstable on Mac, see QTCREATORBUG-6853.")
return
outputQDebug = "Output from qDebug()."
outputStdOut = "Output from std::cout."
diff --git a/tests/system/suite_debugger/tst_qml_locals/test.py b/tests/system/suite_debugger/tst_qml_locals/test.py
index e7a4afbc4d..161a7bcb0c 100644
--- a/tests/system/suite_debugger/tst_qml_locals/test.py
+++ b/tests/system/suite_debugger/tst_qml_locals/test.py
@@ -28,7 +28,7 @@ source("Tree.py")
def main():
if os.getenv("SYSTEST_OPENGL_MISSING") == "1":
- test.xverify(False, "This test needs OpenGL - skipping...")
+ test.xfail("This test needs OpenGL - skipping...")
return
projName = "simpleQuickUI2.qmlproject"
projFolder = os.path.dirname(findFile("testdata", "simpleQuickUI2/%s" % projName))
diff --git a/tests/system/suite_debugger/tst_simple_analyze/test.py b/tests/system/suite_debugger/tst_simple_analyze/test.py
index 483f782920..d7f6b9b4b7 100644
--- a/tests/system/suite_debugger/tst_simple_analyze/test.py
+++ b/tests/system/suite_debugger/tst_simple_analyze/test.py
@@ -78,7 +78,7 @@ def performTest(workingDir, projectName, targetCount, availableConfigs):
selectFromCombo(":Analyzer Toolbar.AnalyzerManagerToolBox_QComboBox", "QML Profiler")
recordButton = waitForObject("{container=':DebugModeWidget.Toolbar_QDockWidget' "
"type='QToolButton' unnamed='1' visible='1' "
- "toolTip?='*able profiling'}")
+ "toolTip?='*able Profiling'}")
if not test.verify(recordButton.checked, "Verifying recording is enabled."):
test.log("Enabling recording for the test run")
clickButton(recordButton)
diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py
index 205ef99cfc..acbcd4a626 100644
--- a/tests/system/suite_debugger/tst_simple_debug/test.py
+++ b/tests/system/suite_debugger/tst_simple_debug/test.py
@@ -52,6 +52,9 @@ def main():
if result:
expectedBreakpointsOrder = [{os.path.join(workingDir, projectName, "main.cpp"):8},
{os.path.join(workingDir, projectName, "main.qml"):10}]
+ if JIRA.isBugStillOpen(15806):
+ test.xfail("Breakpoint in QML file won't be hit (QTCREATORBUG-15806).")
+ expectedBreakpointsOrder = expectedBreakpointsOrder[:-1]
# Only use 4.7.4 to work around QTBUG-25187
availableConfigs = iterateBuildConfigs(len(checkedTargets), "Debug")
progressBarWait()