From e9e5fdaaf29bbb7204e4c2ebd5be48f541c0114d Mon Sep 17 00:00:00 2001 From: "minho.sun" Date: Fri, 22 Dec 2017 13:40:58 +0900 Subject: [PATCH] Fix text scroll start position issue When user sets textlabel auto scroll, it starts after aligning. It makes long text start its scrolling at the odd position when horizontal alignment is not begin. Makes long text always start its scrolling at the begin position even if horizontal alignment is set. Change-Id: I3d3e93dd7c8bf4925ccfdef083ab0c7ac5c44523 Signed-off-by: minho.sun --- .../internal/controls/text-controls/text-label-impl.cpp | 2 +- dali-toolkit/internal/text/text-scroller.cpp | 14 ++++++++++++-- dali-toolkit/internal/text/text-scroller.h | 3 ++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 3f420b5..0cbb799 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -1021,7 +1021,7 @@ void TextLabel::SetUpAutoScrolling() // Set parameters for scrolling Renderer renderer = static_cast( GetImplementation( mVisual ) ).GetRenderer(); - mTextScroller->SetParameters( Self(), renderer, textureSet, controlSize, verifiedSize, wrapGap, direction, mController->GetHorizontalAlignment(), mController->GetVerticalAlignment() ); + mTextScroller->SetParameters( Self(), renderer, textureSet, controlSize, verifiedSize, wrapGap, direction, mController->GetHorizontalAlignment(), mController->GetVerticalAlignment(), mController->IsTextElideEnabled() ); } void TextLabel::ScrollingFinished() diff --git a/dali-toolkit/internal/text/text-scroller.cpp b/dali-toolkit/internal/text/text-scroller.cpp index f8089a2..11ac3e4 100644 --- a/dali-toolkit/internal/text/text-scroller.cpp +++ b/dali-toolkit/internal/text/text-scroller.cpp @@ -260,7 +260,7 @@ TextScroller::~TextScroller() { } -void TextScroller::SetParameters( Actor scrollingTextActor, Renderer renderer, TextureSet textureSet, const Size& controlSize, const Size& textureSize, const float wrapGap, CharacterDirection direction, HorizontalAlignment::Type horizontalAlignment, VerticalAlignment::Type verticalAlignment ) +void TextScroller::SetParameters( Actor scrollingTextActor, Renderer renderer, TextureSet textureSet, const Size& controlSize, const Size& textureSize, const float wrapGap, CharacterDirection direction, HorizontalAlignment::Type horizontalAlignment, VerticalAlignment::Type verticalAlignment, bool isTextElided ) { DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextScroller::SetParameters controlSize[%f,%f] textureSize[%f,%f] direction[%d]\n", controlSize.x, controlSize.y, textureSize.x, textureSize.y, direction ); @@ -298,7 +298,17 @@ void TextScroller::SetParameters( Actor scrollingTextActor, Renderer renderer, T DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextScroller::SetParameters wrapGap[%f]\n", wrapGap ); - const float horizontalAlign = HORIZONTAL_ALIGNMENT_TABLE[ horizontalAlignment ][ direction ]; + float horizontalAlign; + + if( isTextElided ) + { + // if Text is elided, scroll should start at the begin of text. + horizontalAlign = HORIZONTAL_ALIGNMENT_TABLE[HorizontalAlignment::BEGIN][ direction ]; + } + else + { + horizontalAlign = HORIZONTAL_ALIGNMENT_TABLE[ horizontalAlignment ][ direction ]; + } const float verticalAlign = VERTICAL_ALIGNMENT_TABLE[ verticalAlignment ]; DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextScroller::SetParameters horizontalAlign[%f], verticalAlign[%f]\n", horizontalAlign, verticalAlign ); diff --git a/dali-toolkit/internal/text/text-scroller.h b/dali-toolkit/internal/text/text-scroller.h index a7a6410..4000023 100644 --- a/dali-toolkit/internal/text/text-scroller.h +++ b/dali-toolkit/internal/text/text-scroller.h @@ -70,8 +70,9 @@ public: * @param[in] direction text direction true for right to left text * @param[in] horizontalAlignment horizontal alignment of the text * @param[in] verticalAlignment vertical alignment of the text + * @param[in] isTextElided whether text is elided or not */ - void SetParameters( Actor scrollingTextActor, Dali::Renderer renderer, TextureSet textureSet, const Size& controlSize, const Size& textureSize, const float wrapGap, CharacterDirection direction, HorizontalAlignment::Type horizontalAlignment, VerticalAlignment::Type verticalAlignment ); + void SetParameters( Actor scrollingTextActor, Dali::Renderer renderer, TextureSet textureSet, const Size& controlSize, const Size& textureSize, const float wrapGap, CharacterDirection direction, HorizontalAlignment::Type horizontalAlignment, VerticalAlignment::Type verticalAlignment, bool isTextElided ); /** * @brief Set the gap distance to elapse before the text wraps around -- 2.7.4