X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=c720ee174dba5016415f08d207fdf1014d212751;hb=c3f7ea6cb0c0b75c2276193aff88b5c7a679a2d5;hp=7393a3a460d7ea015b485e55a7e669a45686ba02;hpb=b398ab61279f2fe1e96f7567cecb123c25e2edb1;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 7393a3a..c720ee1 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -23,10 +23,8 @@ #include #include #include -#include #include #include -#include #include #include #include @@ -34,7 +32,7 @@ #include // INTERNAL INCLUDES -#include +#include #include #include #include @@ -49,8 +47,6 @@ namespace Toolkit namespace { -const float BACKGROUND_ACTOR_Z_POSITION( -0.1f ); - /** * Creates control through type registry */ @@ -67,7 +63,7 @@ BaseHandle Create() * @return true if action has been accepted by this control */ const char* ACTION_CONTROL_ACTIVATED = "control-activated"; -static bool DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ) +static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes ) { bool ret = false; @@ -185,10 +181,10 @@ struct Background /** * Creates a white coloured Mesh. */ -Mesh CreateMesh() +Vector3 CreateMesh() { Vector3 white( Color::WHITE ); - + /* MeshData meshData; // Create vertices with a white color (actual color is set by actor color) @@ -209,8 +205,9 @@ Mesh CreateMesh() meshData.SetVertices( vertices ); meshData.SetFaceIndices( faces ); meshData.SetHasColor( true ); - - return Mesh::New( meshData ); + */ + return white; + //return Mesh::New( meshData ); } /** @@ -224,7 +221,6 @@ void SetupBackgroundActor( Actor actor, const Vector4& color ) actor.SetColor( color ); actor.SetPositionInheritanceMode( USE_PARENT_POSITION_PLUS_LOCAL_POSITION ); actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR ); - actor.SetZ( BACKGROUND_ACTOR_Z_POSITION ); actor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); } @@ -240,7 +236,6 @@ void SetupBackgroundActorConstrained( Actor actor, Property::Index constrainingI actor.SetColor( color ); actor.SetPositionInheritanceMode( USE_PARENT_POSITION_PLUS_LOCAL_POSITION ); actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR ); - actor.SetZ( BACKGROUND_ACTOR_Z_POSITION ); Constraint constraint = Constraint::New( actor, constrainingIndex, @@ -271,7 +266,8 @@ public: mLongPressGestureDetector(), mFlags( Control::ControlBehaviour( ACTOR_BEHAVIOUR_NONE ) ), mIsKeyboardNavigationSupported( false ), - mIsKeyboardFocusGroup( false ) + mIsKeyboardFocusGroup( false ), + mAddRemoveBackgroundChild( false ) { } @@ -466,6 +462,7 @@ public: ControlBehaviour mFlags :CONTROL_BEHAVIOUR_FLAG_COUNT; ///< Flags passed in from constructor. bool mIsKeyboardNavigationSupported :1; ///< Stores whether keyboard navigation is supported by the control. bool mIsKeyboardFocusGroup :1; ///< Stores whether the control is a focus group. + bool mAddRemoveBackgroundChild:1; ///< Flag to know when we are adding or removing our own actor to avoid call to OnControlChildAdd // Properties - these need to be members of Internal::Control::Impl as they need to function within this class. static PropertyRegistration PROPERTY_1; @@ -526,6 +523,7 @@ void Control::SetBackgroundColor( const Vector4& color ) // Just set the actor color background.actor.SetColor( color ); } + /* else { // Create Mesh Actor @@ -533,10 +531,14 @@ void Control::SetBackgroundColor( const Vector4& color ) SetupBackgroundActorConstrained( meshActor, Actor::Property::SCALE, color ); - // Set the background actor before adding so that we do not inform deriving classes background.actor = meshActor; - Self().Add( meshActor ); + // Set the flag to avoid notifying children + mImpl->mAddRemoveBackgroundChild = true; + // use insert to guarantee its the first child (so that OVERLAY mode works) + Self().Insert( 0, meshActor ); + mImpl->mAddRemoveBackgroundChild = false; } + */ background.color = color; } @@ -556,17 +558,24 @@ void Control::SetBackgroundImage( Image image ) if ( background.actor ) { - // Remove Current actor, unset AFTER removal so that we do not inform deriving classes + // Remove Current actor, unset AFTER removal + mImpl->mAddRemoveBackgroundChild = true; Self().Remove( background.actor ); + mImpl->mAddRemoveBackgroundChild = false; background.actor.Reset(); } + /* ImageActor imageActor = ImageActor::New( image ); SetupBackgroundActor( imageActor, background.color ); // Set the background actor before adding so that we do not inform derived classes background.actor = imageActor; - Self().Add( imageActor ); + mImpl->mAddRemoveBackgroundChild = true; + // use insert to guarantee its the first child (so that OVERLAY mode works) + Self().Insert( 0, imageActor ); + mImpl->mAddRemoveBackgroundChild = false; + */ } void Control::ClearBackground() @@ -574,7 +583,9 @@ void Control::ClearBackground() if ( mImpl->mBackground ) { Background& background( mImpl->GetBackground() ); + mImpl->mAddRemoveBackgroundChild = true; Self().Remove( background.actor ); + mImpl->mAddRemoveBackgroundChild = false; delete mImpl->mBackground; mImpl->mBackground = NULL; @@ -734,7 +745,7 @@ bool Control::OnAccessibilityValueChange(bool isIncrease) return false; // Accessibility value change action is not handled by default } -Actor Control::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled) +Actor Control::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled) { return Actor(); } @@ -900,8 +911,8 @@ void Control::OnKeyInputFocusLost() void Control::OnChildAdd(Actor& child) { - // If this is the background actor, then we do not want to relayout or inform deriving classes - if ( mImpl->mBackground && ( child == mImpl->mBackground->actor ) ) + // If this is the background actor, then we do not want to inform deriving classes + if ( mImpl->mAddRemoveBackgroundChild ) { return; } @@ -912,8 +923,8 @@ void Control::OnChildAdd(Actor& child) void Control::OnChildRemove(Actor& child) { - // If this is the background actor, then we do not want to relayout or inform deriving classes - if ( mImpl->mBackground && ( child == mImpl->mBackground->actor ) ) + // If this is the background actor, then we do not want to inform deriving classes + if ( mImpl->mAddRemoveBackgroundChild ) { return; } @@ -947,7 +958,7 @@ bool Control::OnKeyEvent(const KeyEvent& event) return false; // Do not consume } -bool Control::OnMouseWheelEvent(const MouseWheelEvent& event) +bool Control::OnWheelEvent(const WheelEvent& event) { return false; // Do not consume }