Closed ghost closed 8 years ago
Yep, this is going to take a while to review, hang tight.
So I had a thorough look at the code and also ran some quick tests. The display abstractions are nice and most things seem to work. There is one minor regression I noted, that is when you drag the current master window, floating it, it gets stuck behind the other windows and cannot be brought back to the foreground. I confirmed that this worked before, so something in here breaks this.
I also tested basic multi-monitor functionality, and there seems to be no major breakage, the desktop is still expanded across all monitors.
Taking a closer look at that regression. EDIT: When I thought of MultiMonitor Support, it wasn't "span the desktop over all monitors". It was Zaphod style MultiMonitor. For example: vlc running in fullscreen mode on Monitor 1 and few urxvts on Monitor 2. These Monitors do not need to have the same resolutions. EDIT: Theoretically, we can even use Zaphod on Desktop 1, and XRandR, Xinerama, w/e on the other Desktops
Regression fixed. Thanks for pointing that one out.
Okay, I think the new fullscreen code is ready for approval. What did I do the last few days?
Default Display to Display X | Clients
Reason: FrankenWM is now ready for MultiMonitor. (Sadly I own only one monitor) Fullscreen clients create a new display and may have their own clients. As soon as the fullscreen mode is left, the display is destroyed and all clients are moved to the previous display. (This idea is borrowed from one of my own "Fingerübungen" in writing an X11 wm.)
I know, it's quite a heavy code change, so take your time :).
Another important info: each display now saves the global values (master_size, mode, growth, etc) directly in its internal structure. This makes save_desktop(); superfluous.