Remove unnecessray Clipboard creation in text controller 48/286748/5
authorBowon Ryu <bowon.ryu@samsung.com>
Thu, 12 Jan 2023 08:20:10 +0000 (17:20 +0900)
committerBowon Ryu <bowon.ryu@samsung.com>
Tue, 17 Jan 2023 02:13:46 +0000 (11:13 +0900)
Change-Id: Ia6a3dcadaecefb3b5e835734338f5a8c37240f4f
Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-clipboard.h
dali-toolkit/internal/text/controller/text-controller-impl.cpp
dali-toolkit/internal/text/controller/text-controller-impl.h

index 1d06f25..15c74ae 100644 (file)
@@ -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;
index ad532cd..d3d684d 100644 (file)
@@ -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.
index 10ccb16..c483114 100644 (file)
@@ -1051,7 +1051,7 @@ std::pair<int, int> 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();
   }
index faa8772..ba67b39 100644 (file)
@@ -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;
   }