diff -r 857bebeecec0 -r b1ea1642412e textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp --- a/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Mon Jun 21 16:02:35 2010 +0300 +++ b/textinput/peninputgenericvkb/src/peninputgenericvkbwindow.cpp Thu Jul 15 19:01:13 2010 +0300 @@ -134,6 +134,7 @@ } void CPeninputGenericVkbWindow::ConstructL() { + iHandleRangeShortPress = ETrue; iBmpRotator = CPeninputSyncBitmapRotator::NewL(); iLafMgr = CPeninputGenericVkbLafMgr::NewL(); iLafMgr->SetInputModeL(TPluginInputMode (iLayoutContext->LayoutType())); @@ -164,82 +165,22 @@ { if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn ) { - PopupChoiceList(); + if ( iHandleRangeShortPress ) + { + HandleRangeButtonShortPress(); + } } + iHandleRangeShortPress = ETrue; } break; case EPeninputLayoutEventMultiRangeLongPress: { - const TInt range = CPeninputDataConverter::AnyToInt( - iLayoutContext->RequestData(EPeninputDataTypeCurrentRange)); - - const TInt langId = IntContext( EPeninputDataTypeInputLanguage ); - if ( aCtrl->ControlId() == EPeninutWindowCtrlIdMultiRangeBtn ) { - - if ( range == ERangeAccent ) - { - if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) ) - { - ChangeRange(ERangeNative); - } - else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) ) - { - ChangeRange(ERangeEnglish); - } - } - else if ( range == ERangeNative ) - { - if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) ) - { - - if ( langId != ELangArabic && langId != ELangFarsi - && langId != ELangUrdu && langId != ELangThai ) - { - ChangeRange(ERangeNativeNumber); - } - } - else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) ) - { - if ( langId != ELangArabic && langId != ELangFarsi - && langId != ELangUrdu && langId != ELangThai ) - { - ChangeRange(ERangeNumber); - } - } - } - else if ( range == ERangeEnglish ) - { - if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) ) - { - ChangeRange(ERangeNumber); - } - } - else if ( range == ERangeNativeNumber ) - { - if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) ) - { - ChangeRange(ERangeNative); - } - else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) ) - { - ChangeRange(ERangeEnglish); - } - } - else if ( range == ERangeNumber ) - { - if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) ) - { - ChangeRange(ERangeNative); - } - else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) ) - { - ChangeRange(ERangeEnglish); - } - } - - TRAP_IGNORE( UpdateRangeCtrlsL() ); + // Before pop up list, cancel down event, and set range button un-highlight. + TRAP_IGNORE( aCtrl->CancelPointerDownL()); + static_cast(aCtrl)->SetHighlight( EFalse ); + PopupChoiceList(); } } break; @@ -263,6 +204,14 @@ break; case EEventChoiceSelected: { + CFepUiBaseCtrl* btn = Control( EPeninutWindowCtrlIdMultiRangeBtn ); + + if ( btn ) + { + iHandleRangeShortPress = EFalse; + TRAP_IGNORE( btn->HandlePointerUpEventL( btn->Rect().iBr ) ); + iHandleRangeShortPress = ETrue; + } CFepLayoutChoiceList::SEvent* event = ( CFepLayoutChoiceList::SEvent* ) aEventData.Ptr(); @@ -1710,7 +1659,8 @@ iVkbLayout->ConstructFromIrregularResourceL(); else iVkbLayout->ConstructFromNonIrregularResourceL(); - SetVkbLayoutSize(); + + //SetVkbLayoutSize(); if( IsRtoLLanguage( iLanguage ) ) { @@ -2965,4 +2915,72 @@ } } } + +void CPeninputGenericVkbWindow::HandleRangeButtonShortPress() + { + const TInt range = CPeninputDataConverter::AnyToInt( + iLayoutContext->RequestData(EPeninputDataTypeCurrentRange)); + + const TInt langId = IntContext( EPeninputDataTypeInputLanguage ); + + switch ( langId ) + { + case ELangRussian: + case ELangBulgarian: + case ELangUkrainian: + { + range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); + } + break; + + case ELangArabic: + case ELangFarsi: + case ELangUrdu: + { + range == ERangeNative ? ChangeRange( ERangeNativeNumber ) : ChangeRange( ERangeNative ); + } + break; + + case ELangThai: + { + range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); + } + break; + + case ELangGreek: + case ELangHebrew: + { + range == ERangeNative ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeNative ); + } + break; + default: // Latin, vietnamese, and other possible languages + { + if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNative ) ) + { + if ( range == ERangeNative ) + { + if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNativeNumber ) ) + { + ChangeRange( ERangeNativeNumber ); + } + else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeNumber ) ) + { + ChangeRange( ERangeNumber ); + } + } + else + { + ChangeRange( ERangeNative ); + } + } + else if ( ConfigInfo()->RangeBarInfo()->FindRange( ERangeEnglish ) ) + { + range == ERangeEnglish ? ChangeRange( ERangeNumber ) : ChangeRange( ERangeEnglish ); + } + } + break; + } + + TRAP_IGNORE( UpdateRangeCtrlsL() ); + } // End Of File