Okay, this bug annoyed me very much, so I identified it in the source code. What really happened: Whenever you first move a window to a different viewport, the target viewport number is appended to a list. When you do it again, the old entry is not removed or updated; instead a new "viewport" entry is added (which also is a small memory leak). Afterwards, only the first "viewport" entry in the list is ever read on moving a window, so all subsequent windows will be sent to the viewport to which the first window was moved (it can also be the first, third, fourth or any other one).
Okay, this bug annoyed me very much, so I identified it in the source code. What really happened: Whenever you first move a window to a different viewport, the target viewport number is appended to a list. When you do it again, the old entry is not removed or updated; instead a new "viewport" entry is added (which also is a small memory leak). Afterwards, only the first "viewport" entry in the list is ever read on moving a window, so all subsequent windows will be sent to the viewport to which the first window was moved (it can also be the first, third, fourth or any other one).
A patch proposal is attached.