diff --git a/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt b/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt index 528eb13e2..c1fa8c027 100644 --- a/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt +++ b/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt @@ -41,7 +41,7 @@ import java.util.concurrent.ConcurrentHashMap class DefaultActionsRegistry : ActionsRegistry() { private val log = ILogger.newInstance("DefaultActionsRegistry") - private val actions = ConcurrentHashMap>() + private val actions = ConcurrentHashMap>() private val listeners = mutableSetOf() init { @@ -50,15 +50,15 @@ class DefaultActionsRegistry : ActionsRegistry() { override fun getActions(location: ActionItem.Location): MutableMap { if (actions[location.id] == null) { - actions[location.id] = hashMapOf() + actions[location.id] = java.util.LinkedHashMap() } return actions[location.id]!! } override fun registerAction(action: ActionItem): Boolean { - val actionsAtLocation = getActions(action.location) - actionsAtLocation[action.id] = action + val actions = getActions(action.location) + actions[action.id] = action return true } diff --git a/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt index a9d43dac8..aaee5e76e 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/editor/BaseEditorActivity.kt @@ -73,7 +73,6 @@ import com.itsaky.androidide.lsp.models.DiagnosticItem import com.itsaky.androidide.models.DiagnosticGroup import com.itsaky.androidide.models.LogLine import com.itsaky.androidide.models.OpenedFile -import com.itsaky.androidide.models.OpenedFilesCache import com.itsaky.androidide.models.Range import com.itsaky.androidide.models.SearchResult import com.itsaky.androidide.projects.ProjectManager.getProjectDirPath @@ -86,7 +85,6 @@ import com.itsaky.androidide.ui.editor.CodeEditorView import com.itsaky.androidide.uidesigner.UIDesignerActivity import com.itsaky.androidide.utils.ActionMenuUtils.createMenu import com.itsaky.androidide.utils.DialogUtils.newMaterialDialogBuilder -import com.itsaky.androidide.utils.EditorActivityActions.Companion.register as registerActivityActions import com.itsaky.androidide.utils.ILogger import com.itsaky.androidide.utils.InstallationResultHandler.onResult import com.itsaky.androidide.utils.SingleSessionCallback @@ -161,7 +159,7 @@ abstract class BaseEditorActivity : protected abstract fun doSaveAll(): Boolean protected abstract fun doDismissSearchProgress() protected abstract fun doConfirmProjectClose() - protected abstract fun getOpenedFiles() : List + protected abstract fun getOpenedFiles(): List protected open fun preDestroy() { viewModel.isConfigChange = !isDestroying @@ -236,8 +234,6 @@ abstract class BaseEditorActivity : setupContainers() setupDiagnosticInfo() - registerActivityActions(this) - uiDesignerResultLauncher = registerForActivityResult(StartActivityForResult(), this::handleUiDesignerResult) } @@ -260,11 +256,6 @@ abstract class BaseEditorActivity : override fun onResume() { super.onResume() - // Actions are cleared when the activity is paused to avoid holding references to the activity - // So, when resumed, they should be registered and inflated again. - // Actions are cleared when the activity is paused to avoid holding references to the activity - // So, when resumed, they should be registered and inflated again. - registerActivityActions(this) invalidateOptionsMenu() try { @@ -365,7 +356,7 @@ abstract class BaseEditorActivity : } open fun showDaemonStatus() { - val shell = app.newShell{ t -> getDaemonStatusFragment().append(t) } + val shell = app.newShell { t -> getDaemonStatusFragment().append(t) } shell.bgAppend(String.format("echo '%s'", getString(string.msg_getting_daemom_status))) shell.bgAppend( String.format("cd '%s' && sh gradlew --status", Objects.requireNonNull(getProjectDirPath())) @@ -492,7 +483,7 @@ abstract class BaseEditorActivity : viewModel._isBuildInProgress.observe(this) { onBuildStatusChanged() } viewModel._isInitializing.observe(this) { onBuildStatusChanged() } viewModel._statusText.observe(this) { binding.bottomSheet.setStatus(it.first, it.second) } - + viewModel.observeFiles(this) { files -> binding.apply { if (files == null || files.isEmpty()) { @@ -504,7 +495,7 @@ abstract class BaseEditorActivity : } } } - + setupNoEditorView() setupBottomSheet() @@ -688,4 +679,4 @@ abstract class BaseEditorActivity : } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/itsaky/androidide/handlers/EditorActivityLifecyclerObserver.kt b/app/src/main/java/com/itsaky/androidide/handlers/EditorActivityLifecyclerObserver.kt index 3bda7c23a..e0b0fe7aa 100644 --- a/app/src/main/java/com/itsaky/androidide/handlers/EditorActivityLifecyclerObserver.kt +++ b/app/src/main/java/com/itsaky/androidide/handlers/EditorActivityLifecyclerObserver.kt @@ -17,6 +17,7 @@ package com.itsaky.androidide.handlers +import android.content.Context import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import com.itsaky.androidide.eventbus.events.Event @@ -31,6 +32,7 @@ import com.itsaky.androidide.projects.FileManager import com.itsaky.androidide.projects.ProjectManager import com.itsaky.androidide.projects.util.BootClasspathProvider import com.itsaky.androidide.utils.EditorActivityActions +import com.itsaky.androidide.utils.EditorActivityActions.Companion import com.itsaky.androidide.utils.Environment import java.util.concurrent.CompletableFuture import org.greenrobot.eventbus.EventBus @@ -45,6 +47,7 @@ class EditorActivityLifecyclerObserver : DefaultLifecycleObserver { private val fileActionsHandler = FileTreeActionHandler() override fun onCreate(owner: LifecycleOwner) { + EditorActivityActions.register(owner as Context) dispatchEvent(OnCreateEvent()) } @@ -56,6 +59,7 @@ class EditorActivityLifecyclerObserver : DefaultLifecycleObserver { } override fun onResume(owner: LifecycleOwner) { + EditorActivityActions.register(owner as Context) dispatchEvent(OnResumeEvent()) } diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index 0010ccea1..2e09e6d53 100644 Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ