--------------Boundary-00=_MSH4ZAUEEXT6FRL6EI15 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit On Wednesday 31 July 2002 09:20, Thomas Diehl wrote: > Am Dienstag, 30. Juli 2002 21:39 schrieb Otto Bruggeman: > > On Tue, 30 Jul 2002, Waldo Bastian wrote: > > > On Tuesday 30 July 2002 04:01 am, ramon.casha@linux.org.mt wrote: > > > > Package: kde > > > > Version: KDE 3.0.2 > > > > Severity: wishlist > > > > Installed from: Mandrake RPMs > > > > Compiler: Not Specified > > > > OS: Linux > > > > OS/Compiler notes: Not Specified > > > > > > > > A common problem, especially with translated applications, is that > > > > it's easy for two menuitems or two widgets to end up with the same > > > > "hotkey" (alt+letter). When this happens in KDE, one can get > > > > undesired results. It's very difficult to visually check that every > > > > widget/menu has a different hotkey, especially when menuitems are > > > > added/removed dynamically based on the context. > > > > > > > > This issue could be resolved if KDE ran some kind of check when a > > > > menu/dialog is displayed, checking for duplicate hotkeys, and > > > > removing the second instance if found. By outputing a message to > > > > stderr for each instance, it could also become easier for > > > > translators/developers to find and fix them. > > > > > > We have such a check already, unfortunately I have no idea how it > > > works. > > > > > > Cheers, > > > Waldo > > > > Add this to $KDEHOME/share/config/kdeglobals: > > [Development] > > CheckAccelerators=F12 > > > > You can choose your own key to activate the check for duplicate > > accelerators. Unfortunately it does not suggest available accelerators > > yet. > > This is exactly the problem. Apart from the fact that many translation > teams are not aware of this mechanism (although it is described in the > HOWTO) it is too much work to do this via try+error (press F12, get list of > conflicts, use other hotkeys, recompile, press F12, find that you caused > new conflicts, try other hotkeys, recompile, press F12, find more conflicts > ...). Apart from the fact that it is almost impossible to cover all > possible cases of dynamic KPart menus, changing control modules etc. > Please try the attached kdelibs/kdecore patch (Miracles immediately, impossible within three days. Please allow eternity for packaging and shipping.). I'll let the massive propagation campaign to make translation teams aware of the feature up to you ;-p. The patch looks bigger than it is, because I got bored messing with large kapplication.cpp and moved the accelerators code to a separate file (when I'm in a mood to play with large .cpp files, I go hacking KWin). It should do everything you asked for, it can't make coffee yet though :). See top of kcheckaccelerators.cpp for instructions. If translators turn on the automatic checking, I'm quite sure they'll quickly either fix all the conflicts or turn it back off. I also fixed some details, like it didn't report menubar vs controls clashes, and I removed the strict menu checking option, because it was standing in the way, and I didn't find it useful in any way. If somebody knows how can be useful if it reports conflicts for ... &Help (=menubar or popup menu) | -- &Help on XYZ (=submenu) (which is what it did as far as I can say), complain, and I'll try to put it back. > Most teams have to do their translations as last minute jobs before > releases. Context checks are often very superficial, hotkey checks rarely No wonder, when those lousy developers love so much to change the strings one day after some poor developer finished translating them ;). > happen at all. In fact, I don't know of one single team that really sorted > this out. I'd say there are tons of hotkey conflicts in all translations. Maybe more. With automatic checking on, I see the dialog all the time :(. And as I actually don't have kde-i18n-cs for HEAD, it's not a translation but the strings written in the apps. BTW, I've also noticed kdelibs/kdeui/kaccelgen.h . It doesn't seem to be used much though. -- Lubos Lunak l.lunak@email.cz ; l.lunak@kde.org http://dforce.sh.cvut.cz/~seli --------------Boundary-00=_MSH4ZAUEEXT6FRL6EI15 Content-Type: application/x-tbz; name="kcheckaccelerators.tar.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kcheckaccelerators.tar.bz2" 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 --------------Boundary-00=_MSH4ZAUEEXT6FRL6EI15--