From 8df1fb765c7a2d2d045e51eb22ef2e10269d5ace Mon Sep 17 00:00:00 2001 From: Dharanish Date: Sun, 7 Jul 2024 00:29:58 +0200 Subject: [PATCH] Implement sub habit reordering within group --- .../core/ui/screens/habits/list/HabitCardListCache.kt | 5 +++-- .../core/ui/screens/habits/list/ListHabitsBehavior.kt | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt index a5c5100bd..981cf0917 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/HabitCardListCache.kt @@ -259,10 +259,11 @@ class HabitCardListCache @Inject constructor( @Synchronized fun reorder(from: Int, to: Int) { if (from == to) return - if (data.positionTypes[from] == STANDALONE_HABIT) { + val type = data.positionTypes[from] + if (type == STANDALONE_HABIT || type == SUB_HABIT) { val habit = data.positionToHabit[from]!! data.performMove(habit, from, to) - } else if (data.positionTypes[from] == HABIT_GROUP) { + } else { val habitGroup = data.positionToHabitGroup[from]!! data.performMove(habitGroup, from, to) } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt index 7690d4e12..ead0d43ef 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt @@ -112,7 +112,10 @@ open class ListHabitsBehavior @Inject constructor( } fun onReorderHabit(from: Habit, to: Habit) { - taskRunner.execute { habitList.reorder(from, to) } + if (from.parent == to.parent) { + val list = from.parent?.habitList ?: habitList + taskRunner.execute { list.reorder(from, to) } + } } fun onRepairDB() {