From 87ea139b82253a2f2f39a2d906303065bb3362f0 Mon Sep 17 00:00:00 2001 From: Agnelo Vaz Date: Wed, 1 Oct 2014 16:27:18 +0100 Subject: [PATCH 1/1] (TextInput) Ensure scroll position is reset when text is deleted Change-Id: I80b81fb53b123fa428e976e715a606be44a8a198 Signed-off-by: Agnelo Vaz --- .../controls/text-input/text-input-impl.cpp | 41 ++++++++++------------ .../internal/controls/text-input/text-input-impl.h | 6 ++++ 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/base/dali-toolkit/internal/controls/text-input/text-input-impl.cpp b/base/dali-toolkit/internal/controls/text-input/text-input-impl.cpp index d2c6c86..7cb426a 100644 --- a/base/dali-toolkit/internal/controls/text-input/text-input-impl.cpp +++ b/base/dali-toolkit/internal/controls/text-input/text-input-impl.cpp @@ -354,16 +354,20 @@ std::string TextInput::GetMarkupText() const return markupString; } +void TextInput::ShowPlaceholderText( const MarkupProcessor::StyledTextArray& stylePlaceHolderText ) +{ + mDisplayedTextView.SetText( stylePlaceHolderText ); + mPlaceHolderSet = true; + mDisplayedTextView.SetScrollPosition( Vector2( 0.0f,0.0f ) ); +} + void TextInput::SetPlaceholderText( const std::string& placeHolderText ) { // Get the placeholder styled text array from the markup string. MarkupProcessor::GetStyledTextArray( placeHolderText, mStyledPlaceHolderText, IsMarkupProcessingEnabled() ); - if( mStyledText.empty() ) { - // Set the placeholder text only if the styled text is empty. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + ShowPlaceholderText( mStyledPlaceHolderText ); } } @@ -403,9 +407,7 @@ void TextInput::SetText(const std::string& initialText) if( mStyledText.empty() ) { - // If the initial text is empty, set the placeholder text. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + ShowPlaceholderText( mStyledPlaceHolderText ); } else { @@ -2271,9 +2273,7 @@ ImfManager::ImfCallbackData TextInput::ImfEventReceived( Dali::ImfManager& imfMa if( mStyledText.empty() ) { - // Styled text is empty, so set the placeholder text. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + ShowPlaceholderText( mStyledPlaceHolderText ); } } break; @@ -2330,14 +2330,13 @@ bool TextInput::PreEditReceived(const std::string& keyString, std::size_t cursor if( mStyledText.empty() ) { - // Styled text is empty, so set the placeholder text. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + ShowPlaceholderText( mStyledPlaceHolderText ); } else { mDisplayedTextView.RemoveTextFrom( mPreEditStartPosition, numberOfCharactersToReplace ); } + GetTextLayoutInfo(); EmitTextModified(); } @@ -2558,13 +2557,12 @@ void TextInput::DeleteHighlightedText( bool inheritStyle ) mStyledText.erase( start, end ); // erase range of characters - // Remove text from TextView. + // Remove text from TextView and update place holder text if required + // Set the placeholder text only if the styled text is empty. if( mStyledText.empty() ) { - // Styled text is empty, so set the placeholder text. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + ShowPlaceholderText( mStyledPlaceHolderText ); } else { @@ -2691,9 +2689,7 @@ void TextInput::DeleteCharacter( std::size_t positionToDelete ) if( mStyledText.empty() ) { - // Styled text is empty, so set the placeholder text. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + ShowPlaceholderText( mStyledPlaceHolderText ); } else { @@ -5095,9 +5091,8 @@ std::size_t TextInput::DoInsertAt( const Text& text, const std::size_t position, if( textToInsert.empty() && emptyTextView ) { // No character has been added and the text-view was empty. - // Set the placeholder text. - mDisplayedTextView.SetText( mStyledPlaceHolderText ); - mPlaceHolderSet = true; + // Show the placeholder text. + ShowPlaceholderText( mStyledPlaceHolderText ); } else { diff --git a/base/dali-toolkit/internal/controls/text-input/text-input-impl.h b/base/dali-toolkit/internal/controls/text-input/text-input-impl.h index a410205..5801137 100644 --- a/base/dali-toolkit/internal/controls/text-input/text-input-impl.h +++ b/base/dali-toolkit/internal/controls/text-input/text-input-impl.h @@ -1346,6 +1346,12 @@ public: // Public to allow internal testing. */ const Vector4& GetOffsetFromText() const; + /** + * Show the Placeholder text with an already created StyleTextArray + * @param[in] stylePlaceHolderText Required placeholder text to be used + */ + void ShowPlaceholderText( const MarkupProcessor::StyledTextArray& stylePlaceHolderText ); + // Properties /** -- 2.7.4