--- a/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Fri Mar 12 15:43:43 2010 +0200
+++ b/uifw/EikStd/coctlsrc/EIKEDWIN.CPP Mon Mar 15 12:41:34 2010 +0200
@@ -572,7 +572,6 @@
TRAPD(error,iEdwin.iText->UpdateFepInlineTextL(paragraphContainingStartPositionOfInlineTextHasChangedFormat,numberOfCharactersSuccessfullyDeleted,numberOfCharactersSuccessfullyInserted,iPositionOfInsertionPointInDocument,iPositionOfInlineTextInDocument+aPositionOfInsertionPointInInlineText,aNewInlineText));
iLengthOfInlineText=numberOfCharactersSuccessfullyInserted;
UpdateTextViewAfterChangeInInlineTextL(paragraphContainingStartPositionOfInlineTextHasChangedFormat,numberOfCharactersSuccessfullyDeleted,numberOfCharactersSuccessfullyInserted,error);
- iEdwin.ReportEdwinEventL( MEikEdwinObserver::EEventTextUpdate );
}
void CEikEdwinFepSupport::SetInlineEditingCursorVisibilityL(TBool aCursorVisibility)
@@ -1042,6 +1041,7 @@
iCenRep->Get(KAknFepClearDirection, iClearDirection);
}
iSmileyWrap = new ( ELeave ) CSmileyCustomWrap;
+ iSkinInstance = AknsUtils::SkinInstance();
}
void CEikEdwin::CEikEdwinExtension::CreateFormExtendedInterfaceProviderIfNeededL()
@@ -2772,7 +2772,10 @@
}
Window().RequestPointerRepeatEvent(KPointerRepeatRate,rect);
navigation = ETrue;
- iEdwinExtension->iThumbPos = KErrNotFound;
+ if ( iLayout && !iLayout->IsFormattingBand() )
+ {
+ iEdwinExtension->iThumbPos = KErrNotFound;
+ }
}
else if (iEdwinInternalFlags&EDragDouble)
{
@@ -3379,12 +3382,6 @@
for (TInt ii=0;ii<count;ii++)
(*iObserverArray)[ii]->HandleEdwinEventL(this,aEventType);
}
- if ( aEventType == MEikEdwinObserver::EEventScroll ||
- aEventType == MEikEdwinObserver::EEventNavigation
- )
- {
- HandleScrollForSmileyL();
- }
if ( aEventType == MEikEdwinObserver::EEventTextUpdate )
{
iEdwinExtension->iExtendedInputCapabilities->ReportEventL(
@@ -5681,6 +5678,7 @@
aVertModel.iThumbSpan = bottomPos - topPos;
aVertModel.iScrollSpan = totalChars;
aVertModel.iThumbPosition = topPos;
+ iEdwinExtension->iThumbPos = topPos;
}
return;
}
@@ -8259,8 +8257,8 @@
return ( iEdwinExtension->iSmiley != NULL );
}
-void CEikEdwin::DrawSmileyInTextL( CBitmapContext& aGc, CFont& aFont,
- const TDesC& aText, const TPoint& aPt )
+void CEikEdwin::DrawSmileyInTextL( RRegion& rgn, const TRect& aDrawRect,
+ CBitmapContext& aGc, CFont& aFont, const TDesC& aText, const TPoint& aPt )
{
TRect viewRect( AdjustedViewRect() );
TInt topY( aPt.iY - aFont.AscentInPixels() );
@@ -8290,8 +8288,11 @@
if ( CSmileyManager::IsSmileyCode( text[i] ) )
{
TInt x( pt.iX + aFont.TextWidthInPixels( text.Left( i ) ) );
- TRect rect( x, topY, x + smileyWidth, bottomY );
- iEdwinExtension->iSmiley->DrawIconL( aGc, rect, i + pos );
+ TRect clipRect( x, aDrawRect.iTl.iY, x + smileyWidth,
+ aDrawRect.iBr.iY );
+ rgn.SubRect( clipRect, NULL );
+ TRect iconRect( x, topY, x + smileyWidth, bottomY );
+ iEdwinExtension->iSmiley->DrawIconL( aGc, iconRect, i + pos );
}
}
}
@@ -8476,23 +8477,6 @@
CleanupStack::PopAndDestroy( buf );
}
-void CEikEdwin::HandleScrollForSmileyL()
- {
- if ( !iEdwinExtension->iSmiley )
- {
- return;
- }
- TCursorSelection select( GetVisibleTextRangeL() );
- if ( select.LowerPos() != iEdwinExtension->iVisibleRange.LowerPos() ||
- select.HigherPos() != iEdwinExtension->iVisibleRange.HigherPos() )
- {
- iEdwinExtension->iVisibleRange.iCursorPos = select.iCursorPos;
- iEdwinExtension->iVisibleRange.iAnchorPos = select.iAnchorPos;
- }
- iEdwinExtension->iSmiley->SetVisibleRange( select.LowerPos(),
- select.Length() );
- }
-
TBool CEikEdwin::AdjustCursorForSmileyL( TInt aOldCursor, TCursorSelection& aSelect )
{
TBool ret( EFalse );
@@ -8518,23 +8502,6 @@
return TRect( viewRect.iTl.iX, aRect.iTl.iY, viewRect.iBr.iX, aRect.iBr.iY );
}
-void CEikEdwin::GetClipRegionForSmiley( RRegion& rgn, CFont& aFont,
- const TDesC& aText, const TPoint& aPt, const TRect& aDrawRect ) const
- {
- TInt smileyWidth( aFont.TextWidthInPixels( KSmileyString ) );
- TInt topY( aDrawRect.iTl.iY );
- TInt bottomY( aDrawRect.iBr.iY );
- for ( TInt i( 0 ); i < aText.Length(); i++ )
- {
- if ( CSmileyManager::IsSmileyCode( aText[i] ) )
- {
- TInt x( aPt.iX + aFont.TextWidthInPixels( aText.Left( i ) ) );
- TRect rect( x, topY, x + smileyWidth, bottomY );
- rgn.SubRect( rect, NULL );
- }
- }
- }
-
TBool CEikEdwin::AdjustCursorPosByMovementL( TCursorPosition::TMovementType aMovement,
TBool aSelect )
{
@@ -8561,21 +8528,34 @@
return ret;
}
-void CEikEdwin::SetSelectionVisibilityL( TBool isVisable )
- {
- iTextView->SetSelectionVisibilityL(isVisable);
+void CEikEdwin::SetSelectionVisibilityL( TBool aIsVisable )
+ {
+ if ( iEdwinExtension->iSmiley && !aIsVisable )
+ {
+ iTextView->SetSelectionVisibilityL( aIsVisable );
+ HandleSelectionForSmiley( TCursorSelection( 0, 0 ) );
+ }
+ else
+ {
+ if ( iEdwinExtension->iSmiley )
+ {
+ HandleSelectionForSmiley( Selection() );
+ }
+ iTextView->SetSelectionVisibilityL( aIsVisable );
+ }
+
CAknEdwinState*edwinState = EditorState();
- if( !edwinState )
- return;
- if(isVisable)
- {
- SetAknEditorFlags( edwinState->Flags() | EAknEditorFlagSelectionVisible );
- }
- else
- {
- HandleSelectionForSmiley( TCursorSelection( 0, 0 ) );
- SetAknEditorFlags( edwinState->Flags() & ~EAknEditorFlagSelectionVisible );
- }
+ if ( edwinState )
+ {
+ if ( aIsVisable )
+ {
+ SetAknEditorFlags( edwinState->Flags() | EAknEditorFlagSelectionVisible );
+ }
+ else
+ {
+ SetAknEditorFlags( edwinState->Flags() & ~EAknEditorFlagSelectionVisible );
+ }
+ }
return;
}
TBool CEikEdwin::IsSelectionVisible()
@@ -8793,6 +8773,50 @@
}
+// ---------------------------------------------------------------------------
+// CEikEdwin::DrawViewBackground
+// ---------------------------------------------------------------------------
+//
+void CEikEdwin::DrawViewBackground( TBool aStart ) const
+ {
+ CWindowGc& gc = SystemGc();
+ RWindow& window = Window();
+
+ if ( aStart )
+ {
+ TRect viewRect( iTextView->ViewRect() );
+ window.Invalidate( viewRect );
+ window.BeginRedraw( viewRect );
+ gc.Activate( window );
+
+ if ( !AknsDrawUtils::DrawBackground(
+ iEdwinExtension->iSkinInstance,
+ SkinBackgroundControlContext(),
+ this,
+ gc,
+ viewRect.iTl,
+ viewRect,
+ KAknsDrawParamNoClearUnderImage ) )
+ {
+ gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+ gc.SetPenStyle( CGraphicsContext::ESolidPen );
+
+ TRgb dummyColor;
+ TRgb backgroundColor = EditorBackgroundColor( dummyColor );
+
+ gc.SetBrushColor( backgroundColor );
+ gc.SetPenColor( backgroundColor );
+ gc.DrawRect( iTextView->ViewRect() );
+ }
+ }
+ else
+ {
+ gc.Deactivate();
+ window.EndRedraw();
+ }
+ }
+
+
void CEikEdwin::HandleSelectionForSmiley( TCursorSelection aSelect )
{
if ( !iEdwinExtension->iSmiley )