From 4107c0f5ea45cd9e4e61d30c30e99de0e00287fc Mon Sep 17 00:00:00 2001 From: Adeel Kazmi Date: Tue, 22 Nov 2016 19:20:34 +0000 Subject: [PATCH] (Popup) Fix various bugs in Popup The border was not a property and wasn't being used properly anyway. The tail calculation was wrong. Change-Id: Id4438c3edb4316e3f38ad9606758667c9b7de3c6 --- .../src/dali-toolkit/utc-Dali-Popup.cpp | 25 +++- dali-toolkit/devel-api/controls/popup/popup.h | 3 +- .../internal/controls/popup/popup-impl.cpp | 144 +++++++++++++++------ dali-toolkit/internal/controls/popup/popup-impl.h | 9 +- .../styles/480x800/dali-toolkit-default-theme.json | 14 +- .../720x1280/dali-toolkit-default-theme.json | 14 +- .../styles/images-common/00_popup_bg.9.png | Bin 1411 -> 1608 bytes 7 files changed, 163 insertions(+), 46 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp index 1cd8ad6..6bd2c05 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -1433,3 +1433,26 @@ int UtcDaliPopupOnKeyEvent(void) END_TEST; } + +int UtcDaliPopupSetPopupBackgroundBorderProperty(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Set the background border property of a popup & retrieve it" ); + Popup popup = Popup::New(); + + Rect< int > rect( 40, 30, 20, 10 ); + tet_infoline( "Ensure value we want to set is different from what is already set" ); + DALI_TEST_CHECK( rect != popup.GetProperty( Popup::Property::POPUP_BACKGROUND_BORDER ).Get< Rect< int > >() ); + + tet_infoline( "Set the property and retrieve it to make sure it's the value we set" ); + popup.SetProperty( Popup::Property::POPUP_BACKGROUND_BORDER, rect ); + DALI_TEST_EQUALS( rect, popup.GetProperty( Popup::Property::POPUP_BACKGROUND_BORDER ).Get< Rect< int > >(), TEST_LOCATION ); + + tet_infoline( "Set a vector4 as well which should also work" ); + Vector4 vectorValue( 10.0f, 20.0f, 30.0f, 40.0f ); + popup.SetProperty( Popup::Property::POPUP_BACKGROUND_BORDER, vectorValue ); + DALI_TEST_EQUALS( Rect< int >( 10, 20, 30, 40 ), popup.GetProperty( Popup::Property::POPUP_BACKGROUND_BORDER ).Get< Rect< int > >(), TEST_LOCATION ); + + END_TEST; +} diff --git a/dali-toolkit/devel-api/controls/popup/popup.h b/dali-toolkit/devel-api/controls/popup/popup.h index 6251c01..3d3d915 100644 --- a/dali-toolkit/devel-api/controls/popup/popup.h +++ b/dali-toolkit/devel-api/controls/popup/popup.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_POPUP_H__ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -89,6 +89,7 @@ public: BACKING_ENABLED, ///< name "backingEnabled", type bool BACKING_COLOR, ///< name "backingColor", type Vector4 POPUP_BACKGROUND_IMAGE, ///< name "popupBackgroundImage", type std::string + POPUP_BACKGROUND_BORDER, ///< name "popupBackgroundBorder", type Rect< int >, Values are in the order: left, right, bottom, top TAIL_UP_IMAGE, ///< name "tailUpImage", type std::string TAIL_DOWN_IMAGE, ///< name "tailDownImage", type std::string TAIL_LEFT_IMAGE, ///< name "tailLeftImage", type std::string diff --git a/dali-toolkit/internal/controls/popup/popup-impl.cpp b/dali-toolkit/internal/controls/popup/popup-impl.cpp index 7ac2a28..e59dc0c 100755 --- a/dali-toolkit/internal/controls/popup/popup-impl.cpp +++ b/dali-toolkit/internal/controls/popup/popup-impl.cpp @@ -107,39 +107,40 @@ BaseHandle CreateToast() DALI_TYPE_REGISTRATION_BEGIN( Toolkit::Popup, Toolkit::Control, Create ) // Main content related properties. -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "title", MAP, TITLE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "content", MAP, CONTENT ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "footer", MAP, FOOTER ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "displayState", STRING, DISPLAY_STATE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "touchTransparent", BOOLEAN, TOUCH_TRANSPARENT ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "title", MAP, TITLE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "content", MAP, CONTENT ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "footer", MAP, FOOTER ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "displayState", STRING, DISPLAY_STATE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "touchTransparent", BOOLEAN, TOUCH_TRANSPARENT ) // Contextual related properties. -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailVisibility", BOOLEAN, TAIL_VISIBILITY ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailPosition", VECTOR3, TAIL_POSITION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "contextualMode", STRING, CONTEXTUAL_MODE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailVisibility", BOOLEAN, TAIL_VISIBILITY ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailPosition", VECTOR3, TAIL_POSITION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "contextualMode", STRING, CONTEXTUAL_MODE ) // Animation related properties. -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "animationDuration", FLOAT, ANIMATION_DURATION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "animationMode", STRING, ANIMATION_MODE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "entryAnimation", MAP, ENTRY_ANIMATION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "exitAnimation", MAP, EXIT_ANIMATION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "autoHideDelay", INTEGER, AUTO_HIDE_DELAY ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "animationDuration", FLOAT, ANIMATION_DURATION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "animationMode", STRING, ANIMATION_MODE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "entryAnimation", MAP, ENTRY_ANIMATION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "exitAnimation", MAP, EXIT_ANIMATION ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "autoHideDelay", INTEGER, AUTO_HIDE_DELAY ) // Style related properties. -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "backingEnabled", BOOLEAN, BACKING_ENABLED ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "backingColor", VECTOR4, BACKING_COLOR ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "popupBackgroundImage", STRING, POPUP_BACKGROUND_IMAGE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailUpImage", STRING, TAIL_UP_IMAGE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailDownImage", STRING, TAIL_DOWN_IMAGE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailLeftImage", STRING, TAIL_LEFT_IMAGE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailRightImage", STRING, TAIL_RIGHT_IMAGE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "backingEnabled", BOOLEAN, BACKING_ENABLED ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "backingColor", VECTOR4, BACKING_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "popupBackgroundImage", STRING, POPUP_BACKGROUND_IMAGE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "popupBackgroundBorder", RECTANGLE, POPUP_BACKGROUND_BORDER ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailUpImage", STRING, TAIL_UP_IMAGE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailDownImage", STRING, TAIL_DOWN_IMAGE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailLeftImage", STRING, TAIL_LEFT_IMAGE ) +DALI_PROPERTY_REGISTRATION( Toolkit, Popup, "tailRightImage", STRING, TAIL_RIGHT_IMAGE ) // Signals. -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "touchedOutside", SIGNAL_TOUCHED_OUTSIDE ) -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "showing", SIGNAL_SHOWING ) -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "shown", SIGNAL_SHOWN ) -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "hiding", SIGNAL_HIDING ) -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "hidden", SIGNAL_HIDDEN ) +DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "touchedOutside", SIGNAL_TOUCHED_OUTSIDE ) +DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "showing", SIGNAL_SHOWING ) +DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "shown", SIGNAL_SHOWN ) +DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "hiding", SIGNAL_HIDING ) +DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "hidden", SIGNAL_HIDDEN ) DALI_TYPE_REGISTRATION_END() @@ -191,7 +192,7 @@ const char* DEFAULT_TAIL_LEFT_IMAGE_PATH = DALI_IMAGE_DIR "popup_tail_lef const char* DEFAULT_TAIL_RIGHT_IMAGE_PATH = DALI_IMAGE_DIR "popup_tail_right.png"; ///< Tail right image. const Vector4 DEFAULT_BACKING_COLOR( 0.0f, 0.0f, 0.0f, 0.5f ); ///< Color of the dimmed backing. -const Vector3 BACKGROUND_OUTER_BORDER( 40.0f, 30.0f, 0.0f ); ///< External border. +const Rect DEFAULT_BACKGROUND_BORDER( 17, 17, 13, 13 ); ///< Default border of the background. const Rect DEFAULT_TITLE_PADDING( 20.0f, 20.0f, 20.0f, 20.0f ); ///< Title padding used on popups with content and/or controls (from Tizen GUI UX). const Rect DEFAULT_TITLE_ONLY_PADDING( 8.0f, 8.0f, 8.0f, 8.0f ); ///< Title padding used on popups with a title only (like toast popups). const Vector3 FOOTER_SIZE( 620.0f, 96.0f,0.0f ); ///< Default size of the bottom control area. @@ -251,7 +252,7 @@ Popup::Popup() mBackingEnabled( true ), mBackingColor( DEFAULT_BACKING_COLOR ), mPopupBackgroundImage(), - mBackgroundOuterBorder(), + mBackgroundBorder( DEFAULT_BACKGROUND_BORDER ), mMargin(), mTailUpImage( DEFAULT_TAIL_UP_IMAGE_PATH ), mTailDownImage( DEFAULT_TAIL_DOWN_IMAGE_PATH ), @@ -567,7 +568,11 @@ void Popup::SetPopupBackgroundImage( Actor image ) // Removes any previous background. if( mPopupBackgroundImage ) { - mPopupContainer.Remove( mPopupBackgroundImage ); + mPopupBackgroundImage.Unparent(); + if( mTailImage ) + { + mTailImage.Unparent(); + } } // Adds new background to the dialog. @@ -580,14 +585,18 @@ void Popup::SetPopupBackgroundImage( Actor image ) mPopupBackgroundImage.TouchSignal().Connect( this, &Popup::OnDialogTouched ); // Set the popup border to be slightly larger than the layout contents. - mPopupBackgroundImage.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); - mPopupBackgroundImage.SetSizeModeFactor( BACKGROUND_OUTER_BORDER ); + UpdateBackgroundPositionAndSize(); const bool prevAlter = mAlterAddedChild; mAlterAddedChild = false; mPopupContainer.Add( mPopupBackgroundImage ); mAlterAddedChild = prevAlter; + if( mTailImage ) + { + mPopupBackgroundImage.Add( mTailImage ); + } + mLayoutDirty = true; } @@ -838,25 +847,35 @@ void Popup::LayoutTail() return; } - const Vector3& position = GetTailPosition(); + const Vector3& parentOrigin = GetTailPosition(); + Vector3 position; std::string image; + Vector3 anchorPoint; // depending on position of tail around ParentOrigin, a different tail image is used... - if( position.y < Math::MACHINE_EPSILON_1 ) + if( parentOrigin.y < Math::MACHINE_EPSILON_1 ) { image = mTailUpImage; + anchorPoint = AnchorPoint::BOTTOM_CENTER; + position.y = mBackgroundBorder.top; } - else if( position.y > 1.0f - Math::MACHINE_EPSILON_1 ) + else if( parentOrigin.y > ( 1.0f - Math::MACHINE_EPSILON_1 ) ) { image = mTailDownImage; + anchorPoint = AnchorPoint::TOP_CENTER; + position.y = - mBackgroundBorder.bottom; } - else if( position.x < Math::MACHINE_EPSILON_1 ) + else if( parentOrigin.x < Math::MACHINE_EPSILON_1 ) { image = mTailLeftImage; + anchorPoint = AnchorPoint::CENTER_RIGHT; + position.x = mBackgroundBorder.left; } - else if( position.x > 1.0f - Math::MACHINE_EPSILON_1 ) + else if( parentOrigin.x > ( 1.0f - Math::MACHINE_EPSILON_1 ) ) { image = mTailRightImage; + anchorPoint = AnchorPoint::CENTER_LEFT; + position.x = - mBackgroundBorder.right; } if( !image.empty() ) @@ -864,11 +883,14 @@ void Popup::LayoutTail() // Adds the tail actor. mTailImage = Toolkit::ImageView::New( image ); mTailImage.SetName( "tailImage" ); - const Vector3 anchorPoint = AnchorPoint::BOTTOM_RIGHT - position; - mTailImage.SetParentOrigin( position ); + mTailImage.SetParentOrigin( parentOrigin ); mTailImage.SetAnchorPoint( anchorPoint ); + mTailImage.SetPosition( position ); - mPopupContainer.Add( mTailImage ); + if( mPopupBackgroundImage ) + { + mPopupBackgroundImage.Add( mTailImage ); + } } } @@ -988,6 +1010,18 @@ void Popup::SetExitAnimationData( const Property::Map& map ) Scripting::NewAnimation( map, mExitAnimationData ); } +void Popup::UpdateBackgroundPositionAndSize() +{ + if( mPopupBackgroundImage ) + { + mPopupBackgroundImage.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); + mPopupBackgroundImage.SetSizeModeFactor( Vector3( mBackgroundBorder.left + mBackgroundBorder.right, mBackgroundBorder.top + mBackgroundBorder.bottom, 0.0f ) ); + + // Adjust the position of the background so the transparent areas are set appropriately + mPopupBackgroundImage.SetPosition( ( mBackgroundBorder.right - mBackgroundBorder.left ) * 0.5f, ( mBackgroundBorder.bottom - mBackgroundBorder.top ) * 0.5f ); + } +} + void Popup::SetAutoHideDelay( int delay ) { mAutoHideDelay = delay; @@ -1025,6 +1059,7 @@ void Popup::SetTailUpImage( std::string image ) { mTailUpImage = image; mLayoutDirty = true; + LayoutTail(); } const std::string& Popup::GetTailUpImage() const @@ -1036,6 +1071,7 @@ void Popup::SetTailDownImage( std::string image ) { mTailDownImage = image; mLayoutDirty = true; + LayoutTail(); } const std::string& Popup::GetTailDownImage() const @@ -1047,6 +1083,7 @@ void Popup::SetTailLeftImage( std::string image ) { mTailLeftImage = image; mLayoutDirty = true; + LayoutTail(); } const std::string& Popup::GetTailLeftImage() const @@ -1058,6 +1095,7 @@ void Popup::SetTailRightImage( std::string image ) { mTailRightImage = image; mLayoutDirty = true; + LayoutTail(); } const std::string& Popup::GetTailRightImage() const @@ -1242,6 +1280,31 @@ void Popup::SetProperty( BaseObject* object, Property::Index propertyIndex, cons } break; } + case Toolkit::Popup::Property::POPUP_BACKGROUND_BORDER: + { + bool valueUpdated = false; + + Vector4 valueVector4; + if( value.Get( popupImpl.mBackgroundBorder ) ) + { + valueUpdated = true; + } + else if( value.Get( valueVector4 ) ) + { + popupImpl.mBackgroundBorder.left = valueVector4.x; + popupImpl.mBackgroundBorder.right = valueVector4.y; + popupImpl.mBackgroundBorder.bottom = valueVector4.z; + popupImpl.mBackgroundBorder.top = valueVector4.w; + valueUpdated = true; + } + + if( valueUpdated ) + { + popupImpl.LayoutTail(); // Update the tail if required + popupImpl.UpdateBackgroundPositionAndSize(); // Update the background's size and position + } + break; + } case Toolkit::Popup::Property::TAIL_UP_IMAGE: { std::string valueString; @@ -1388,6 +1451,11 @@ Property::Value Popup::GetProperty( BaseObject* object, Property::Index property } break; } + case Toolkit::Popup::Property::POPUP_BACKGROUND_BORDER: + { + value = popupImpl.mBackgroundBorder; + break; + } case Toolkit::Popup::Property::TAIL_UP_IMAGE: { value = popupImpl.GetTailUpImage(); diff --git a/dali-toolkit/internal/controls/popup/popup-impl.h b/dali-toolkit/internal/controls/popup/popup-impl.h index cc5a2f6..1596a92 100755 --- a/dali-toolkit/internal/controls/popup/popup-impl.h +++ b/dali-toolkit/internal/controls/popup/popup-impl.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_INTERNAL_POPUP_H__ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -347,6 +347,11 @@ private: */ void SetExitAnimationData( const Property::Map& map ); + /** + * @briefs Updates the popup background's position and size. + */ + void UpdateBackgroundPositionAndSize(); + public: // Signals /** @@ -542,7 +547,7 @@ private: bool mBackingEnabled; ///< True if a dimmed backing will be used. Vector4 mBackingColor; ///< The color of the backing. Actor mPopupBackgroundImage; ///< Stores the background image. - Vector4 mBackgroundOuterBorder; ///< Background external border margin size + Rect mBackgroundBorder; ///< Background border. float mMargin; ///< Internal margin for popup contents. std::string mTailUpImage; ///< Image used for the tail for the up direction. std::string mTailDownImage; ///< Image used for the tail for the down direction. diff --git a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json index 264c19b..4ec9d10 100644 --- a/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/480x800/dali-toolkit-default-theme.json @@ -153,11 +153,21 @@ }, "Popup": { - "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png" + "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png", + "tailUpImage":"{DALI_IMAGE_DIR}popup_tail_up.png", + "tailDownImage":"{DALI_IMAGE_DIR}popup_tail_down.png", + "tailLeftImage":"{DALI_IMAGE_DIR}popup_tail_left.png", + "tailRightImage":"{DALI_IMAGE_DIR}popup_tail_right.png", + "popupBackgroundBorder":[17,17,13,13] }, "ConfirmationPopup": { - "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png" + "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png", + "tailUpImage":"{DALI_IMAGE_DIR}popup_tail_up.png", + "tailDownImage":"{DALI_IMAGE_DIR}popup_tail_down.png", + "tailLeftImage":"{DALI_IMAGE_DIR}popup_tail_left.png", + "tailRightImage":"{DALI_IMAGE_DIR}popup_tail_right.png", + "popupBackgroundBorder":[17,17,13,13] }, "Slider": { diff --git a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json index 923680d..bc8931d 100644 --- a/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json +++ b/dali-toolkit/styles/720x1280/dali-toolkit-default-theme.json @@ -153,11 +153,21 @@ }, "Popup": { - "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png" + "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png", + "tailUpImage":"{DALI_IMAGE_DIR}popup_tail_up.png", + "tailDownImage":"{DALI_IMAGE_DIR}popup_tail_down.png", + "tailLeftImage":"{DALI_IMAGE_DIR}popup_tail_left.png", + "tailRightImage":"{DALI_IMAGE_DIR}popup_tail_right.png", + "popupBackgroundBorder":[17,17,13,13] }, "ConfirmationPopup": { - "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png" + "popupBackgroundImage":"{DALI_IMAGE_DIR}00_popup_bg.9.png", + "tailUpImage":"{DALI_IMAGE_DIR}popup_tail_up.png", + "tailDownImage":"{DALI_IMAGE_DIR}popup_tail_down.png", + "tailLeftImage":"{DALI_IMAGE_DIR}popup_tail_left.png", + "tailRightImage":"{DALI_IMAGE_DIR}popup_tail_right.png", + "popupBackgroundBorder":[17,17,13,13] }, "Slider": { diff --git a/dali-toolkit/styles/images-common/00_popup_bg.9.png b/dali-toolkit/styles/images-common/00_popup_bg.9.png index b8f5b3fa4e63a4817d9e098d01c3e06e7cb6b3b0..825dd98f125ee35d3fbff119c5272023cd982341 100644 GIT binary patch delta 1604 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 LNkvXXu0mjfCrYSg -- 2.7.4