X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fcontroller%2Ftext-controller-impl.cpp;h=cc38fd0cc3a314eed522655ff1a871008670f982;hb=b9eb55c352f330f86b443bb72c35fdff0b70cfa8;hp=46d9263f51d137649b485b0da907a6e7b5e11eca;hpb=0db00ea132d7106f5adaaf1105bec2f581a2aad2;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/controller/text-controller-impl.cpp b/dali-toolkit/internal/text/controller/text-controller-impl.cpp index 46d9263..cc38fd0 100644 --- a/dali-toolkit/internal/text/controller/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/controller/text-controller-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,14 +27,14 @@ // INTERNAL INCLUDES #include -#include -#include -#include #include #include #include #include #include +#include +#include +#include #include #include #include @@ -51,7 +51,7 @@ Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_TEXT constexpr float MAX_FLOAT = std::numeric_limits::max(); -const std::string EMPTY_STRING(""); +const char* EMPTY_STRING = ""; } // namespace @@ -444,19 +444,6 @@ void Controller::Impl::NotifyInputMethodContext() if(mEventData && mEventData->mInputMethodContext) { CharacterIndex cursorPosition = GetLogicalCursorPosition(); - - const Length numberOfWhiteSpaces = GetNumberOfWhiteSpaces(0u); - - // Update the cursor position by removing the initial white spaces. - if(cursorPosition < numberOfWhiteSpaces) - { - cursorPosition = 0u; - } - else - { - cursorPosition -= numberOfWhiteSpaces; - } - mEventData->mInputMethodContext.SetCursorPosition(cursorPosition); mEventData->mInputMethodContext.NotifyCursorPosition(); } @@ -523,6 +510,19 @@ void Controller::Impl::GetText(std::string& text) const } } +Length Controller::Impl::GetNumberOfCharacters() const +{ + if(!IsShowingPlaceholderText()) + { + return mModel->GetNumberOfCharacters(); + } + else + { + DALI_LOG_INFO(gLogFilter, Debug::Verbose, "Controller::GetNumberOfCharacters %p empty (but showing placeholder)\n", this); + return 0u; + } +} + void Controller::Impl::GetText(CharacterIndex index, std::string& text) const { // Get the total number of characters. @@ -1051,7 +1051,7 @@ std::pair Controller::Impl::GetSelectionIndexes() const void Controller::Impl::ShowClipboard() { - if(mClipboard) + if(EnsureClipboardCreated()) { mClipboard.ShowClipboard(); } @@ -1059,7 +1059,7 @@ void Controller::Impl::ShowClipboard() void Controller::Impl::HideClipboard() { - if(mClipboard && mClipboardHideEnabled) + if(EnsureClipboardCreated() && mClipboardHideEnabled) { mClipboard.HideClipboard(); } @@ -1073,7 +1073,7 @@ void Controller::Impl::SetClipboardHideEnable(bool enable) bool Controller::Impl::CopyStringToClipboard(const std::string& source) { //Send string to clipboard - return (mClipboard && mClipboard.SetItem(source)); + return (EnsureClipboardCreated() && mClipboard.SetItem(source)); } void Controller::Impl::SendSelectionToClipboard(bool deleteAfterSending) @@ -1086,7 +1086,7 @@ void Controller::Impl::SendSelectionToClipboard(bool deleteAfterSending) void Controller::Impl::RequestGetTextFromClipboard() { - if(mClipboard) + if(EnsureClipboardCreated()) { mClipboard.RequestItem(); } @@ -1588,16 +1588,16 @@ bool Controller::Impl::IsScrollable(const Vector2& displacement) { const bool isHorizontalScrollEnabled = mEventData->mDecorator->IsHorizontalScrollEnabled(); const bool isVerticalScrollEnabled = mEventData->mDecorator->IsVerticalScrollEnabled(); - if(isHorizontalScrollEnabled ||isVerticalScrollEnabled) + if(isHorizontalScrollEnabled || isVerticalScrollEnabled) { - const Vector2& targetSize = mModel->mVisualModel->mControlSize; - const Vector2& layoutSize = mModel->mVisualModel->GetLayoutSize(); + const Vector2& targetSize = mModel->mVisualModel->mControlSize; + const Vector2& layoutSize = mModel->mVisualModel->GetLayoutSize(); const Vector2& scrollPosition = mModel->mScrollPosition; if(isHorizontalScrollEnabled) { const float displacementX = displacement.x; - const float positionX = scrollPosition.x + displacementX; + const float positionX = scrollPosition.x + displacementX; if(layoutSize.width > targetSize.width && -positionX > 0.f && -positionX < layoutSize.width - targetSize.width) { isScrollable = true; @@ -1607,7 +1607,7 @@ bool Controller::Impl::IsScrollable(const Vector2& displacement) if(isVerticalScrollEnabled) { const float displacementY = displacement.y; - const float positionY = scrollPosition.y + displacementY; + const float positionY = scrollPosition.y + displacementY; if(layoutSize.height > targetSize.height && -positionY > 0 && -positionY < layoutSize.height - targetSize.height) { isScrollable = true; @@ -1757,6 +1757,9 @@ void Controller::Impl::CopyStrikethroughFromLogicalToVisualModels() mModel->mVisualModel->mStrikethroughRuns.PushBack(strikethroughGlyphRun); } + + // Reset flag. The updates have been applied from logical to visual. + mModel->mLogicalModel->mStrikethroughRunsUpdated = false; } void Controller::Impl::CopyCharacterSpacingFromLogicalToVisualModels() @@ -1790,6 +1793,7 @@ void Controller::Impl::CopyCharacterSpacingFromLogicalToVisualModels() mModel->mVisualModel->mCharacterSpacingRuns.PushBack(characterSpacingGlyphRun); } + mModel->mLogicalModel->mCharacterSpacingRunsUpdated = false; } void Controller::Impl::SetAutoScrollEnabled(bool enable)