diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index 14466f812..b04375cff 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -496,6 +496,8 @@ LinearLayout (H) LinearLayout (V) RelativeLayout + ScrollView + HorizontalScrollView Clone diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index e2582a3bd..2058f59b9 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/drag/WidgetDragListener.kt b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt index da7de7688..9583979f6 100644 --- a/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt +++ b/uidesigner/src/main/java/com/itsaky/androidide/uidesigner/drag/WidgetDragListener.kt @@ -44,7 +44,7 @@ internal class WidgetDragListener( private var lastY = 0f override fun onDrag(v: View, event: DragEvent): Boolean { - return when (event.action) { + when (event.action) { DragEvent.ACTION_DRAG_STARTED -> { val name = @@ -53,10 +53,10 @@ internal class WidgetDragListener( is UiWidget -> data.name else -> throw IllegalArgumentException("A local state of UiWidget or IView is expected") } - - event.clipDescription.hasMimeType(DRAGGING_WIDGET_MIME) && - event.localState != this.view && - this.view.canAcceptChild(name) + + return event.clipDescription.hasMimeType(DRAGGING_WIDGET_MIME) && + event.localState != view && + view.canAcceptChild(name) } DragEvent.ACTION_DRAG_ENTERED, DragEvent.ACTION_DRAG_LOCATION -> { @@ -83,11 +83,11 @@ internal class WidgetDragListener( lastX = event.x lastY = event.y - true + return true } DragEvent.ACTION_DRAG_EXITED -> { view.onHighlightStateUpdated(false) - true + return true } DragEvent.ACTION_DROP -> { val child = @@ -111,13 +111,13 @@ internal class WidgetDragListener( child.includeInIndexComputation = true } - true + return true } DragEvent.ACTION_DRAG_ENDED -> { this.placeholder.removeFromParent() - true + return true } - else -> false + else -> return false } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt index 14234bd3d..5c5974527 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt @@ -74,7 +74,7 @@ abstract class IViewAdapter : AbstractParser() { * Called by the UI Designer to check if the given view group (which this adpater handles) can * accept the child view with the given qualified name. */ - fun canAcceptChild(view: IViewGroup, name: String): Boolean { + open fun canAcceptChild(view: IViewGroup, name: String): Boolean { return true } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt index f5ccaddd6..7eb39080c 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewGroup.kt @@ -54,7 +54,7 @@ interface IViewGroup : IView, Iterable { */ fun canAcceptChild(name: String): Boolean { return canModifyChildViews() && - ViewAdapterIndex.getAdapter(name)?.canAcceptChild(this, name) == true + ViewAdapterIndex.getAdapter(this.name)?.canAcceptChild(this, name) == true } /**