I'd rather see the history work like in a web browser, like said here https://www.ghisler.ch/board/viewtopic.php?p=365592#p365592 too:
(It's not about the mouse buttons here, it's about cm_GotoPreviousDir in general, no matter how it is called.)ghisler(Author) wrote: 2019-12-23, 15:09 UTC In Total Commander, the mouse back/forward buttons do the same as in a web browser: Go to previous/next directory in history.
Now, here's a demo case:
1. I'm in directory c:\
2. I go to directory c:\a\
3. I go back ("cm_GotoPreviousDir"), I'm in c:\ now (so far expected behaviour)
4. I go to directoy c:\b\
5. I go back again. Now, instead of being in the previous directory from step 3 c:\ I'm in c:\a\ now (from step 2)
This is especially annoying, when I follow symlinks inside a directory, one after another. At the lastest after the second one I don't directly come back to my starting point (the directory with the symlinks in it, and which is not just one level above like in the demo case), but to the last symlink I visited. So I'd have to do cm_GotoPreviousDir as often as I have visited other symlinks before, which can be many.
And it is annoying, since it is somehow unpredictable. Sometimes cm_GotoPreviousDir means what it says, sometimes it doesn't, depending on what happened "before before".
It might be right, it's previous in the tc history, but still the tc history gets stacked up in a strange manner, compared to all experience a user has with web browsers and Explorer. Both rewrite the history from where I am. Maybe tc's shiftings in the history have their reason too, but please don't destroy the "previous directory" behaviour by that. There must be a way to keep that together with whatever requirement You have for shifting around in the history, if there is one.
So, I suggest to make it really strict: "previous" means really previous where I came from, no matter what I did. When implementing, please also test directory changes with directly clicked .lnk-Links, with directly entered cd-command and with edited path ("cm_EditPath").