diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index ec8bb653c..25f502b24 100644 Binary files a/tests/test-home/.androidide/init/model.jar and b/tests/test-home/.androidide/init/model.jar differ 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 +}