diff --git a/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java b/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java index 8b60339b4..5f896946e 100644 --- a/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java +++ b/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java @@ -116,6 +116,7 @@ public class TaskEditControlSetFragmentManager { TaskEditFragment taskEditFragment, Task task) { Bundle arguments = new Bundle(); arguments.putParcelable(TaskEditControlFragment.EXTRA_TASK, task); + arguments.putBoolean(TaskEditControlFragment.EXTRA_IS_NEW, task.isNew()); List fragments = new ArrayList<>(); FragmentManager fragmentManager = taskEditFragment.getChildFragmentManager(); diff --git a/app/src/main/java/org/tasks/ui/RemoteListFragment.java b/app/src/main/java/org/tasks/ui/RemoteListFragment.java index df899645f..e3b3a5c8c 100644 --- a/app/src/main/java/org/tasks/ui/RemoteListFragment.java +++ b/app/src/main/java/org/tasks/ui/RemoteListFragment.java @@ -14,6 +14,7 @@ import androidx.annotation.Nullable; import butterknife.BindView; import butterknife.OnClick; import com.google.android.material.chip.Chip; +import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import com.todoroo.astrid.api.CaldavFilter; import com.todoroo.astrid.api.Filter; @@ -164,14 +165,20 @@ public class RemoteListFragment extends TaskEditControlFragment { @Override public void apply(Task task) { - task.setParent(0); - task.setParentUuid(null); - taskMover.move(ImmutableList.of(task.getId()), selectedList); + if (isNew() || hasChanges()) { + task.setParent(0); + task.setParentUuid(null); + taskMover.move(ImmutableList.of(task.getId()), selectedList); + } } @Override public boolean hasChanges(Task original) { - return selectedList == null ? originalList != null : !selectedList.equals(originalList); + return hasChanges(); + } + + private boolean hasChanges() { + return !Objects.equal(selectedList, originalList); } @Override diff --git a/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java b/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java index bbbbe8f32..b5f37f7d8 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java +++ b/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java @@ -16,8 +16,10 @@ import org.tasks.injection.InjectingFragment; public abstract class TaskEditControlFragment extends InjectingFragment { public static final String EXTRA_TASK = "extra_task"; + public static final String EXTRA_IS_NEW = "extra_is_new"; protected Task task; + private boolean isNew; @Nullable @Override @@ -39,6 +41,7 @@ public abstract class TaskEditControlFragment extends InjectingFragment { Bundle arguments = getArguments(); if (arguments != null) { task = arguments.getParcelable(EXTRA_TASK); + isNew = arguments.getBoolean(EXTRA_IS_NEW); } } @@ -57,4 +60,8 @@ public abstract class TaskEditControlFragment extends InjectingFragment { public boolean hasChanges(Task original) { return false; } + + protected boolean isNew() { + return isNew; + } }