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": {