diff -r 923ff622b8b9 -r 4633027730f5 src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp --- a/src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp Tue Jul 06 14:36:53 2010 +0300 +++ b/src/hbplugins/inputmethods/touchinput/hbinputbasic12keyhandler.cpp Wed Aug 18 10:05:37 2010 +0300 @@ -66,7 +66,9 @@ //This condition is to avoid get the characters mapped to Asterisk //Especially for Thai language we have mapped character to Asterisk if (buttonId != HbInputButton::ButtonKeyCodeAsterisk || - mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait) { + mInputMethod->currentKeyboardType() == HbKeyboardSctEmail || + mInputMethod->currentKeyboardType() == HbKeyboardSctUrl || + mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait ) { currCharIndex = mNumChr ; mCurrentChar = q->getNthCharacterInKey(mNumChr, buttonId, type); } @@ -108,14 +110,19 @@ if (mDownKey == HbInputButton::ButtonKeyCodeShift) { mLongPressHappened = true; mInputMethod->switchMode(HbInputButton::ButtonKeyCodeShift); - } else if (mDownKey == HbInputButton::ButtonKeyCodeSymbol) { - // launch the smiley popup when long press of Sym key is received + } else if (mDownKey == HbInputButton::ButtonKeyCodeSymbol && + (mInputMethod->currentKeyboardType() != HbKeyboardSctPortrait && + mInputMethod->currentKeyboardType() != HbKeyboardSctEmail && + mInputMethod->currentKeyboardType() != HbKeyboardSctUrl )) { mLongPressHappened = true; mInputMethod->selectSpecialCharacterTableMode(); } else if (mDownKey == HbInputButton::ButtonKeyCodeAsterisk && + !mInputMethod->isSctModeActive() && + (mInputMethod->currentKeyboardType() != HbKeyboardSctPortrait && + mInputMethod->currentKeyboardType() != HbKeyboardSctUrl && + mInputMethod->currentKeyboardType() != HbKeyboardSctEmail )) { // launch the SCT keypad when long press of Asterisk key is // received in non-SCT mode - !mInputMethod->isSctModeActive()) { mLongPressHappened = true; mInputMethod->switchMode(mDownKey); } else if (mDownKey != HbInputButton::ButtonKeyCodeDelete && @@ -130,12 +137,13 @@ } // mark a shift key double tap. This would be handled when the release event is received. - if ((buttonId == HbInputButton::ButtonKeyCodeShift) && (mLastKey == buttonId) && mTimer->isActive()) { + if (buttonId == HbInputButton::ButtonKeyCodeShift && mLastKey == buttonId && mTimer->isActive()) { mShiftKeyDoubleTapped = true; } if (mInputMethod) { - if (mLastKey != buttonId || mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait) + if (mLastKey != buttonId || mInputMethod->currentKeyboardType() == HbKeyboardSctPortrait || + mInputMethod->currentKeyboardType() == HbKeyboardSctEmail || mInputMethod->currentKeyboardType() == HbKeyboardSctUrl) { if (mCurrentChar != 0) { if (!focusObject->characterAllowedInEditor(mCurrentChar)) { @@ -149,13 +157,19 @@ mCurrentChar = 0; mNumChr = 0; focusObject->filterAndCommitCharacter(commitChar); - } - } + } + } + + // we should not launch auto-completor when function keys are pressed. + if (buttonId == HbInputButton::ButtonKeyCodeCharacter) + refreshAutoCompleter(); } - + mDownKey = buttonId; mTimer->stop(); - if (mInputMethod->currentKeyboardType() == HbKeyboardVirtual12Key) { + if (mInputMethod->currentKeyboardType() == HbKeyboardVirtual12Key || + mInputMethod->currentKeyboardType() == HbKeyboardVirtual12KeyEmail || + mInputMethod->currentKeyboardType() == HbKeyboardVirtual12KeyUrl ) { mTimer->start(HbMultiTapTimerTimeout); } } @@ -195,7 +209,6 @@ if (mLastKey && (HbInputButton::ButtonKeyCodeShift != mLastKey)) { mInputMethod->updateState(); } - refreshAutoCompleter(); } if (buttonId == HbInputButton::ButtonKeyCodeShift) {