diff -r 5dc02b23752f -r 3e2da88830cd src/gui/kernel/qsoftkeymanager.cpp --- a/src/gui/kernel/qsoftkeymanager.cpp Tue Jul 06 15:10:48 2010 +0300 +++ b/src/gui/kernel/qsoftkeymanager.cpp Wed Aug 18 10:37:55 2010 +0300 @@ -162,6 +162,7 @@ void QSoftKeyManager::updateSoftKeys() { + QSoftKeyManager::instance()->d_func()->pendingUpdate = true; QEvent *event = new QEvent(QEvent::UpdateSoftKeys); QApplication::postEvent(QSoftKeyManager::instance(), event); } @@ -250,6 +251,7 @@ } d->updateSoftKeys_sys(); + d->pendingUpdate = false; return true; } @@ -275,6 +277,9 @@ #ifdef Q_WS_S60 bool QSoftKeyManager::handleCommand(int command) { + if (QSoftKeyManager::instance()->d_func()->pendingUpdate) + (void)QSoftKeyManager::instance()->handleUpdateSoftKeys(); + return static_cast(QSoftKeyManager::instance()->d_func())->handleCommand(command); } #endif