diff -r 9f56a4e1b8ab -r 08e69e956a8c uifw/EikStd/coctlsrc/EIKEDWIN.CPP --- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Mon Mar 15 12:41:34 2010 +0200 +++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Wed Mar 31 21:59:52 2010 +0300 @@ -1134,23 +1134,23 @@ // --------------------------------------------------------------------------- // CEikEdwin::CEikEdwinExtension::EnableKineticScrollingL // --------------------------------------------------------------------------- -// -void CEikEdwin::CEikEdwinExtension::EnableKineticScrollingL() +// +void CEikEdwin::CEikEdwinExtension::EnableKineticScrollingL( CAknPhysics* aPhysics ) { iFlags.Set( EKineticScrollingEnabled ); - EnablePhysicsL(); + EnablePhysicsL( aPhysics ); } // --------------------------------------------------------------------------- // CEikEdwin::CEikEdwinExtension::EnablePhysicsL // --------------------------------------------------------------------------- // -void CEikEdwin::CEikEdwinExtension::EnablePhysicsL() +void CEikEdwin::CEikEdwinExtension::EnablePhysicsL( CAknPhysics* aPhysics ) { if ( iFlags.IsSet( EKineticScrollingEnabled ) && !iPhysicsHandler && iEdwin->DrawableWindow() ) { - iPhysicsHandler = CAknEdwinPhysicsHandler::NewL( *iEdwin ); + iPhysicsHandler = CAknEdwinPhysicsHandler::NewL( *iEdwin, aPhysics ); InitPhysicsL(); if ( iEdwin->iLayout ) @@ -2876,18 +2876,12 @@ ( ( aPointerEvent.iType == TPointerEvent::EDrag ) || ( aPointerEvent.iType == TPointerEvent::EButtonRepeat ) ) ) { - - // selectionAfter.iCursorPos-1 below is because we need to select the previous char - TBool ltr = ( selectionAfter.iCursorPos >= selectionBefore.iCursorPos ); - TInt readPos = selectionAfter.iCursorPos; - if (ltr && readPos > 0) - { - readPos -= 1; // read previous char - } + TInt readPos = ( selectionAfter.iCursorPos >= selectionBefore.iCursorPos ) ? + selectionBefore.iCursorPos : selectionAfter.iCursorPos ; TChar currentSelectedChar = Text()->Read( readPos, 1 )[0]; TBool isSpace = currentSelectedChar.IsSpace(); - TBool isText = currentSelectedChar.IsAlpha() - || currentSelectedChar.IsDigit(); + TBool isSmiley = CSmileyManager::IsSmileyCode(currentSelectedChar); + TBool isText = currentSelectedChar.IsGraph(); // case line TInt prevLineNr = TextLayout()->GetLineNumber(selectionBefore.iCursorPos); @@ -2906,7 +2900,7 @@ iEdwinFepSupport->iFeedback->InstantFeedback( this, ETouchFeedbackBlankSelection ); } // case text - else if (isText) + else if ( isText || isSmiley ) { iEdwinFepSupport->iFeedback->InstantFeedback( this, ETouchFeedbackTextSelection ); } @@ -4833,6 +4827,7 @@ if (reportChange) { + iEdwinExtension->iThumbPos = KErrNotFound; ReportEdwinEventL( MEikEdwinObserver::EEventTextUpdate ); DoReportEventL( MCoeControlObserver::EEventStateChanged ); NotifyEditorStateObserverOfStateChangeL(); @@ -8052,7 +8047,15 @@ { if ( iEdwinExtension && aEnable ) { - iEdwinExtension->EnableKineticScrollingL(); + iEdwinExtension->EnableKineticScrollingL( NULL ); + } + } + +EXPORT_C void CEikEdwin::EnableKineticScrollingL( CAknPhysics* aPhysics ) + { + if ( iEdwinExtension ) + { + iEdwinExtension->EnableKineticScrollingL( aPhysics ); } } @@ -8573,8 +8576,8 @@ TChar::TCategory category = character.GetCategory(); - if ( !((category&TChar::ESeparatorGroup == TChar::ESeparatorGroup) || - (text[i]>=0x200B && text[i]<=0xFFFC)) ) + if ( !( ( ( category & TChar::ESeparatorGroup ) == TChar::ESeparatorGroup ) || + ( text[i] >= 0x200B && text[i] <= 0xFFFC ) ) ) { ret = ETrue; break;