https://bugs.kde.org/show_bug.cgi?id=379009
Bug ID: 379009 Summary: Mac: working around an undesirable multihead/Mission Control/fullscreen side-effect? Product: frameworks-kconfigwidgets Version: unspecified Platform: Compiled Sources OS: OS X Status: UNCONFIRMED Severity: wishlist Priority: NOR Component: general Assignee: kdelibs-b...@kde.org Reporter: rjvber...@gmail.com Target Milestone: --- Flags: Brainstorm+ Sorry, long text. This is an issue that requires some background information... Long-time Mac users with external/multiple screens may be aware of an IMHO undesirable side-effect that occurs when you chose the more common (?) configuration for virtual desktops ("Spaces") where each desktop (Space) spans all available screens, and switching happens simultaneously on all screens. Apple implement their native fullscreen mode using a temporary "Space" on which the window is then maximised. It will occupy all of the screen on which it already lived, but the temporary Space spans all screens, effectively blacking them out. This does not happen in the default Mission Control mode where screens have separate Spaces (and each screen a menubar). In that configuration the native fullscreen behaviour works exactly as you'd expect (with a time-consuming, useless animation thrown in for good measure): making a window fullscreen on any given screen doesn't affect the content being displayed on other screens. This wouldn't be much of an issue if the screensHaveSeparateSpaces property could be toggled with immediate effect, but in practice you have to log off and back in again. Not very practical if you want to watch a fullscreen video while keeping an eye on your email client displayed on a secondary screen, or if you want to maximise an IDE for a complex edit in a huge file but still be able to look up documentation say in a web browser running on another screen. There is no difficulty implementing a standard fullscreen algorithm that simply puts the target window in frameless mode and sizes it to cover a complete screen. This can be done with a few Qt calls, and doesn't require any undocumented native SDK calls or hacks. In fact, Qt 5.8.0 and earlier implemented such an algorithm as a fallback for windows lacking the fullscreen titlebar button (`Qt::WindowFullscreenButtonHint` unset). It seems that Qt's PoV has changed with v5.9.0 that such an alternative fullscreen is "non-platform behaviour" and thus to be proscribed; if "we" want it "we" just have to roll our own algorithm. That wouldn't be a big deal in a context of a few individual applications, but it's a bit different in the context of KF5 frameworks that aim to extend Qt with additions which improve user and/or developer experience one way or another - including an "enter/exit fullscreen" KStandardAction. Would there be an open-minded attitude towards propositions to introduce an optional "simple, basic" fullscreen mode that makes windows fullscreen by resizing and removing decoration? The way I see it: - this is not "non-platform behaviour" as the main and intended effect is the same (window is displayed occupying all of its current screen) and it requires no hacking - this provides a consistent fullscreen experience on multi-head set-ups, across Mission Control configurations but also across platforms - screens not occupied by a fullscreen window remain usable as usual - yay, no waiting for a pointless animation (1s nominal, more if the system is stressed) - this avoids running into what's probably an OS X bug (creating a new window in a fullscreen'ed application replaces the window that was made fullscreen and causes the latter to go MIA without closing it properly. I have a working PoC implementation in a personal fork of Qt's 5.9.0RC Cocoa platform plugin (which overrides the standard QPA) but I'd prefer to keep the changes in that fork as low as possible. -- You are receiving this mail because: You are watching all bug changes.