diff -r abbe9afab2af -r 2411cd0e2ad6 phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp --- a/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp Mon Mar 08 21:43:24 2010 +0000 +++ b/phoneapp/phoneuicontrol/src/cphoneuicontroller.cpp Sun Mar 14 13:09:36 2010 +0000 @@ -35,6 +35,7 @@ #include "cphonecenrepproxy.h" #include "cphonemediatorfactory.h" #include "tphonecmdparamnumberentryobserver.h" +#include // ================= MEMBER FUNCTIONS ======================= @@ -323,9 +324,17 @@ { __ASSERT_DEBUG( iStateMachine->State(), Panic( EPhoneCtrlInvariant ) ); + // Send key up message to engine so that we wouldn't accidentally play // any DTMF tone. - iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF ); + + // DTMF tone is not ended if command is EPhoneDialerValidNumber or + // EPhoneDialerInvalidNumber. These commands result from + // user pressing numbers, and they must not interfere with tones. + if ( ! ( aCommand == EPhoneDialerValidNumber || aCommand == EPhoneDialerInvalidNumber ) ) + { + iStateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageEndDTMF ); + } return iStateMachine->State()->HandleCommandL( aCommand ); }