[Development] Request for API freeze exception to fix an important bug
Andreas Hartmetz
ahartmetz at gmail.com
Fri Jan 29 14:54:59 CET 2016
Hello,
while investigating session saving problems in KDE I found that the big
underlying problem is that QGuiApplication::commitData() can't be
prevented from trying to close windows. It does that to see if they
refuse (ignore the close event), and if they do, it's interpreted as the
application canceling logout. That gives poor man's session managament
to applications that don't explicitly implement any real session
management. It also essentially breaks applications that do implement
full session management.
This behavior is very old (has been present at least as early as Qt
2.3.2), but what is new in Qt5 is that it can't be disabled. That is
becasue one could override Q[Gui]Application::commitData() before Qt5,
but not anymore. One now just connects to the commitDataRequest()
signal.
So, how to fix it? Simple and (very) ugly: Add API to disable the
closing of windows in commitData(). Because session saving is IMHO
pretty important for KDE, I'm asking for an exception to add API to 5.6
to fix it.
The change request is at:
https://codereview.qt-project.org/#/c/146566/
As should be obvious from the patch, it does nothing if the new API
isn't used.
Cheers,
Andreas
More information about the Development
mailing list