It may happen that still running LocatorMatcher is destructed
from the LocatorWidget destructor (i.e. from CorePlugin d'tor).
In this case the global future synchronizer is already reset,
so the d'tor of ResultsCollector can't put running deduplicator
task into the global synchronizer.
Check this case and place the deduplicator task into the global
future synchronizer only when it still exists. Otherwise, blocking
wait for the deduplicator to finish.
Change-Id: Ie788db923808dd91bdfdc4f1f53d336baf7c672a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
fakevimhandler.{h,cpp} are meant to be re-usable outside of Qt Creator.
Amends 91605c3.
Change-Id: I569a393d13049ef92ed3ef0c4f69de5232b2fa32
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
layoutbuilder.{cpp,h} can now be re-used outside Creator
Change-Id: I306d2d8168d8a09658ea008f4606ca37a0dbbc01
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Test, that it's possible to distribute the barrier advance
in multiple tasks.
The barrier passes after the both advances are triggered.
Change-Id: Ica58f9657ecdf1ba45e1059ea47be0453948e7b9
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
A preparation step before adding new barrier tests.
Change-Id: I83aa8a7788859f98c98885384b52dc3377e01916
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Adapt the TaskTree tests and the usage in FileStreamer.
The FileStreamer may be tested by running the
FileSystemAccessTest.
Change-Id: I1d8086dd359c458b7bdd3d4d47cf249184b04c65
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
* Changed signals to callbacks as only one receiver was ever added
* Added "tabPressedInInsertMode" callback to allow accepting
a suggestion with the Tab Key
Fixes: QTCREATORBUG-28830
Change-Id: Ie70ba595b8802b6100fff495164d8e0471b1354c
Reviewed-by: hjk <hjk@qt.io>
Block suggestions when FakeVim is enabled and the mode
is not "Insert" or "Replace".
Change-Id: I778eb25d9570b76e42652f9d938a8c580033c462
Reviewed-by: David Schulz <david.schulz@qt.io>
This primitive is going to replace the TaskTree's built-in
mechanism consisting of Wait, Condition and ConditionActivator
elements.
When combining 2 barriers, one placed in a custom storage,
and the other in a tree, it's possible to fully substitute
the Wait, Condition and ConditionActivator with the comparable
amount of code.
However, the Barrier is much more versatile, since it
makes it possible to:
1. distribute the decision about the ultimate barrier pass on the
whole tree.
In order to utilize it, increase the limit of the shared barrier
with setLimit() to the expected number of places that participate
in the decision about the ultimate barrier pass and use advance()
from multiple places in the tree. When the number of calls
to advance() reaches the limit(), the shared barrier passes
automatically.
Whenever some participant failed, so that the shared barrier
can not be passed, it may call stopWithResult(false).
Whenever some other participant decided that all the needed
data are already collected, so that the barrier may pass early,
it may call stopWithResult(true), making the remaining calls to
advance no-op.
2. wait for the same barrier from multiple places.
Before, only one WaitFor was possible for a single Condition.
3. insert multiple Barriers into one Group element.
Before, only one WaitFor could be placed in a single Group.
Provide ready-made SingleCondition and waitFor() helpers.
With the new approach, the following equivalents are provided:
- SingleBarrier (substitutes old Condition)
- WaitForBarrier() (substitutes old WaitFor)
- Barrier (substitutes old ConditionActivator)
This change replaces the mechanism introduced in
29f634a8ca.
This change conforms to the naming scheme proposed in QTCREATORBUG-29102.
Task-number: QTCREATORBUG-29102
Change-Id: I48b3e2ee723c3b9fe73a59a25eb7facc72940c3b
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
It's a common mistake to forget to insert the Storage
element into the tree, but reuse it from inside running
handlers.
This message should help in quick fixing the issue.
Change-Id: I771e89b06943667b56188d0655ec3da1b48f8a34
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Instead of using QtcProcess. In this way the tests may be
executed much faster, since there is no need to start
qtcreator_processlauncher.
This should limit the CI failures caused by timeout when
executing these tests.
Remove testapp, unneeded now.
Change-Id: I80775276c2aaec7c2d463b1ac25010efa942b258
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Don't leave the partially updated cache when the generate()
method was canceled. Before, it was possible that only
m_filePaths were updated, without updating m_lastInput and
m_cache, what could leave the cache in inconsistent state.
Remove unneeded namespace qualifier.
Some doc fixes.
Amends 19918129bf
Change-Id: Icef6389f45f0699d851ce412f134c93353728338
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This test corresponds to the old test for BaseFileFilter.
Change-Id: If1e775f0f8490943ff41fb6a7ccc4069914fe1f2
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
It's going to be used as a BaseFileFilter replacement.
Add docs for it.
Change-Id: I20a52d948373238b07db6cbe1bbadf8c648ae3bf
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
That's rarely resulting in an actual change, but fairly expensive
and triggered often, even when not actively using Qnx.
Change-Id: I784bc7fa4919bf48711036d655e8246805aa578b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
QTextLayout::lineForTextPosition can return invalid lines,
which when accessed may crash. To workaround we add
QTC_ASSERT to guard against this (see linked issue crash report)
Fixes: QTCREATORBUG-28837
Change-Id: I66d8d8a46e766caa492ec2178b1fa88e35211333
Reviewed-by: David Schulz <david.schulz@qt.io>
It was already possible to create files, so add the option to create
directories instead.
Change-Id: I2e70dba0015ab30b1757f09c74eb2c2dd0db296b
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Remove no longer necessary bool return value from onSetup
functions and from refresh recipe functions,
see df5e3c587a.
By default, when no return bool is specified inside a function
passed to Sync element, it's assumed that the return value is true.
Eliminate passing "=" captures in 2 lambdas.
Change-Id: I5005821444a386f70c0f05322812f98d3fd49926
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Make it possible to pass a void returning function to the
Sync constructor. In this case it's assumed that function
returns true by default and finishes successfully.
Add some helpful error messages when requirements for the
passed function are not met.
Change-Id: I8be75acd277d06e87db3c87a6eb96173aa9cd890
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Print a warning in case of an invalid regular expression
and do not apply it to the settings.
This silently drops invalid regular expressions entered
and restored from settings.
Change-Id: I2f7686066541cf2307cf7cf96b3c6f89f6a677d8
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Less boilerplate for the implementation add user code access to
IOptionPage::{apply,finish} is planned to be removed.
Change-Id: Id8ec4006d1060be2032caf8eda6bf80760f6db22
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>