Fix folder opening and closing issues

This commit is contained in:
Ensar Sarajčić 2023-08-24 13:18:46 +02:00
parent 1863a9e6a9
commit 3dd78cc911
1 changed files with 27 additions and 25 deletions

View File

@ -270,7 +270,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
}
currentlyOpenFolder?.also { folder ->
if (folder.getDrawingRect().contains(x.toFloat(), y.toFloat())) {
if (folder.getDrawingRect(overrideScale = 1f).contains(x.toFloat(), y.toFloat())) {
draggingLeftFolderAt = null
} else {
draggingLeftFolderAt.also {
@ -296,6 +296,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
draggedItemCurrentCoords = Pair(x, y)
if (draggedItem?.type != ITEM_TYPE_FOLDER && draggedItem?.type != ITEM_TYPE_WIDGET) {
val center = gridCenters.minBy {
abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
}
@ -323,6 +324,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
} else {
draggingEnteredNewFolderAt = null
}
}
pager.handleItemMovement(x, y)
redrawGrid()
@ -492,7 +494,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
// check if the destination cell is empty or a folder
isDroppingPositionValid = true
val wantedCell = Pair(xIndex, yIndex)
gridItems.filterVisibleOnCurrentPageOnly().forEach { item ->
gridItems.filterVisibleOnCurrentPageOnly().filter { it.id != draggedItem?.id }.forEach { item ->
for (xCell in item.left..item.right) {
for (yCell in item.getDockAdjustedTop(rowCount)..item.getDockAdjustedBottom(rowCount)) {
val cell = Pair(xCell, yCell)
@ -626,7 +628,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
context.homeScreenGridItemsDB.shiftFolderItems(oldParentId, oldLeft, -1, id)
}
if (newParentId != null && gridItems.any { it.parentId == newParentId && it.left == left }) {
if (newParentId != null && gridItems.any { it.parentId == newParentId && it.left == left } && (newParentId != oldParentId || left != oldLeft)) {
gridItems.filter { it.parentId == newParentId && it.left >= left && it.id != id }.forEach {
it.left += 1
}
@ -989,7 +991,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
}
val folder = currentlyOpenFolder
if (folder != null) {
if (folder != null && folder.getItems().isNotEmpty()) {
val items = folder.getItems()
val folderRect = folder.getDrawingRect()
val folderItemsRect = folder.getItemsDrawingRect()
@ -1344,7 +1346,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
if (currentlyOpenFolder == null) {
currentlyOpenFolder = folder.toFolder(animateOpening = true)
redrawGrid()
} else {
} else if (currentlyOpenFolder?.item?.id != folder.id ){
closeFolder()
}
}