* updated java indexer dependencies
* replaced old gradle tooling jar that is shipped with Sourcetrail because it is not working for new JRE versions anymore
* fixed crash in Java indexer
* added language standard sleection for Java 13, 14 and 15
* fixed console logging for recent jdk versions
boost::filesystem::canonical causes issues on Windows and will throw an exception if path is too long. Now those paths will be ignored by the indexer because boost::filesystem::exists returns false.
The old implementation produces several multi-inheritance edges between
two classes if there are multiple inheritance paths between them due to
multiple inheritance diamonds. The new implementation produces only one
edge in such a case.
Also, the old implementation has performance issues when there is a huge
number of inheritance paths starting at the focused class. With a
pathological multiple inheritance class structure, the number of paths
can be exponential in the number of involved classes. The new
implementation solves this issue by considering subgraphs instead of
paths.
The following is a small problematic example, which does not show the
performance problem due to its small size. However, when focusing on
X::foo, the old implementation produces 4 different multi-level
inheritance edges from X to B1 while the new implementation produces
only one multi-level inheritance edge, which is basically the union of
the edges of the old implementation:
struct B1 {
virtual void foo() = 0;
};
struct C1 : B1 {};
struct D1 : B1 {};
struct B2 : C1, D1 {};
struct C2 : B2 {};
struct D2 : B2 {};
struct B3 : C2, D2 {};
struct X : B3 {
void foo() override {};
};
int main () {
X x;
x.foo();
return 0;
}
* changed implementation of executeProcess
* unified all different implementations of executeProcess
* separated arg list from command for all calls of executeProcess (this also required to remove quotes that were added to path args because otherwise the Python indexer would mistake absolute paths for relative paths.)
* update expected output for custom command tests
The non-QStringList variant of QProcess::start() was removed in Qt 5.15.
The adapted method handles escaping of the arguments, which simplifies
code in some locations.
* Only retrieve FilePath::wstr once per checked FilePath
* Replaced all invokation of FilePathFilter::isMatching with FilePathFilter::areMatching
* Don't pass match to std::regex_match
* set 'optimize' flag on regexes
partly fixes#1007
Switch from using boost::filesystem::portable_name and boost::filesystem::portable_directory_name to using boost::filesystem::windows_name, which allows periods and spaces in paths.
Fixes#957
* Fixed tooltip list items not activated on click
* Fixed crash when clearing focused graph edges after displaying graph with no edges
* Updated and fixed manual graph view tests
* Fixed previous location refocused when activating local symbol
* Fixed crash in graph view after showing empty graph
Scroll graph area with Ctrl + Arrows
Moved graph zoom to Ctrl + Shift + Up/Down
Scroll code area with Ctrl + Arrows
Fixed graph showing focus when activating the active symbol
Made links in project description focus-able
Fixed parent graph node not showing focus after hovering edge to child node
* switch focus between views with Tab
* move focus within views with WASD/HJKL/Arrows
* move focus between graph edges by holding Shift
* move focus between code references by holding Shift
* removed graph panning with WASD and moved zooming to Alt + W/S
* removed graph navigation by pressing starting character in graph view lists
* changed local reference and custom trail shortcuts
* updated Keyboard Shortcuts window
* use common back and forward shortcuts and YZ & Shift + YZ
* fix macOS issue where widgets don't get proper focus after creating a new tab
* don't use shared_ptr in QtMainView
fixes#486, #327, #214, #210
* Fix some more clazy-qstring-allocation warnings
* Fix missing refs on large types in lib_gui
* Fix trivially copyable types being passed by ref in lib_gui
Separated UI refresh into 'style' and 'state' refresh to avoid race condition between task scheduler thread and UI thread that affected code view state.
fixes#916
* fixed Source Group setup from Visual Studio Extension
* fixed crashes in project setup due to use of std::shared_ptr
* fixed source file count not updated on 'show files' click
* fixed passing wheel events to parents when list boxes can't handle them
* removed QtSourceGroupWizard, QtSourceGroupWizardPage and context types
* removed isInForm flag of QtProjectWizardContent
* added check of empty source paths
* set project window as parent for message boxes, so they don't get hidden behind main window
* fixed issues when removing and duplicating source groups
* updated project setup tests to no steps
Fixed an endless recursion that happenes when the index contains cyclic inheritance relationships,
which might accidentally appear due to name collisions.
* Added utilities::caseInsensitiveLess to compare two wstring arguments
* Replaced less comparision method in DummyNodeComp.
* Added tests for caseInsensitiveLess.