Fixed workspace stacking for future always on top support#227
Conversation
|
Removed unnecessary |
|
As it turned out this also helps with the unmanaged windows that have I saw this issue with dmenu previously, when you had a non decorated window on screen (for example a fullscreen one), the original code was raising it simply with I actually lost a lot of time trying to make my own app to be unmanaged by WM and always on top but it turned out the the issue was not the in the app but in the WM. Thankfully, all of this is now solved. |
…gh screen lockers) Always prepend an oldest fake window managed by berry to inherit its lower stacking order to ensure the WM doesn't draw above unmanaged windows. Fixes JLErvin#231 (https://www.jwz.org/xscreensaver/faq.html#popup-windows) Depends on JLErvin#227
|
Some issues of this pull request are fixed in #229, so they should be merged together. |
I redone everything I've mentioned in the previous pull request from scratch and closed it. I made a new function
restack_ws()that restacks all windows on the workspace and makes their order on screen consistent with the client list in our WM. It usesXRestackWindows()as your original solution.The issue with original function was in that it was called on absent decorations (if they are disabled or an undecorated window is present, like the fullscreen one). In that situation X was probably giving
BadMatcherrors which are silent and does not restack properly. I made it work for present windows and decorations only.I removed unnecessary
client_move_to_front()which doubles theclient_raise()functionality. Now everyclient_raise()call makes sure that our WM is in line with X.This helps to solve issues with focusing/raising windows when fullscreen window is present on screen and other potential issues of
client_raise()not updating the client stack. The solution in the previous pull request which usesXRaiseWindow()might work but I encountered issues with blinking windows, and most importantly, it had bad scalability for future implementation of always on top windows which I'm working on.