Handling of default button in KDialog broken

Lubos Lunak l.lunak at suse.cz
Fri Jul 4 14:08:36 BST 2008


 could somebody please review the attached patch? It appears that KDialog has 
a bug with (not) setting the default button properly, which has been there 
since about forever.

 A demo of this bug is the timeout dialog after you enable compositing for 
KWin. If compositing setup fails for any reason and all you get is e.g. a 
black screen, it's quite possible that instead of waiting those 10 seconds 
for the dialog to revert (about which you may not know if you can't see the 
dialog) you will start hitting "random" keys on the keyboard, say Enter or 
Space, and will actually confirm the dialog. Even though the default button 
is the cancel one.

 The KDialog code has some function called setButtonFocus(), which however 
seems to be just a thin wrapper used for confusing things. Making a button 
default does not set focus to it, making it useless in many cases. It appears 
that e.g. KMessageBox works this around by explicitly later setting focus to 
the button (which however actually resets the button from being the default). 
I suggest the attached patch, which will normally make default buttons 
focused by default (and consistent with QMessageBox::setDefaultButton()).

 Does somebody see a problem with it?

Lubos Lunak
KDE developer
SUSE LINUX, s.r.o.   e-mail: l.lunak at suse.cz , l.lunak at kde.org
Lihovarska 1060/12   tel: +420 284 028 972
190 00 Prague 9      fax: +420 284 028 951
Czech Republic       http://www.suse.cz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kdeui.patch
Type: text/x-diff
Size: 1874 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080704/760a689d/attachment.patch>

More information about the kde-core-devel mailing list