From: joogab yun Date: Mon, 2 Dec 2019 01:20:09 +0000 (+0000) Subject: Merge "GetLineCount() after GetTextDirection() returns wrong value." into devel/master X-Git-Tag: dali_1.4.49~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=d9d5db59d3c9b5ec6c34315da1c41b2231547828;hp=-c Merge "GetLineCount() after GetTextDirection() returns wrong value." into devel/master --- d9d5db59d3c9b5ec6c34315da1c41b2231547828 diff --combined dali-toolkit/internal/text/text-controller.cpp index c017039,139fbfd..a3d77d4 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@@ -80,6 -80,7 +80,6 @@@ int ConvertPixelToPint( float pixel return ( pixel * 72.f ) / static_cast< float >( horizontalDpi ); } - } // namespace namespace Dali @@@ -2044,6 -2045,7 +2044,6 @@@ Vector3 Controller::GetNaturalSize( GET_SCRIPTS | VALIDATE_FONTS | GET_LINE_BREAKS | - GET_WORD_BREAKS | BIDI_INFO | SHAPE_TEXT | GET_GLYPH_METRICS ); @@@ -2115,6 -2117,7 +2115,6 @@@ bool Controller::CheckForTextFit( floa GET_SCRIPTS | VALIDATE_FONTS | GET_LINE_BREAKS | - GET_WORD_BREAKS | BIDI_INFO | SHAPE_TEXT| GET_GLYPH_METRICS ); @@@ -2210,6 -2213,7 +2210,6 @@@ float Controller::GetHeightForWidth( fl GET_SCRIPTS | VALIDATE_FONTS | GET_LINE_BREAKS | - GET_WORD_BREAKS | BIDI_INFO | SHAPE_TEXT | GET_GLYPH_METRICS ); @@@ -2431,6 -2435,7 +2431,6 @@@ Toolkit::DevelText::TextDirection::Typ GET_SCRIPTS | VALIDATE_FONTS | GET_LINE_BREAKS | - GET_WORD_BREAKS | BIDI_INFO | SHAPE_TEXT | GET_GLYPH_METRICS ); @@@ -2454,6 -2459,9 +2454,9 @@@ // Clear the update info. This info will be set the next time the text is updated. mImpl->mTextUpdateInfo.Clear(); + // FullRelayoutNeeded should be true because DoRelayout is MAX_FLOAT, MAX_FLOAT. + mImpl->mTextUpdateInfo.mFullRelayoutNeeded = true; + mImpl->mUpdateTextDirection = false; } @@@ -3707,17 -3715,6 +3710,17 @@@ bool Controller::RemoveText( int cursor } } + // If the number of current text and the number of characters to be deleted are same, + // it means all texts should be removed and all Preedit variables should be initialized. + if( ( currentText.Count() - numberOfCharacters == 0 ) && ( cursorIndex == 0 ) ) + { + if( mImpl->mEventData ) + { + mImpl->mEventData->mPreEditStartPosition = 0; + mImpl->mEventData->mPreEditLength = 0; + } + } + // Updates the text style runs by removing characters. Runs with no characters are removed. mImpl->mModel->mLogicalModel->UpdateTextStyleRuns( cursorIndex, -numberOfCharacters ); @@@ -3824,16 -3821,38 +3827,16 @@@ bool Controller::DoRelayout( const Size return true; } - const Vector& lineBreakInfo = mImpl->mModel->mLogicalModel->mLineBreakInfo; - const Vector& wordBreakInfo = mImpl->mModel->mLogicalModel->mWordBreakInfo; - const Vector& characterDirection = mImpl->mModel->mLogicalModel->mCharacterDirections; - const Vector& glyphs = mImpl->mModel->mVisualModel->mGlyphs; - const Vector& glyphsToCharactersMap = mImpl->mModel->mVisualModel->mGlyphsToCharacters; - const Vector& charactersPerGlyph = mImpl->mModel->mVisualModel->mCharactersPerGlyph; - const Character* const textBuffer = mImpl->mModel->mLogicalModel->mText.Begin(); - const float outlineWidth = static_cast( mImpl->mModel->GetOutlineWidth() ); - // Set the layout parameters. Layout::Parameters layoutParameters( size, - textBuffer, - lineBreakInfo.Begin(), - wordBreakInfo.Begin(), - ( 0u != characterDirection.Count() ) ? characterDirection.Begin() : NULL, - glyphs.Begin(), - glyphsToCharactersMap.Begin(), - charactersPerGlyph.Begin(), - charactersToGlyphBuffer, - glyphsPerCharacterBuffer, - totalNumberOfGlyphs, - mImpl->mModel->mHorizontalAlignment, - mImpl->mModel->mLineWrapMode, - outlineWidth, - mImpl->mModel->mIgnoreSpacesAfterText, - mImpl->mModel->mMatchSystemLanguageDirection ); + mImpl->mModel); // Resize the vector of positions to have the same size than the vector of glyphs. Vector& glyphPositions = mImpl->mModel->mVisualModel->mGlyphPositions; glyphPositions.Resize( totalNumberOfGlyphs ); // Whether the last character is a new paragraph character. + const Character* const textBuffer = mImpl->mModel->mLogicalModel->mText.Begin(); mImpl->mTextUpdateInfo.mIsLastCharacterNewParagraph = TextAbstraction::IsNewParagraph( *( textBuffer + ( mImpl->mModel->mLogicalModel->mText.Count() - 1u ) ) ); layoutParameters.isLastNewParagraph = mImpl->mTextUpdateInfo.mIsLastCharacterNewParagraph; @@@ -3869,6 -3888,8 +3872,6 @@@ bool isAutoScrollEnabled = mImpl->mIsAutoScrollEnabled; Size newLayoutSize; viewUpdated = mImpl->mLayoutEngine.LayoutText( layoutParameters, - glyphPositions, - mImpl->mModel->mVisualModel->mLines, newLayoutSize, elideTextEnabled, isAutoScrollEnabled ); @@@ -3885,10 -3906,46 +3888,10 @@@ mImpl->mIsTextDirectionRTL = false; } - // Reorder the lines - if( NO_OPERATION != ( REORDER & operations ) ) + if ( ( NO_OPERATION != ( UPDATE_DIRECTION & operations ) ) && !mImpl->mModel->mVisualModel->mLines.Empty() ) { - Vector& bidirectionalInfo = mImpl->mModel->mLogicalModel->mBidirectionalParagraphInfo; - Vector& bidirectionalLineInfo = mImpl->mModel->mLogicalModel->mBidirectionalLineInfo; - - // Check first if there are paragraphs with bidirectional info. - if( 0u != bidirectionalInfo.Count() ) - { - // Get the lines - const Length numberOfLines = mImpl->mModel->mVisualModel->mLines.Count(); - - // Reorder the lines. - bidirectionalLineInfo.Reserve( numberOfLines ); // Reserve because is not known yet how many lines have right to left characters. - ReorderLines( bidirectionalInfo, - startIndex, - requestedNumberOfCharacters, - mImpl->mModel->mVisualModel->mLines, - bidirectionalLineInfo ); - - // Set the bidirectional info per line into the layout parameters. - layoutParameters.lineBidirectionalInfoRunsBuffer = bidirectionalLineInfo.Begin(); - layoutParameters.numberOfBidirectionalInfoRuns = bidirectionalLineInfo.Count(); - - // Re-layout the text. Reorder those lines with right to left characters. - mImpl->mLayoutEngine.ReLayoutRightToLeftLines( layoutParameters, - startIndex, - requestedNumberOfCharacters, - glyphPositions ); - - if ( ( NO_OPERATION != ( UPDATE_DIRECTION & operations ) ) && ( numberOfLines > 0 ) ) - { - const LineRun* const firstline = mImpl->mModel->mVisualModel->mLines.Begin(); - if ( firstline ) - { - mImpl->mIsTextDirectionRTL = firstline->direction; - } - } - } - } // REORDER + mImpl->mIsTextDirectionRTL = mImpl->mModel->mVisualModel->mLines[0u].direction; + } // Sets the layout size. if( NO_OPERATION != ( UPDATE_LAYOUT_SIZE & operations ) ) @@@ -4297,11 -4354,6 +4300,11 @@@ bool Controller::ShouldClearFocusOnEsca return mImpl->mShouldClearFocusOnEscape; } +Actor Controller::CreateBackgroundActor() +{ + return mImpl->CreateBackgroundActor(); +} + // private : Private contructors & copy operator. Controller::Controller()