I have a question... I'm dealing with an interface that has two lists, and you can drag and drop elements between them.
What would be a better approach and why?
a) Moving between lists doesn't change any behavior of the buttons between them. If item three is moved to the right, the system will remove the item from the source list, select the next available item in it and put it desired item in the target list. Focus of previously selected item gets lost and replaced by another one. (In the figure below, Item Three was pushed to the other list, and Item Four got selected).
b) The behavior of the middle button changes, as the item selected doesn't lose focus. As opposed to previous example, moving clicking once on the middle button > will move the item from one list to the other and it will change to <.
In my opinion, option b is more friendly as it allows you to go back to a previous state (undo) easily. It also removes the need for disabling buttons, and having items selected on both lists, and that to me makes it a bit easier to use.
Bonus: Considering solution a) we know that when an item on the left list is selected, it can only go to the list in the right, and the other way around; when an item on the list on the right is selected, it can only go to the left list. Would disabling buttons accordingly may be annoying to the user or should be encouraged?