This is about an accident during elastic paging development, but it feels "good" to me. I've secretly always hated the "snapping" effect of snap attraction. Windows jumping around is confusing, especially if the distance is big, e.g. if you use a "100" edge resistance. So here is the new idea:
When one window is pushed against another window's border or some other barrier (screen edge, whatever): A +---- B +---- C +---- * | |* | * -----+ | -----+| -----+ | +---- |+---- +|--- -----+ -----+ -----+ -> -> -> It stops in that position while the pointer moves on (* in the image), image B. When the pointer finally moves too far, the window does not jump towards the pointer position but simply resumes moving as if this "blocking" never happened (image C). When moving the window back to the left, it just moves freely without being blocked in any place. Think of the other windows border as a jammed door: To get through, you have to push. This causes pressure, and when that's hight enough, the door opens. Going back is easy because the door is already open. And if you can give up pushing at any time and just walk back. -- To push a window past the screen edge, just keep pushing. Once the edge's resistance is overcome, the window moves as if nothing had happened. When you pull it back, it won't snap back to the screen unless you push it aginst the border again. -- This is now all possible because the elastic paging code keeps the pointer in the middle of the screen (invisible). There may be some tricky situations when top and bottom border are both near obstacles. -- To get a feeling for the new code (maybe 40% complete), check the latest version of the branch "dv/elastic-paging-prototype". It doesn't have paging yet or the new "snap" method. But do try to move windows over screen edges and try pressing Shift/Control during mouse movement. With Shift the window moves much faster (factor 8) and with Conrol slower (factor 0.5). Now that the fixed offset between pointer and window position doesn't exist anymore, it's easy to do things like this. Ciao Dominik ^_^ ^_^ -- Dominik Vogt