This amends 96be267a6e, which contained a
wrong assumption: Just because a ClangdClient has an associated project
does not mean that all documents currently open in this client belong to
its project. The opposite often happens at session loading. For example:
- We load a session with two projects.
- Qt Creator restores the documents and starts loading the projects.
- The latter happens asynchronously and takes longer, so initially
the fallback client claims the documents.
- The smaller project finishes first and now grabs all the open
documents whose files belong to it, as well as those that don't
correspond to any project (as per
8ad7ab2d2a).
This includes all documents belonging to the second project,
because that one has not finished loading yet, so its files are
not associated with a project at the moment.
- Finally the second project finishes loading. Now we must
"steal back" all its documents that are currently open in the
first ClangdClient. This is what this patch does.
We also now explicitly close the document in the previous client as part
of the hand-over, which is conceptually the right thing to do and should
eliminate any potential "ghost diagnostics".
Change-Id: I3d9f5ce503cc7ee47ece757d81851b85a16b639d
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Schulz <david.schulz@qt.io>
It looks like the cookie set inside GitClient::vcsExecAbortable()
is never read back again. The only place where we connect to
finished() signal of the command returned by vcsExecAbortable()
is GitClient::pull(), however, we ignore the cookie there.
Change-Id: Iaec08b255309ea406e45695231fe9849d5dc7285
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Don't use setCookie() for setting the push failure status.
Introduce a PushHandler helper that keeps the data collected
when stdErrText() signal is emitted and reuse it when
finished() is being called. Move m_pushFallbackCommand
field into the helper, as its value is meaningful only
in context of the invoked command.
Hide PushFailure enum inside PushHandler.
Change-Id: Id21457734f32e06bb130c3c07c24cb2b7af6e466
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Consistent with the rest.
Change-Id: Ia6ac7476e8b22ca1bf65005dcb4c5a7a2bcc50ac
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Don't use setCookie() for setting the line number
to be shown on annotation. Add setDefaultLineNumber()
setter to VcsBaseEditorWidget instead.
Change-Id: I6c52874d48532132a27b2a7a9d161705170f7ade
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
The preprocessor operates on QByteArray, making it less
convenient to use strings helps preventing accidental
conversion roundtrips.
Change-Id: Ifb2068a8fed137c52b05f2979b99cbce3462151e
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
If browser model is not cleared, subsequent project open may crash.
Fixes: QDS-7194
Change-Id: Ic897086c8da1f774ff035af9e2bcaa378bff3af5
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Remove the closed document from the container that tracks document
modifications to prevent accessing a deleted document.
Change-Id: Iafba8ad3ce054761017a8feca28fdc4c8b379ef6
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Now relay on clang/Format.h file not on ClangFormatStyleOptions.rst.
The information from Format.h is more complete, reliable and easy
parsable.
Change-Id: I96899257f5fd075bfd6e51c5a4fa70a614c32398
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
The only 2 handlers were taking it into account and
they interpreted the non-zero exit code as a failure,
so basically they repeated the work of default
exitCodeInterpreter.
Change-Id: I9848ef0cf5ca9017f02a02ae59dc09ec426f7626
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This function showed up with >8% in a debug build when playing around.
Save a few cycles on repetive creation and destruction.
Change-Id: I56ecb7719d60cfe92ef3279a871051009c666b56
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Before we add new members the simple getter and setter without value are
removed because the model provides capsulation.
To remove the weak pointer workaround std::enable_shared_from_this is
used which makes the class aware of its shared pointer. For that we
change to std::shared_ptr
Task-number: QDS-7343
Change-Id: Ic5f14ba8c1fd7af7633b8decb413538ee01c90d6
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Don't iterate the list, but look up in the hash.
Implicitly improves performance of text mark creation.
Change-Id: Ic1f7e118b96f81bb5922a94039d3d85027a118a5
Reviewed-by: hjk <hjk@qt.io>
The recentProject list was retrieved for every ::data and ::rowCount
call. This triggered QFileInfo.exists call for each project
which was expensive. This fixes that so that the recent projects
are only filtered once for each model reset.
Change-Id: I6ce33a13c2446bece5b7dac1563ffa7bdc85bbaa
(cherry picked from commit 859f146760)
Reviewed-by: Eike Ziller <eike.ziller@qt.io>