X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=base%2Fdali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=d26e2f403498d1fd43658e28ee8dfff1b97cb0b3;hp=9d64b1f803325d97892cce7cb42ddd015eb9a617;hb=c92d73a3eeaaa36b37c72d812ca4c65c20d237a8;hpb=33e1324f5027b567ff9da9bbd7c172b35f1eba03 diff --git a/base/dali-toolkit/public-api/controls/control-impl.cpp b/base/dali-toolkit/public-api/controls/control-impl.cpp index 9d64b1f..d26e2f4 100644 --- a/base/dali-toolkit/public-api/controls/control-impl.cpp +++ b/base/dali-toolkit/public-api/controls/control-impl.cpp @@ -239,24 +239,24 @@ public: // Construction & Destruction Impl(Control& controlImpl) : mControlImpl(controlImpl), - mInitialized( false ), + mBackground( NULL ), + mKeyEventSignalV2(), mPinchGestureDetector(), mPanGestureDetector(), mTapGestureDetector(), mLongPressGestureDetector(), mStartingPinchScale(), - mLockSetSize( false ), - mWidthPolicy( Toolkit::Control::Fixed ), - mHeightPolicy( Toolkit::Control::Fixed ), mSize(), mSetSize(), mMinimumSize(), mMaximumSize( MAX_FLOAT_VALUE, MAX_FLOAT_VALUE, MAX_FLOAT_VALUE ), + mLockSetSize( false ), + mWidthPolicy( Toolkit::Control::Fixed ), + mHeightPolicy( Toolkit::Control::Fixed ), + mFlags( Control::CONTROL_BEHAVIOUR_NONE ), mIsKeyboardNavigationSupported(false), mIsKeyboardFocusGroup(false), - mKeyEventSignalV2(), - mBackground( NULL ), - mFlags( Control::CONTROL_BEHAVIOUR_NONE ) + mInitialized( false ) { } @@ -497,41 +497,30 @@ public: // Data Control& mControlImpl; - - bool mInitialized:1; - + Background* mBackground; ///< Only create the background if we use it ConnectionTracker mConnectionTracker; // signal connection tracker + Toolkit::Control::KeyEventSignalV2 mKeyEventSignalV2; // Gesture Detection - PinchGestureDetector mPinchGestureDetector; PanGestureDetector mPanGestureDetector; TapGestureDetector mTapGestureDetector; LongPressGestureDetector mLongPressGestureDetector; - Vector3 mStartingPinchScale; ///< The scale when a pinch gesture starts - // Relayout and size negotiation - - bool mLockSetSize; ///< Used to avoid. Can't be a bitfield as a reference to this member is used in SetSizeLock helper class. - - Toolkit::Control::SizePolicy mWidthPolicy; ///< Stores the width policy. - Toolkit::Control::SizePolicy mHeightPolicy; ///< Stores the height policy. - Vector3 mSize; ///< Stores the current control's size. Vector3 mSetSize; ///< Always stores the size set through the Actor's API. Useful when reset to the initial size is needed. Vector3 mMinimumSize; ///< Stores the control's minimum size. Vector3 mMaximumSize; ///< Stores the control's maximum size. - bool mIsKeyboardNavigationSupported; ///< Stores whether keyboard navigation is supported by the control. - bool mIsKeyboardFocusGroup; ///< Stores whether the control is a focus group. - - Toolkit::Control::KeyEventSignalV2 mKeyEventSignalV2; - - // Background - Background* mBackground; ///< Only create the background if we use it + bool mLockSetSize; ///< Used to avoid. Can't be a bitfield as a reference to this member is used in SetSizeLock helper class. - ControlBehaviour mFlags; ///< Flags passed in from constructor + Toolkit::Control::SizePolicy mWidthPolicy:3; ///< Stores the width policy. 3 bits covers 8 values + Toolkit::Control::SizePolicy mHeightPolicy:3; ///< Stores the height policy. 3 bits covers 8 values + ControlBehaviour mFlags:4; ///< Flags passed in from constructor. Need to increase this size when new enums are added + bool mIsKeyboardNavigationSupported:1; ///< Stores whether keyboard navigation is supported by the control. + bool mIsKeyboardFocusGroup:1; ///< Stores whether the control is a focus group. + bool mInitialized:1; // Properties - these need to be members of Internal::Control::Impl as they need to functions within this class. static PropertyRegistration PROPERTY_1; @@ -778,7 +767,7 @@ void Control::OnChildAdd(Actor& child) return; } - // Request for relayout. + // Request for relayout as we may need to position the new child and old ones RelayoutRequest(); // Notify derived classes. @@ -793,7 +782,7 @@ void Control::OnChildRemove(Actor& child) return; } - // Request for relayout. + // Request for relayout as we may need to re-position the old child RelayoutRequest(); // Notify derived classes. @@ -1065,7 +1054,12 @@ void Control::ClearKeyInputFocus() void Control::RelayoutRequest() { - Internal::RelayoutController::Get().Request(); + // unfortunate double negative but thats to guarantee new controls get size negotiation + // by default and have to "opt-out" if they dont want it + if( !(mImpl->mFlags & NO_SIZE_NEGOTIATION) ) + { + Internal::RelayoutController::Request(); + } } void Control::Relayout( Vector2 size, ActorSizeContainer& container )