From: Richard Underhill Date: Thu, 17 Apr 2014 10:22:11 +0000 (+0100) Subject: Fix for application crashing X-Git-Tag: dali-2014-wk20-release~38 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=5b8278f83bb96d54b29a45a5454b346b67b91a75 Fix for application crashing [Problem] Markup was needed to correctly parse each character for text splitting operations [Cause] Code assumes a text style per character. Clean solution will require more work [Solution] MarkupProcessing is enabled by default on TextInput. TextView created by TextInput markup is inherited. Scan for markup is no longer called and is forced by MarkupProcessingEnabled flag. Change-Id: I7e4a82271aa8a7eacdfe7aa6e56a12703d467f8b Signed-off-by: Richard Underhill --- diff --git a/dali-toolkit/internal/controls/text-input/text-input-impl.cpp b/dali-toolkit/internal/controls/text-input/text-input-impl.cpp index 69daef1..88bd454 100644 --- a/dali-toolkit/internal/controls/text-input/text-input-impl.cpp +++ b/dali-toolkit/internal/controls/text-input/text-input-impl.cpp @@ -327,7 +327,7 @@ TextInput::TextInput() mUnderlinedPriorToPreEdit ( false ), mCommitByKeyInput( false ), mPlaceHolderSet( false ), - mMarkUpEnabled( false ) + mMarkUpEnabled( true ) { // Updates the line height accordingly with the input style. UpdateLineHeight(); @@ -846,7 +846,6 @@ TextStyle TextInput::GetStyleAtCursor() const if ( !mStyledText.empty() && ( mCursorPosition > 0 ) ) { DALI_ASSERT_DEBUG( ( 0 <= mCursorPosition-1 ) && ( mCursorPosition-1 < mStyledText.size() ) ); - style = mStyledText.at( mCursorPosition-1 ).mStyle; } else // No text. @@ -2029,6 +2028,7 @@ void TextInput::SetUpTouchEvents() void TextInput::CreateTextViewActor() { mDisplayedTextView = Toolkit::TextView::New(); + mDisplayedTextView.SetMarkupProcessingEnabled( mMarkUpEnabled ); mDisplayedTextView.SetParentOrigin(ParentOrigin::TOP_LEFT); mDisplayedTextView.SetAnchorPoint(AnchorPoint::TOP_LEFT); mDisplayedTextView.SetMultilinePolicy(Toolkit::TextView::SplitByWord); diff --git a/dali-toolkit/public-api/markup-processor/markup-processor.cpp b/dali-toolkit/public-api/markup-processor/markup-processor.cpp index ed4cc57..995253a 100644 --- a/dali-toolkit/public-api/markup-processor/markup-processor.cpp +++ b/dali-toolkit/public-api/markup-processor/markup-processor.cpp @@ -542,47 +542,11 @@ bool IsTag( std::string::const_iterator& it, const std::string::const_iterator& } // namespace -static inline bool HasMarkup( const std::string& markupString ) -{ - // Reset counters - unsigned int lessThanCount = 0; - unsigned int greaterThanCount = 0; - - // Check to see if any markup command surrounds are of equal number and not zero - for ( std::string::const_iterator it = markupString.begin(); it != markupString.end(); ++it ) - { - if ( *it == LESS_THAN ) - { - lessThanCount++; - } - else - { - if ( *it == GREATER_THAN ) - { - greaterThanCount++; - } - else - { - if ( *it == BACK_SLASH ) - { - return true; - } - } - } - } - if ( !lessThanCount || !greaterThanCount || lessThanCount != greaterThanCount ) - { - return false; - } - return true; -} - void GetStyledTextArray( const std::string& markupString, StyledTextArray& styledTextArray, bool scanForMarkup ) { styledTextArray.clear(); - // Scan markup ( if necessary ) to see if the string contains any change in style from default? - if ( !scanForMarkup || !HasMarkup( markupString ) ) + if ( !scanForMarkup ) { styledTextArray.push_back( StyledText( Text( markupString ), TextStyle() ) ); return;