Fix folder opening and closing issues
This commit is contained in:
parent
1863a9e6a9
commit
3dd78cc911
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue