[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: KMenu weirdness with accelerator char
From:       Albert Astals Cid <aacid () kde ! org>
Date:       2009-08-30 20:57:06
Message-ID: 200908302257.06385.aacid () kde ! org
[Download RAW message or body]

A Dissabte, 29 d'agost de 2009, Martin Koller va escriure:
> Hi,
>
> I've got a problem with KMenu (in kmail) in trunk:
> It inserts a list of strings for some actions (in this case each string is
> an email address). Whenever the result of menu.exec() is asked for its
> text(), the text contains an "&" accelerator character.
>
> Using the same code but just QMenu instead, does not show this behavior.
> I looked through KMenu's code but couldn't find the problem (as
> setKeyboardShortcutsEnabled is OFF by default)
>
> Code:
>
>   KMenu menu( this );
>   menu.setObjectName( "Addresschooser" );
>   for ( QStringList::const_iterator it = emails.begin(), end = emails.end()
> ; it != end; ++it ) {
>     kDebug() << *it;
>     menu.addAction( *it );
>   }
>   const QAction *result = menu.exec( QCursor::pos() );
>   if ( !result )
>     return;
>     kDebug() << "result:" << result->text();
>
>
> The debug output:
> kmail(7045) KMLineEdit::insertEmails: "martin.koller@etm.at"
> kmail(7045) KMLineEdit::insertEmails: "koller@etm.at"
> kmail(7045) KMLineEdit::insertEmails: "martin.b.koller@siemens.com"
> kmail(7045) KMLineEdit::insertEmails: result: "&koller@etm.at"

Yes, that is correct, menu entries for KDE have accelerator to make them 
easier to use to the end user, you should not expect the text you enter is the 
same you will get, as Michael says you can use 
KLocale::removeAcceleratorMarker to get a string without accelators, if you 
REALLY don't want your widget do be autoaccelerated, use 
KAcceleratorManager::setNoAccel

Albert
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic