From: Paul Wisbey
Date: Tue, 4 Aug 2015 15:18:21 +0000 (-0700)
Subject: Merge "Stop CreateSolidActor from creating an RGBA BufferImage when it isn't needed...
X-Git-Tag: dali_1.0.52~5
X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=88e08dd541d5441bd0b6661e392621c1d6ba4d6a;hp=d3c06248048b35e516a2fb0ede9230c450d54b8f
Merge "Stop CreateSolidActor from creating an RGBA BufferImage when it isn't needed" into devel/master
---
diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp
index 7aeb471..f6f9730 100644
--- a/automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp
+++ b/automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp
@@ -41,7 +41,7 @@ int UtcDaliToolkitTextSelectionPopupNewP(void)
DALI_TEST_CHECK( !textSelectionPopup );
- textSelectionPopup = TextSelectionPopup::New( TextSelectionPopup::COPY, NULL );
+ textSelectionPopup = TextSelectionPopup::New( NULL );
DALI_TEST_CHECK( textSelectionPopup );
END_TEST;
@@ -61,7 +61,7 @@ int UtcDaliToolkitTextSelectionPopupCopyConstructorP(void)
ToolkitTestApplication application;
TextSelectionPopup textSelectionPopup;
- textSelectionPopup = TextSelectionPopup::New( TextSelectionPopup::COPY, NULL );
+ textSelectionPopup = TextSelectionPopup::New( NULL );
TextSelectionPopup copy( textSelectionPopup );
DALI_TEST_CHECK( copy == textSelectionPopup );
@@ -85,7 +85,7 @@ int UtcDaliToolkitTextSelectionPopupAssignmentOperatorP(void)
{
ToolkitTestApplication application;
TextSelectionPopup textSelectionPopup;
- textSelectionPopup = TextSelectionPopup::New( TextSelectionPopup::COPY, NULL );
+ textSelectionPopup = TextSelectionPopup::New( NULL );
TextSelectionPopup copy;
copy = textSelectionPopup;
@@ -97,7 +97,7 @@ int UtcDaliToolkitTextSelectionPopupDownCastP(void)
{
ToolkitTestApplication application;
TextSelectionPopup textSelectionPopup;
- textSelectionPopup = TextSelectionPopup::New( TextSelectionPopup::COPY, NULL );
+ textSelectionPopup = TextSelectionPopup::New( NULL );
TextSelectionPopup cast = TextSelectionPopup::DownCast( textSelectionPopup );
diff --git a/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.cpp b/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.cpp
index 4b9f548..28a5819 100644
--- a/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.cpp
+++ b/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.cpp
@@ -29,11 +29,9 @@ namespace Dali
namespace Toolkit
{
-TextSelectionPopup TextSelectionPopup::New( Buttons enabledButtons,
- TextSelectionPopupCallbackInterface* callbackInterface )
+TextSelectionPopup TextSelectionPopup::New( TextSelectionPopupCallbackInterface* callbackInterface )
{
- return Internal::TextSelectionPopup::New( enabledButtons,
- callbackInterface );
+ return Internal::TextSelectionPopup::New( callbackInterface );
}
TextSelectionPopup::TextSelectionPopup()
@@ -63,6 +61,11 @@ TextSelectionPopup TextSelectionPopup::DownCast( BaseHandle handle )
return Control::DownCast(handle);
}
+void TextSelectionPopup::EnableButtons( Toolkit::TextSelectionPopup::Buttons buttonsToEnable )
+{
+ GetImpl(*this).EnableButtons( buttonsToEnable );
+}
+
void TextSelectionPopup::RaiseAbove( Layer target )
{
GetImpl(*this).RaiseAbove( target );
@@ -73,6 +76,11 @@ void TextSelectionPopup::ShowPopup()
GetImpl(*this).ShowPopup();
}
+void TextSelectionPopup::HidePopup()
+{
+ GetImpl(*this).HidePopup();
+}
+
TextSelectionPopup::TextSelectionPopup( Internal::TextSelectionPopup& implementation )
: Control(implementation)
{
diff --git a/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h b/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h
index fd473ad..4eec4c1 100644
--- a/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h
+++ b/dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h
@@ -89,18 +89,18 @@ public:
POPUP_DIVIDER_COLOR, ///< name "popup-divider-color", The color of the divider between options, type VECTOR4
POPUP_ICON_COLOR, ///< name "popup-icon-color", The color of the icons (if supplied), type VECTOR4
POPUP_PRESSED_COLOR, ///< name "popup-pressed-color", The color of the option when pressed, type VECTOR4
- POPUP_PRESSED_IMAGE ///< name "popup-pressed-image", The image to use for the option when pressed, type STRING
+ POPUP_PRESSED_IMAGE, ///< name "popup-pressed-image", The image to use for the option when pressed, type STRING
+ POPUP_FADE_IN_DURATION, ///< name "popup-fade-in-duration", The duration of the fade-in animation, type FLOAT
+ POPUP_FADE_OUT_DURATION, ///< name "popup-fade-out-duration", The duration of the fade-out animation, type FLOAT
};
};
/**
- * Create the TextSelectionPopup control with the given set of buttons.
- * @param[in] enabledButtons The given set of buttons to enable
+ * Create the TextSelectionPopup control.
* @param[in] callbackInterface The text popup callback interface which receives the button click callbacks.
* @return A handle to the TextSelectionPopup control.
*/
- static TextSelectionPopup New( Buttons enabledButtons,
- TextSelectionPopupCallbackInterface* callbackInterface );
+ static TextSelectionPopup New( TextSelectionPopupCallbackInterface* callbackInterface );
/**
* @brief Creates an empty handle.
@@ -141,6 +141,12 @@ public:
static TextSelectionPopup DownCast( BaseHandle handle );
/**
+ * @brief Specify which buttons to show in Popup
+ * @param[in] buttonsToEnable Buttons to enable
+ */
+ void EnableButtons( Toolkit::TextSelectionPopup::Buttons buttonsToEnable );
+
+ /**
* @brief Raises the toolbar's layer above the given @e target layer.
*
* @param[in] target The layer to get above of.
@@ -148,10 +154,15 @@ public:
void RaiseAbove( Layer target );
/**
- * @brief Show the Popup
+ * @brief Show the Popup if not being shown
*/
void ShowPopup();
+ /**
+ * @brief Hide the Popup if shown
+ */
+ void HidePopup();
+
public: // Not intended for application developers
/**
diff --git a/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.cpp b/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.cpp
index df103cf..46c32c8 100644
--- a/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.cpp
+++ b/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.cpp
@@ -61,7 +61,6 @@ void TextSelectionToolbar::AddOption( Actor& option )
GetImpl(*this).AddOption(option);
}
-
void TextSelectionToolbar::AddDivider( Actor& divider )
{
GetImpl(*this).AddDivider( divider );
diff --git a/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h b/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h
index d0c5976..2fbf611 100644
--- a/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h
+++ b/dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h
@@ -62,7 +62,7 @@ public:
{
enum
{
- MAX_SIZE = PROPERTY_START_INDEX ///< name "popup-max-size", The maximum size the Popup can be, type VECTOR2
+ MAX_SIZE = PROPERTY_START_INDEX ///< name "max-size", The maximum size the Popup can be, type VECTOR2
};
};
diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp
index bc54dca..0c47877 100644
--- a/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp
+++ b/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp
@@ -25,11 +25,13 @@
#include
// EXTERNAL INCLUDES
+#include
#include
#include
#include
#include
#include
+
#include
#include
@@ -79,7 +81,7 @@ const char* const OPTION_CLIPBOARD("option-clipboard");
BaseHandle Create()
{
- return Toolkit::TextSelectionPopup::New( Toolkit::TextSelectionPopup::NONE, NULL );
+ return Toolkit::TextSelectionPopup::New( NULL );
}
// Setup properties, signals and actions using the type-registry.
@@ -101,14 +103,15 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionPopup, "popup-divider-color",
DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionPopup, "popup-icon-color", VECTOR4, POPUP_ICON_COLOR )
DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionPopup, "popup-pressed-color", VECTOR4, POPUP_PRESSED_COLOR )
DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionPopup, "popup-pressed-image", STRING, POPUP_PRESSED_IMAGE )
+DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionPopup, "popup-fade-in-duration", FLOAT, POPUP_FADE_IN_DURATION )
+DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionPopup, "popup-fade-out-duration", FLOAT, POPUP_FADE_OUT_DURATION )
DALI_TYPE_REGISTRATION_END()
} // namespace
-Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New( Toolkit::TextSelectionPopup::Buttons buttonsToEnable,
- TextSelectionPopupCallbackInterface* callbackInterface )
+Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New( TextSelectionPopupCallbackInterface* callbackInterface )
{
// Create the implementation, temporarily owned by this handle on stack
IntrusivePtr< TextSelectionPopup > impl = new TextSelectionPopup( callbackInterface );
@@ -116,7 +119,6 @@ Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New( Toolkit::TextSelectio
// Pass ownership to CustomActor handle
Dali::Toolkit::TextSelectionPopup handle( *impl );
- impl->mEnabledButtons = buttonsToEnable;
// Second-phase init of the implementation
// This can only be done after the CustomActor connection has been made...
impl->Initialize();
@@ -210,6 +212,16 @@ void TextSelectionPopup::SetProperty( BaseObject* object, Property::Index index,
impl.SetPressedImage( value.Get< std::string >() );
break;
}
+ case Toolkit::TextSelectionPopup::Property::POPUP_FADE_IN_DURATION:
+ {
+ impl.mFadeInDuration = value.Get < float >();
+ break;
+ }
+ case Toolkit::TextSelectionPopup::Property::POPUP_FADE_OUT_DURATION:
+ {
+ impl.mFadeOutDuration = value.Get < float >();
+ break;
+ }
} // switch
} // TextSelectionPopup
}
@@ -305,11 +317,27 @@ Property::Value TextSelectionPopup::GetProperty( BaseObject* object, Property::I
value = impl.GetPressedImage();
break;
}
+ case Toolkit::TextSelectionPopup::Property::POPUP_FADE_IN_DURATION:
+ {
+ value = impl.mFadeInDuration;
+ break;
+ }
+ case Toolkit::TextSelectionPopup::Property::POPUP_FADE_OUT_DURATION:
+ {
+ value = impl.mFadeOutDuration;
+ break;
+ }
} // switch
}
return value;
}
+void TextSelectionPopup::EnableButtons( Toolkit::TextSelectionPopup::Buttons buttonsToEnable )
+{
+ mEnabledButtons = buttonsToEnable;
+ mButtonsChanged = true;
+}
+
void TextSelectionPopup::RaiseAbove( Layer target )
{
if( mToolbar )
@@ -320,12 +348,36 @@ void TextSelectionPopup::RaiseAbove( Layer target )
void TextSelectionPopup::ShowPopup()
{
- AddPopupOptionsToToolbar( mShowIcons, mShowCaptions );
+ if ( !mPopupShowing || mButtonsChanged )
+ {
+ Actor self = Self();
+ AddPopupOptionsToToolbar( mShowIcons, mShowCaptions );
+
+ Animation animation = Animation::New( mFadeInDuration );
+ animation.AnimateTo( Property(self, Actor::Property::COLOR_ALPHA), 1.0f );
+ animation.Play();
+ mPopupShowing = true;
+ }
+}
+
+void TextSelectionPopup::HidePopup()
+{
+ if ( mPopupShowing )
+ {
+ mPopupShowing = false;
+ Actor self = Self();
+ Animation animation = Animation::New( mFadeOutDuration );
+ animation.AnimateTo( Property(self, Actor::Property::COLOR_ALPHA), 0.0f );
+ animation.FinishedSignal().Connect( this, &TextSelectionPopup::HideAnimationFinished );
+ animation.Play();
+ }
}
void TextSelectionPopup::OnInitialize()
{
- CreatePopup();
+ Actor self = Self();
+ self.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS );
+ self.SetProperty( Actor::Property::COLOR_ALPHA, 0.0f );
}
void TextSelectionPopup::OnStageConnection( int depth )
@@ -336,6 +388,15 @@ void TextSelectionPopup::OnStageConnection( int depth )
// TextSelectionToolbar::OnStageConnection() will set the depths of all the popup's components.
}
+void TextSelectionPopup::HideAnimationFinished( Animation& animation )
+{
+ Actor self = Self();
+ if ( !mPopupShowing ) // During the Hide/Fade animation there could be a call to Show the Popup again, mPopupShowing will be true in this case.
+ {
+ UnparentAndReset( self ); // Popup needs to be shown so do not unparent
+ }
+}
+
bool TextSelectionPopup::OnCutButtonPressed( Toolkit::Button button )
{
if( mCallbackInterface )
@@ -402,6 +463,7 @@ void TextSelectionPopup::SetDimensionToCustomise( const PopupCustomisations& set
{
case POPUP_MAXIMUM_SIZE :
{
+ mPopupMaxSize = dimension;
if ( mToolbar )
{
mToolbar.SetProperty( Toolkit::TextSelectionToolbar::Property::MAX_SIZE, dimension );
@@ -438,7 +500,14 @@ Size TextSelectionPopup::GetDimensionToCustomise( const PopupCustomisations& set
{
case POPUP_MAXIMUM_SIZE :
{
- return mToolbar.GetProperty( Toolkit::TextSelectionToolbar::Property::MAX_SIZE ).Get< Vector2 >();
+ if ( mToolbar )
+ {
+ return mToolbar.GetProperty( Toolkit::TextSelectionToolbar::Property::MAX_SIZE ).Get< Vector2 >();
+ }
+ else
+ {
+ return mPopupMaxSize;
+ }
}
case OPTION_MAXIMUM_SIZE :
{
@@ -677,6 +746,26 @@ std::string TextSelectionPopup::GetPressedImage() const
void TextSelectionPopup::AddPopupOptionsToToolbar( bool showIcons, bool showCaptions )
{
+ CreateOrderedListOfPopupOptions();
+
+ mButtonsChanged = false;
+ UnparentAndReset( mToolbar);
+
+ if( !mToolbar )
+ {
+ Actor self = Self();
+ mToolbar = Toolkit::TextSelectionToolbar::New();
+ if ( mPopupMaxSize != Vector2::ZERO ) // If PopupMaxSize property set then apply to Toolbar. Toolbar currently is not retriving this from json
+ {
+ mToolbar.SetProperty( Toolkit::TextSelectionToolbar::Property::MAX_SIZE, mPopupMaxSize );
+ }
+ mToolbar.SetParentOrigin( ParentOrigin::CENTER );
+#ifdef DECORATOR_DEBUG
+ mToolbar.SetName("TextSelectionToolbar");
+#endif
+ self.Add( mToolbar );
+ }
+
// Iterate list of buttons and add active ones to Toolbar
std::size_t numberOfOptionsRequired = GetNumberOfEnabledOptions();
std::size_t numberOfOptionsAdded = 0u;
@@ -691,23 +780,12 @@ std::string TextSelectionPopup::GetPressedImage() const
}
}
- void TextSelectionPopup::CreatePopup()
- {
- Actor self = Self();
- CreateOrderedListOfPopupOptions();
- self.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS );
-
- if( !mToolbar )
- {
- mToolbar = Toolkit::TextSelectionToolbar::New();
- mToolbar.SetParentOrigin( ParentOrigin::CENTER );
- self.Add( mToolbar );
- }
- }
-
TextSelectionPopup::TextSelectionPopup( TextSelectionPopupCallbackInterface* callbackInterface )
: Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ),
mToolbar(),
+ mPopupMaxSize(),
+ mOptionMaxSize(),
+ mOptionMinSize(),
mOptionDividerSize(),
mEnabledButtons( Toolkit::TextSelectionPopup::NONE ),
mCallbackInterface( callbackInterface ),
@@ -720,8 +798,12 @@ TextSelectionPopup::TextSelectionPopup( TextSelectionPopupCallbackInterface* cal
mCopyOptionPriority ( 3 ),
mPasteOptionPriority ( 5 ),
mClipboardOptionPriority( 6 ),
+ mFadeInDuration(0.0f),
+ mFadeOutDuration(0.0f),
mShowIcons( false ),
- mShowCaptions( true )
+ mShowCaptions( true ),
+ mPopupShowing( false ),
+ mButtonsChanged( false )
{
}
diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.h b/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.h
index 8e0141a..e4cef74 100644
--- a/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.h
+++ b/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.h
@@ -97,12 +97,10 @@ public:
/**
* @brief New constructor with provided buttons to enable.
- * @param[in] buttonsToEnable bit mask of buttons to enable
* @param[in] callbackInterface The text popup callback interface which receives the button click callbacks.
* @return A handle to the TextSelectionPopup control.
*/
- static Toolkit::TextSelectionPopup New( Toolkit::TextSelectionPopup::Buttons buttonsToEnable,
- TextSelectionPopupCallbackInterface* callbackInterface );
+ static Toolkit::TextSelectionPopup New( TextSelectionPopupCallbackInterface* callbackInterface );
// Properties
@@ -124,6 +122,11 @@ public:
static Property::Value GetProperty( BaseObject* object, Property::Index index );
/**
+ * @copydoc Toolkit::EnableButtons
+ */
+ void EnableButtons( Toolkit::TextSelectionPopup::Buttons buttonsToEnable );
+
+ /**
* @copydoc Toolkit::TextSelectionPopup::RaiseAbove()
*/
void RaiseAbove( Layer target );
@@ -133,6 +136,11 @@ public:
*/
void ShowPopup();
+ /**
+ * @copydoc Toolkiut::TextSelectionPopup::HidePopup()
+ */
+ void HidePopup();
+
private: // From Control
/**
@@ -147,6 +155,8 @@ private: // From Control
private: // Implementation
+ void HideAnimationFinished( Animation& animation );
+
/**
* @brief When the cut button is pressed.
* @param[in] button the button pressed
@@ -242,8 +252,6 @@ private: // Implementation
void AddPopupOptionsToToolbar( bool showIcons, bool showCaptions );
- void CreatePopup();
-
/**
* Construct a new TextField.
*/
@@ -275,6 +283,7 @@ private: // Data
Image mSelectIconImage;
Image mSelectAllIconImage;
+ Size mPopupMaxSize; // Maximum size of the Popup
Size mOptionMaxSize; // Maximum size of an Option button
Size mOptionMinSize; // Minimum size of an Option button
Size mOptionDividerSize; // Size of divider line
@@ -296,9 +305,13 @@ private: // Data
std::size_t mCopyOptionPriority; // Position of Copy button
std::size_t mPasteOptionPriority; // Position of Paste button
std::size_t mClipboardOptionPriority; // Position of Clipboard button
+ float mFadeInDuration; // Duration of the animation to fade in the Popup
+ float mFadeOutDuration; // Duration of the animation to fade out the Popup
bool mShowIcons:1; // Flag to show icons
bool mShowCaptions:1; // Flag to show text captions
+ bool mPopupShowing:1; // Flag to indicate Popup showing
+ bool mButtonsChanged:1; // Flag to indicate the Popup Buttons have changed
};
diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp
index 78d8f5f..eb6efe4 100644
--- a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp
+++ b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp
@@ -255,7 +255,7 @@ void TextSelectionToolbar::RaiseAbove( Layer target )
}
TextSelectionToolbar::TextSelectionToolbar()
-: Control( ControlBehaviour( ControlBehaviour( ACTOR_BEHAVIOUR_NONE ) ) ),
+: Control( ControlBehaviour( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ) ),
mMaxSize (),
mIndexInTable( 0 ),
mDividerIndexes()
diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp
index ed67d72..380d97b 100644
--- a/dali-toolkit/internal/text/decorator/text-decorator.cpp
+++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp
@@ -384,18 +384,13 @@ struct Decorator::Impl : public ConnectionTracker
if( mActiveCopyPastePopup )
{
- if( !mCopyPastePopup.actor.GetParent() )
- {
- mActiveLayer.Add( mCopyPastePopup.actor );
- }
-
- mCopyPastePopup.actor.RaiseAbove( mActiveLayer );
+ ShowPopup();
}
else
{
if( mCopyPastePopup.actor )
{
- mCopyPastePopup.actor.Unparent();
+ mCopyPastePopup.actor.HidePopup();
}
}
}
@@ -411,6 +406,22 @@ struct Decorator::Impl : public ConnectionTracker
DeterminePositionPopup();
}
+ void ShowPopup()
+ {
+ if ( !mCopyPastePopup.actor )
+ {
+ return;
+ }
+
+ if( !mCopyPastePopup.actor.GetParent() )
+ {
+ mActiveLayer.Add( mCopyPastePopup.actor );
+ }
+
+ mCopyPastePopup.actor.RaiseAbove( mActiveLayer );
+ mCopyPastePopup.actor.ShowPopup();
+ }
+
void DeterminePositionPopup()
{
if ( !mActiveCopyPastePopup )
@@ -445,7 +456,6 @@ struct Decorator::Impl : public ConnectionTracker
void PopupRelayoutComplete( Actor actor )
{
// Size negotiation for CopyPastePopup complete so can get the size and constrain position within bounding box.
- mCopyPastePopup.actor.OnRelayoutSignal().Disconnect( this, &Decorator::Impl::PopupRelayoutComplete );
DeterminePositionPopup();
}
@@ -1498,20 +1508,17 @@ void Decorator::SetEnabledPopupButtons( TextSelectionPopup::Buttons& enabledButt
{
mImpl->mEnabledPopupButtons = enabledButtonsBitMask;
- UnparentAndReset( mImpl->mCopyPastePopup.actor );
- mImpl->mCopyPastePopup.actor = TextSelectionPopup::New( mImpl->mEnabledPopupButtons,
- &mImpl->mTextSelectionPopupCallbackInterface );
+ if ( !mImpl->mCopyPastePopup.actor )
+ {
+ mImpl->mCopyPastePopup.actor = TextSelectionPopup::New( &mImpl->mTextSelectionPopupCallbackInterface );
#ifdef DECORATOR_DEBUG
- mImpl->mCopyPastePopup.actor.SetName("mCopyPastePopup");
+ mImpl->mCopyPastePopup.actor.SetName("mCopyPastePopup");
#endif
- mImpl->mCopyPastePopup.actor.SetAnchorPoint( AnchorPoint::CENTER );
- mImpl->mCopyPastePopup.actor.OnRelayoutSignal().Connect( mImpl, &Decorator::Impl::PopupRelayoutComplete ); // Position popup after size negotiation
-
- if( mImpl->mActiveLayer )
- {
- mImpl->mActiveLayer.Add( mImpl->mCopyPastePopup.actor );
- mImpl->mCopyPastePopup.actor.ShowPopup();
+ mImpl->mCopyPastePopup.actor.SetAnchorPoint( AnchorPoint::CENTER );
+ mImpl->mCopyPastePopup.actor.OnRelayoutSignal().Connect( mImpl, &Decorator::Impl::PopupRelayoutComplete ); // Position popup after size negotiation
}
+
+ mImpl->mCopyPastePopup.actor.EnableButtons( mImpl->mEnabledPopupButtons );
}
TextSelectionPopup::Buttons& Decorator::GetEnabledPopupButtons()
diff --git a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json
index 8a0d1ee..384c27b 100644
--- a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json
+++ b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json
@@ -98,7 +98,9 @@ distributing this software or its derivatives.
"popup-pressed-color":[0.24,0.72,0.8,0.11],
"background-image": {
"filename": "{DALI_IMAGE_DIR}selection-popup-bg.9.png"
- }
+ },
+ "popup-fade-in-duration":0.25,
+ "popup-fade-out-duration":0.25
},
"scrollview":
{
diff --git a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json
index d9d86e5..2577e14 100644
--- a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json
+++ b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json
@@ -98,7 +98,9 @@ distributing this software or its derivatives.
"popup-pressed-color":[0.24,0.72,0.8,0.11],
"background-image": {
"filename": "{DALI_IMAGE_DIR}selection-popup-bg.9.png"
- }
+ },
+ "popup-fade-in-duration":0.25,
+ "popup-fade-out-duration":0.25
},
"scrollview":
{