The Tooling API server (which is executed in a separate process) was not being stopped properly after IToolingApiServer.shutdown() was called. As a result, the Gradle daemon started by the tooling API was not stopped as well.
This commit fixes this issue by properly implementing the shutdown() call in Tooling API. Now, when the user closes a project and the GradleBuildService is destroyed, the Tooling API server stops the Gradle daemon(s) and then shutdowns itself.
This happens because the 'ReferenceProvider' in the Java LSP tries to start another compilation process while working with the current compilation task.
This results in a deadlock where the current task waits for the new compilation request to return and the new compilation request waits for the current task to finish. This commit fixes this issue.
Apart from fixing this issue, this commit also makes the 'Go to definition' and 'Find references' actions cancelable. Also, it eliminates the usage of the deprecated 'ProgressDialog' class for these two actions.
* refactor: A bunch of (mostly XML) styling
* fix(Main Activity): Make use of a dedicated Splash Activity to enable Dynamic coloring in MainActivity
* feat(edge-to-edge): Ground work to support edge-to-edge experiences throughout the IDE
* fix(edge-to-edge): Manually set bottom padding for fragment containment
* feat(edge-to-edge): Allow full activity rebuild on configuration changes for MainActivity. This allows to ship more specific layout changes and is a ground work to support split screen mode.
* Bug introduced: templates are not shown in the TemplateListFragment after full activity rebuild
* fix: Finish the Splash Activity after launching the Main one
* fix(templates): The list of templates no longer disappears after an activity rebuild or a configuration change
* fix(templates): Keep OnGlobalLayoutListener attached while the View is alive. This ensures that the last item in template list is always aligned to the start.
* feat(design): Custom layout for MainActivity's main fragment in landscape mode
* feat(edge-to-edge): Implement edge-to-edge for PreferencesActivity, move InsetUtils outside of the LimitlessIDEActivity.
* refactor(IDEPreferencesFragment.kt): Comply with the line-length rule, fix a one-line if statement to follow the general codestyle
* refactor(edge-to-edge): Remove PaddingUtils.kt
The reasoning behind this is that after `view.setPadding(left, top, right, bottom)` is executed, `view.getPaddingBottom()` (or for any other side) still returns the old value of padding before the view is measured again. Therefore the implementation of PaddingUtils.kt produces an unwanted and unexpected behaviour.
* feat(edge-to-edge): Create a BottomInsetHeightDistributor view
* fix(templates/design): Use OutlinedButton style for the *Exit* button inside the *New project* wizard's footer
* refactor: Comply with AndroidIDE's code style
* refactor: Make use of helper methods. Optimize XML
* fix(edge-to-edge): Wrong system bar coloring in Dark Mode
* Implement a preference to always show the File Tree action in the toolbar
* Create the ExtendedMenuToolbar which tries to keep as many actions as possible outside of the overflow menu
* Repurpose the show-file-tree-button preference into hide-file-tree-button. Reason: the button is always technically shown, especially if we consider users with large screens.
* Move ExtendedMenuToolbar.kt into com.itsaky.androidide.ui in :common. Fix resource compilation error by escaping the apostrophe.
* Check whether the gesture navigation is enabled for setting the default value of idepref_editor_hide_file_tree_button
* Remove an unnecessary onAttachedToWindow() override