Commit Graph

57165 Commits

Author SHA1 Message Date
Christian Stenger
2cf2cebfc9 Avoid enabling all message types by default
Passing no QtMsgType parameter ends up in enabling all
message types by default.
Follow the common pattern of only enabling the warnings
by default.

Change-Id: Ic7ec0420089c95f716a86feb9791d9cb13f4dd90
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-11-06 09:40:05 +00:00
David Schulz
e18cbad285 LSP: Inform user about an unexpected server finish without restart attempt
A message is already printed after an unexpected finish with restart attempt.
Without this last message it looks like Qt Creator still tries to restart
the server.

Change-Id: I47dd3e768d061a7d039ee3f125368c6e166ebf81
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-11-06 07:58:13 +00:00
hjk
2556d4b44b Debugger: Implement disabling/enabling subbreakpoints with LLDB
Change-Id: Iaad8716b98d632e5a933b7f5b26549c7cb885ea7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-11-06 07:37:15 +00:00
Orgad Shaneh
3e42841141 ProjectExplorer: Remove default value from userJobCount
It is set to QThread::idealThreadCount() by the application.

Change-Id: I63f5132513d94f184c34d1c9611ca882a5028995
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-11-05 19:54:58 +00:00
Eike Ziller
183cfb0772 Make the currently visible debugger UI define the behavior of F5
That fixes the behavior of F5 for the debuggers which were not started
directly with a run configuration (attach, debug external application).
It has the disadvantage that it is only possible to start another
application in the debugger after switching to the "Debugger Preset",
even after you switch the startup project.

Fixes: QTCREATORBUG-21261
Change-Id: Id4d4c81920939af2b34b462d87c815719bed6aff
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-11-05 17:44:04 +00:00
Ivan Donchevskii
06162c1aa5 CompilationDatabase: Use QJsonDocument for separate objects
It is pretty easy to split objects without QJsonDocument help.

Due to the QJsonObject data size restriction use it
only for the already split objects inside the database.

Change-Id: Ice7c7407ad00aaac151a767f4d943fdcecf6a6b8
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2018-11-05 15:51:28 +00:00
Ivan Donchevskii
7f67e987ea CompilationDatabase: Add folders to Project view
Change-Id: I4cd480535c203aa923b27596ea4ca74f83c12a9e
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-11-05 15:51:12 +00:00
hjk
595824d17b Debugger: Remove unused DebuggerEngine::handleCommand declaration
Change-Id: I0af285fa6284c31cbc5fc8d91ec4ab9a61aade5c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-11-05 15:48:32 +00:00
hjk
e24335e8a6 Debugger: use requested file and line for pending breakpoints
Otherwise markers will not be shown. This fixes the visual aspect of
the referenced tasks. Choosing a specific engine if more than one is
running is still not possible.

Task-number: QTCREATORBUG-21361
Task-number: QTCREATORBUG-21330
Change-Id: I5e31adf43ca8a57add83166b307434122498f1e6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2018-11-05 15:46:03 +00:00
Ivan Donchevskii
6dc2da9413 ProjectExplorer: Parse macros when clang-cl exits with non-zero code
clang-cl still provides the list of macros even if it reports
some option being not supported. Try to parse the output
even in such cases.

Change-Id: I4fa070c7c465166fdf70c03944b2713478acba13
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-11-05 12:55:39 +00:00
Christian Stenger
c355379a01 Tests: Fix disassembler auto test
Output has changed with 06a78b6264.

Change-Id: I32d401bf1111fe037b04873ff223cb916b4f886e
Reviewed-by: hjk <hjk@qt.io>
2018-11-05 10:07:59 +00:00
Alessandro Portale
d66f459011 LanguageClient: Improve Options icon
Fits a bit better to the other icons.

Change-Id: Ie73740a858a0683acb18ecf30d01fb816d928db3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-11-05 10:07:07 +00:00
Christian Stenger
88a6276551 LSP: Avoid crash in shutdown
Having a corrupt language server might end up in a double
delete when closing the client.

Change-Id: I23e02d666d6c070a9f4b33605782fe875c5cabe6
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-11-05 09:33:48 +00:00
Christian Stenger
02760eafc8 LSP: Fix auto tests for Linux and macOS
Some URI/URL functionality (especially file protocol)
is based on the underlying file system and operating
system respectively.

Change-Id: I6a0956bbef292ff964aec581c2555c54d6d0dbe3
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-11-05 09:33:30 +00:00
David Schulz
52cfa8b6f8 LSP: forcefully close language server after 3 seconds on shutdown
When closing Qt Creator a message is send to the server requesting to
shutdown. Waiting an undefined amount of time for the response could
result in a never closing Qt Creator.

Change-Id: If09a32d34c546ae4702669d65e4921873e5658ea
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-11-05 08:00:44 +00:00
Orgad Shaneh
a82dd10518 Git: Enable renaming local branches by direct editing
Change-Id: I7edab94d949a6e48642f280af52fd156c803cafb
Reviewed-by: André Hartmann <aha_1980@gmx.de>
2018-11-04 20:37:44 +00:00
Vikas Pachdha
1f1149bb58 Android: Update NDK documentation
Qt Creator now uses Clang tool chain and latest NDK can be used
to build the applications now so no need to recommend version 10e

MinGW dependency is not required anymore as make is also used
from the NDK

Task-number: QTCREATORBUG-11846
Change-Id: I535aeebc52fc67025a73b37bee4079ef7704cd7d
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-11-02 15:45:28 +00:00
Vikas Pachdha
de97b8cf3e Android: Auto detect clang toolchains
Remove GCC auto detection
Make Clang toochain default for Android
Remove auto detected toolchains from old NDK

Task-number: QTCREATORBUG-11846
Change-Id: I618e6f8eda4f24f498260b8de778ef543311acd1
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-11-02 15:10:50 +00:00
Vikas Pachdha
dabe72b7bb Android: Remove missing Qt version warning
Task-number: QTCREATORBUG-21421
Change-Id: I1442c574e6d9bcd7e407e07a6ce688ddf45e86f3
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-11-02 15:10:32 +00:00
Thomas Hartmann
c95b21ca17 QmlDesigner: Add some functions to QmlTimelineKeyframeGroup
Also adding some QTC_ASSERTS.

Change-Id: I7dcdac517e850b9b0c7ec9ba7a76effc31766ad9
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2018-11-02 14:44:54 +00:00
Thomas Hartmann
406cb164f9 QmlDesigner: Add const
Since ModelNodes are usually passed per const &,
member functions should be const.

Change-Id: I28fb015ab70978ddc10993585f9c73c3b962aa83
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2018-11-02 14:44:48 +00:00
Ivan Donchevskii
3c3b75cef1 CompilationDatabase: Fix command line parsing
Handle cased when -x{kind} is one option.
Skip -o output files.

Task-number: QTCREATORBUG-18402
Change-Id: Id8a8612bed2db2b35f17b0968a4ff529e7a66194
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-02 14:12:34 +00:00
Nikolai Kosjar
e49e32d2eb C++: Fix Token::spell()
In

  commit 86aab16ea4
  TextEditor: Highlight punctuators as Text

the order of tokens was changed, but the corresponding "spelling table"
token_names was not adapted. As a result, e.g. Token::spell() returned
"##" for the T_PLUS token.

Fixes

  FAIL!  : tst_Semantic::lambda_2() Compared strings are not the same
  FAIL!  : tst_Semantic::enum_constantValue4() Compared strings are not the same
  FAIL!  : tst_Semantic::enum_constantValueNegative() Compared strings are not the same
  FAIL!  : tst_Semantic::enum_constantValueNegative() '!expectedConstantValue' returned FALSE. ()
  FAIL!  : tst_Semantic::enum_constantValueNegative() '!expectedConstantValue' returned FALSE. ()
  FAIL!  : tst_Semantic::enum_constantValueNegative() '!expectedConstantValue' returned FALSE. ()

Change-Id: If4c676bdb963f53fbc57f7d92f3d68341dd51eda
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-11-02 14:12:15 +00:00
Thomas Hartmann
6e7ecdb4f1 QmlDesigner: Ignore certain auxiliary data names when saving
Properties with the postfix '@internal' are not stored in the
QML file. Therefore they are not persistent.

Change-Id: I1f726c029f9db8c00bc85dc11c276c098e9a2a3a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2018-11-02 13:56:39 +00:00
Ivan Donchevskii
fb25bd53c1 CompilationDatabase: Create target in the same thread
Causes a warning otherwise.

Change-Id: I040c3298e7c0898364b49ff4c6605f11f01c538f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-02 13:37:13 +00:00
Christian Stenger
6cdcae528d Squish: Ensure text cursor has safe position
When re-opening a file that had been opened and closed inside
the current active session we open the file at the last used
editor position.
Provide a function to explicitly jump to the first line of an
editor.

Change-Id: I0602d8ef46e80a20385fd1b205812776d6666326
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2018-11-02 12:02:42 +00:00
Christian Stenger
42ced7ac94 Squish: Test latest added pasting service
Change-Id: I2b062a3c3c0ad172e0f5ad3b37262c9278351a48
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2018-11-02 12:02:35 +00:00
Andre Hartmann
a59097086b CppLocatorFilter: Fix result sorting
* Fix rating items with startsWith()/contains() higher
* Rate matches in function parameter list lower

Task-number: QTCREATORBUG-19377
Change-Id: I2ea4c3ba96cd086aef82627326fa0888f700850f
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-02 09:32:41 +00:00
Nikolai Kosjar
a80396f807 C++: Reformat token_names table
Token::spell() uses CPlusPlus::Kind as index into token_names. However,
checking whether CPlusPlus::Kind matches token_names is easier if it's
formatted in a similar way.

Change-Id: I3f32b72cf9508c2ea3a4fe6911c3853c309d9e9f
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-11-02 08:46:21 +00:00
Ivan Donchevskii
38d39fb9f0 CompilationDatabase: Add target to the compilation database project
Target exposes information about kit and toolchain to the outside
and enables tools like Clang-Tidy and Clazy.

Change-Id: I27b73bbb3b810789f6ca3d447b744604f8e61286
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-02 06:59:43 +00:00
Leena Miettinen
5f008c9cfd Doc: Describe scheduled updates
Change-Id: I0003d3689978dca2b79d594de2af2bf6b5034332
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2018-11-01 15:13:11 +00:00
Ivan Donchevskii
f604c8a77c CompilationDatabase: Support both code models
Extract headers, defines and fileKind from flags in
order to have complete project parts.

Side-effect: better support for MSVC-specific flags.
Change-Id: Iaa1413c91c96c3cf89ddbe76a7a1f0f46c5289c0
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-01 14:52:05 +00:00
Ivan Donchevskii
cb75aa3e58 ProjectExplorer: Make setRequiredKitPredicate protected
Allow inhereted projects to set the required kit predicate.

Change-Id: I9b8568061c8a93ff965fa10684854420198cd1f8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-01 14:39:35 +00:00
Nikolai Kosjar
0d29fea0b3 C++: Fix parsing enum specifier III
This amends the obviously wrong
aac1bebace.

Fixes

  FAIL!  : tst_Semantic::q_enum_1() Compared values are not the same
  FAIL!  : tst_CheckSymbols::test_checksymbols(EnumerationUse) 'resultCount > 0' returned FALSE. ()
  FAIL!  : tst_CheckSymbols::test_checksymbols(VariableHasTheSameNameAsEnumUse) Compared values are not the same
  FAIL!  : tst_CheckSymbols::test_checksymbols(enum_inside_block_inside_function_QTCREATORBUG5456) Compared values are not the same
  FAIL!  : tst_CheckSymbols::test_checksymbols(enum_inside_function_QTCREATORBUG5456) Compared values are not the same

  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_block_inside_function) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_block_inside_function_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_function) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_function_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_class) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_class_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_namespace) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_namespace_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_member_function) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_member_function_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_in_class_accessed_in_member_func_inline) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_in_class_accessed_in_member_func) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter(CppLocatorFilter-filtered) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_cpplocatorfilters_CppCurrentDocumentFilter() Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_builtinsymbolsearcher(BuiltinSymbolSearcher::AllTypes) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_builtinsymbolsearcher(BuiltinSymbolSearcher::Enums) Compared lists have different sizes.

Task-number: QTCREATORBUG-21413
Change-Id: I71ace00091e37f0a148086e5047efaec08923b1a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-11-01 14:29:52 +00:00
Robert Loehning
0bc120b87c Squish: Remove redundant line
Change-Id: I819ace3fc7c3223c5bcd52377db3e7833371c7ec
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-11-01 13:56:47 +00:00
Ivan Donchevskii
f91862a212 ProjectExplorer: Get predefined clang-cl macros in g++ and cl driver modes
By default clang-cl accepts only MSVC-style compile flags.
However it's possible to run it with gcc-style flags when
--driver-mode=g++ is set.

With this change clang-cl is run in order to get proper
predefined macros for both cases.

Change-Id: I248d411561a503a60385b3a3106beecb38f3d063
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-11-01 10:45:27 +00:00
Ivan Donchevskii
b97d4c2f80 Clang: Check that file kind matches the language version
It was checked that pure C header and source files had proper
language version but not another way around.

Change-Id: I1eaf41f342731bdbe30ee73e81144334d0f15d19
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-01 10:04:24 +00:00
Ivan Donchevskii
cb9df98efb CompilationDatabase: Fix escaped quotes handling
Change-Id: Iaecd38f921bd719899e478a76d8a8b9d4230a7cc
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-01 10:02:53 +00:00
Ivan Donchevskii
1442a1186d ProjectExplorer: Fix typo in findNodes
It makes sense to add all matching child nodes for the folder
instead of the only one which can even be nullptr.

Change-Id: I134a8073cfae557db2cb44c313239f18b97bda97
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-11-01 09:13:21 +00:00
Oliver Wolff
181b935c69 winrt: Remove --install from winrtrunner's default run arguments
Passing --install to winrtrunner on run will cause the application to be
reinstalled if it was installed before. This reinstallation will result
in a clean sandbox so that all previously saved data will be lost.

If the user needs described behavior he can use the existing "Uninstall
package after application stops" aspect from the run configuration.

Change-Id: I5b5975fb4646a625bfc86975770a1860effcfc06
Fixes: QTCREATORBUG-20208
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-11-01 07:02:41 +00:00
Oliver Wolff
e0b0c30748 winrt: Code cleanup
Replace 0 with nullptr where applicable
Initialize members in declaration

Change-Id: I3d8bae845be01e27db2c591f8037d3823f25f67d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2018-11-01 07:02:37 +00:00
Nikolai Kosjar
d52ac9a708 Clang: Fix unresolved #includes for ui_*.h headers
...with an extra parse.

Previously, the creation of an e.g. "Qt Widgets Application" from the
wizard could show code model errors in mainwindow.cpp. Depending on
timing issues, the first error is either

  1. 'ui_mainwindow.h' file not found (QTCREATORBUG-15187)
    The parse happened before the in-memory ui_mainwindow.h was
    generated by uic. The file system watcher can't help here as the
    #include was not resolved successfully. And libclang's reparse does
    not handle this case (it would need to remember all failed #include
    stats...).
    ==> Detect this case with the help of the include paths and trigger
    a full parse.

  2. or: allocation of incomplete type... (QTCREATORBUG-15187)
    The parse happened after the generation of the in-memory
    ui_mainwindow.h, but before the clangbackend received the unsaved
    file.
    ==> Fix this by also writing the content of the unsaved file to our
    behind-the-scenes-created ui_mainwindow.h.

Fixes: QTCREATORBUG-15187
Fixes: QTCREATORBUG-17002
Change-Id: I4f3a81adaa3d604746977a402c29f83fbc5b0e44
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-10-31 10:38:27 +00:00
Sergey Belyashov
91ed30ffac Update Russian translation
Change-Id: I4d94737f7e542c02b9e7137b150c8a4888c36092
Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-10-31 09:44:24 +00:00
Nikolai Kosjar
8bccd8a428 Clang: Do not insert "::" after namespace completion
...as currently libclang does not provide "::" consistently and it
confuses users.

Ideally, once libclang provides it consistently, we probably want to
insert "::", but allow to "overtype" it by the user, similar to what we
do with function parentheses. That is, if the user accepts such a
completion and types "::" due to muscle memory, he should not end up
with "::::".

Change-Id: Ibfd19c22457641956ace0ba976672eddc51ecc88
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-10-30 14:11:35 +00:00
Ivan Donchevskii
b385171eb8 Clang: Don't wrap Qt headers when generating compilation database
This trick is needed only for internal purposes.

Change-Id: Ic10c0898519eed663d14c4b1665a0d6b0d47b4a4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-10-30 13:07:45 +00:00
Ulf Hermann
1b6d57263b Tracing: Force alpha channel of RangeMove into a sane range
We want the range mover to be visible, but not completely opaque and we
don't want to depend on the theme for this. Therefore if the alpha
channel is < 0.3 or or > 0.7 just clamp it.

Change-Id: I4e5ee32bd890dc8db2bc4b9bcd77b4687b23e22d
Fixes: QTCREATORBUG-21402
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2018-10-30 08:29:44 +00:00
Ivan Donchevskii
8ab9b93b79 CompilationDatabase: Fix opening relative file paths
Change-Id: I0d0ac8af9cd48510b8b8a80adfb20b8c526cd2e4
Fixes: QTCREATORBUG-21386
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-10-29 11:45:39 +00:00
Thomas Hartmann
9ab3a69c65 QmlDesigner: Crash fix
This is likely to fix a crash we could only reproduce
with the Qt Design Studio release on one machine.

Task-number: QDS-270
Change-Id: Idc33ba145169613b866903fa5e259f8cd6ec4ee8
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2018-10-29 11:45:30 +00:00
Orgad Shaneh
5b7e0afc10 Revert "Android/ProjectExplorer: Include parameters into quotes"
This is wrong. The executable can contain spaces, so it needs the quotes,
and arguments with spaces are also enclosed with quotes.

This reverts commit 9c5afd8e96.

Change-Id: I9c0d3ae7452170195441d0b47b76b5d16252e2c4
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2018-10-29 11:01:56 +00:00
Thomas Hartmann
4f7d24acb6 QmnlDesigner: Avoid paths starting with '//'
Windows these are interpreted as network hosts
and the timeout when resolving those is way too long.

Task-number: QTCREATORBUG-21372
Change-Id: Ib796473158cec620de26592bf628ab18d676153d
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2018-10-29 10:54:25 +00:00