From c2c21c5b948f75eb521c05eae982187683cd87b7 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Fri, 25 Nov 2022 09:21:21 +0530 Subject: [PATCH] fix: startParse() not called --- tests/test-home/.androidide/init/model.jar | Bin 65261 -> 65261 bytes .../fragments/DesignerWorkspaceFragment.kt | 3 ++- .../layout/fragment_designer_workspace.xml | 2 +- .../inflater/internal/LayoutInflaterImpl.kt | 7 +++++++ .../inflater/internal/utils/module.kt | 16 +++++++++++++++- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index ec8bb653cb16b6ee358bbd306a07706d66ce6fca..25f502b2472e91d889c421e19618d1b38d4527bb 100644 GIT binary patch delta 33 ncmaF+m-+2qX5IjAW)?061`ZAeORvg}yuR<5f%N9s_Y?R5zgP=5 delta 33 ocmaF+m-+2qX5IjAW)?061`ZB}tw|Ldd41nA1L@7N?t<8 diff --git a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt index 5d6a579a2..fa082bbbf 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/fragments/DesignerWorkspaceFragment.kt @@ -27,6 +27,7 @@ import com.itsaky.androidide.fragments.BaseFragment import com.itsaky.androidide.inflater.IInflateEventsListener import com.itsaky.androidide.inflater.ILayoutInflater import com.itsaky.androidide.inflater.OnInflateViewEvent +import com.itsaky.androidide.inflater.internal.utils.startParse import com.itsaky.androidide.uidesigner.UIDesignerActivity import com.itsaky.androidide.uidesigner.databinding.FragmentDesignerWorkspaceBinding import com.itsaky.androidide.uidesigner.databinding.LayoutDesignerErrorBinding @@ -85,7 +86,7 @@ class DesignerWorkspaceFragment : BaseFragment() { emptyList() } if (inflated.isEmpty()) { - binding!!.workspace.addView(createErrorView("Failed to infflate view")) + binding!!.workspace.addView(createErrorView("Failed to inflate view")) } } diff --git a/uidesigner/src/main/res/layout/fragment_designer_workspace.xml b/uidesigner/src/main/res/layout/fragment_designer_workspace.xml index 7a1c2ffc4..2e1af95c1 100644 --- a/uidesigner/src/main/res/layout/fragment_designer_workspace.xml +++ b/uidesigner/src/main/res/layout/fragment_designer_workspace.xml @@ -30,6 +30,6 @@ android:background="@drawable/bg_designer_view" android:backgroundTint="@color/primaryLightColor" android:backgroundTintMode="src_atop" - android:orientation="horizontal" /> + android:orientation="vertical" /> \ No newline at end of file diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt index b8f1ff3f0..95b0249cf 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/LayoutInflaterImpl.kt @@ -45,7 +45,10 @@ import com.itsaky.androidide.inflater.InflationStartEvent import com.itsaky.androidide.inflater.OnApplyAttributeEvent import com.itsaky.androidide.inflater.OnInflateViewEvent import com.itsaky.androidide.inflater.internal.utils.IDTable +import com.itsaky.androidide.inflater.internal.utils.endParse +import com.itsaky.androidide.inflater.internal.utils.isParsing import com.itsaky.androidide.inflater.internal.utils.parseLayoutReference +import com.itsaky.androidide.inflater.internal.utils.startParse import com.itsaky.androidide.projects.ProjectManager import com.itsaky.androidide.projects.api.AndroidModule import com.itsaky.androidide.utils.ILogger @@ -75,10 +78,14 @@ open class LayoutInflaterImpl : ILayoutInflater() { override fun inflate(file: File, parent: ViewGroup): List { this._primaryInflatingFile = file IDTable.newRound() + if (!isParsing) { + startParse(file) + } inflationEventListener?.onEvent(InflationStartEvent()) return doInflate(file, parent).apply { inflationEventListener?.onEvent(InflationFinishEvent(this)) _primaryInflatingFile = null + endParse() } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/module.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/module.kt index df8042535..2a67e35e0 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/module.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/utils/module.kt @@ -22,14 +22,28 @@ import com.itsaky.androidide.projects.api.AndroidModule import java.io.File private var currentModule: AndroidModule? = null +var isParsing: Boolean = false + private set + val module: AndroidModule get() = currentModule ?: throw IllegalStateException("You must call startParse(AndroidModule) first") +fun startParse(file: File) { + if (isParsing) { + return + } + (ProjectManager.findModuleForFile(file) as? AndroidModule)?.let { + startParse(it) + } +} + fun startParse(m: AndroidModule) { currentModule = m + isParsing = true } fun endParse() { currentModule = null -} \ No newline at end of file + isParsing = false +}