From 23a71bdb6818456261dab849d0b243457be6532b Mon Sep 17 00:00:00 2001 From: Bowon Ryu Date: Thu, 12 Jan 2023 17:20:10 +0900 Subject: [PATCH] Remove unnecessray Clipboard creation in text controller Change-Id: Ia6a3dcadaecefb3b5e835734338f5a8c37240f4f Signed-off-by: Bowon Ryu --- .../dali-toolkit-test-utils/toolkit-clipboard.cpp | 14 ++++++++++++++ .../dali-toolkit-test-utils/toolkit-clipboard.h | 7 +++++++ .../internal/text/controller/text-controller-impl.cpp | 8 ++++---- .../internal/text/controller/text-controller-impl.h | 19 ++++++++++++++++--- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.cpp index 1d06f25..15c74ae 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.cpp @@ -51,6 +51,11 @@ public: virtual ~Clipboard(); /** + * @copydoc Dali::Clipboard::IsAvailable() + */ + static bool IsAvailable(); + + /** * @copydoc Dali::Clipboard::SetItem() */ bool SetItem(const std::string &itemData); @@ -113,6 +118,15 @@ Dali::Clipboard Clipboard::Get() return mToolkitClipboard; } +bool Clipboard::IsAvailable() +{ + if(mToolkitClipboard) + { + return true; + } + return false; +} + bool Clipboard::SetItem(const std::string &itemData ) { mItem = itemData; diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.h index ad532cd..d3d684d 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.h @@ -67,6 +67,13 @@ public: static Clipboard Get(); /** + * @brief Checks whether the clipboard is available. + * + * @return true, if it is available, false otherwise. + */ + static bool IsAvailable(); + + /** * Send the given string to the clipboard * @param[in] itemData string to send to clip board * @return bool true if the internal clip board sending was successful. diff --git a/dali-toolkit/internal/text/controller/text-controller-impl.cpp b/dali-toolkit/internal/text/controller/text-controller-impl.cpp index 10ccb16..c483114 100644 --- a/dali-toolkit/internal/text/controller/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/controller/text-controller-impl.cpp @@ -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(); } diff --git a/dali-toolkit/internal/text/controller/text-controller-impl.h b/dali-toolkit/internal/text/controller/text-controller-impl.h index faa8772..ba67b39 100644 --- a/dali-toolkit/internal/text/controller/text-controller-impl.h +++ b/dali-toolkit/internal/text/controller/text-controller-impl.h @@ -370,7 +370,10 @@ struct Controller::Impl mModel = Model::New(); mFontClient = TextAbstraction::FontClient::Get(); - mClipboard = Clipboard::Get(); + if(mEditableControlInterface != nullptr && Clipboard::IsAvailable()) + { + mClipboard = Clipboard::Get(); + } mView.SetVisualModel(mModel->mVisualModel); mView.SetLogicalModel(mModel->mLogicalModel); @@ -551,15 +554,25 @@ struct Controller::Impl */ void GetText(CharacterIndex index, std::string& text) const; + bool EnsureClipboardCreated() + { + if(!mClipboard) + { + mClipboard = Clipboard::Get(); + } + + return mClipboard != nullptr ? true : false; + } + bool IsClipboardEmpty() { - bool result(mClipboard && mClipboard.NumberOfItems()); + bool result(Clipboard::IsAvailable() && EnsureClipboardCreated() && mClipboard.NumberOfItems()); return !result; // If NumberOfItems greater than 0, return false } bool IsClipboardVisible() { - bool result(mClipboard && mClipboard.IsVisible()); + bool result(Clipboard::IsAvailable() && EnsureClipboardCreated() && mClipboard.IsVisible()); return result; } -- 2.7.4