Do not connect KStandardAction::quit() to QApplication::quit()
Aurélien Gâteau
aurelien.gateau at free.fr
Wed Jan 30 23:50:43 GMT 2008
David Faure wrote:
> On Wednesday 30 January 2008, David Faure wrote:
>> On Thursday 06 December 2007, Aurélien Gâteau wrote:
>> > Hello,
>> >
>> > I just got bitten by this one, so I thought I'd share it with you.
>> >
>> > If your application implements KMainWindow::queryClose() to warn the
>> > user about unsaved changes for example, do not connect
>> > KStandardAction::quit() to QApplication::quit() as it would bypass the
>> > queryClose(). Instead, connect it to QApplication::closeAllWindows().
>> >
>> > I had a look at my incomplete checkout of KDE and only find one
>> > mistake: kapptemplate. Attached patch fix it. Ok to commit?
>>
>> Yes please do.
>
> Ah! I remember now. Doh, what was I thinking.
>
> The styleguide (in KDE 3 at least; the current styleguide on
> usability.kde.org seems to have nothing about this) says: "Closing the
> application by selecting Quit in the File-menu closes the document-window
> and the document within it. Closing the document-window by selecting the X
> on the window border is equivalent to selecting Quit in the File-menu.
> "Implementation Note
> " Please note that closing the application does not necessarily mean
> terminating the UNIX process - other application instances may be using
> the same UNIX process and they should remain unaffected!
> http://developer.kde.org/documentation/standards/kde/style/menus/file.html
>
> This means that connecting to closeAllWindows() is just as wrong as
> connecting to quit(). In most KDE applications, the quit standardaction
> should be connected to "this, SLOT(close())".
Hum, I see. I guess I got used to Option+Q on Mac OS X being used to
*really* quit the whole application. Whether it's the behavior users will
expect should be debated on kde-usability. Will post a message about it.
Aurélien
More information about the kde-core-devel
mailing list