Control not always rendering background image depending on add order
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / controls / control-impl.h
index 951a6b5..c6b3b5e 100644 (file)
@@ -35,14 +35,15 @@ namespace Dali
 
 namespace Toolkit
 {
+/**
+ * @addtogroup dali_toolkit_controls
+ * @{
+ */
+
 class StyleManager;
 
 namespace Internal
 {
-class FocusManager;
-class KeyboardFocusManager;
-class KeyInputFocusManager;
-
 /**
  * @brief This is the internal base class for all controls.
  *
@@ -101,6 +102,13 @@ public:
   void SetBackgroundImage( Image image );
 
   /**
+   * @brief Set the background with a property map.
+   *
+   * @param[in] map The background property map.
+   */
+  void SetBackground(const Property::Map& map);
+
+  /**
    * @copydoc Dali::Toolkit::Control::ClearBackground
    */
   void ClearBackground();
@@ -225,13 +233,16 @@ public:
    */
   bool IsKeyboardFocusGroup();
 
-  // Called by Focus Manager
-
   /**
-   * @brief Called by the focus manager and keyboard focus manager to Activate the Control
+   * @brief Called by the AccessibilityManager to activate the Control.
    */
   DALI_INTERNAL void AccessibilityActivate();
 
+  /**
+   * @brief Called by the KeyboardFocusManager.
+   */
+  DALI_INTERNAL void KeyboardEnter();
+
   // Signals
 
   /**
@@ -257,6 +268,15 @@ public:
    */
   DALI_INTERNAL bool EmitKeyEventSignal( const KeyEvent& event );
 
+private:
+
+  /**
+   * Sets up the background image/color based on the current state.
+   * This will set the depth index (always), and add to stage if the control is on stage.
+   *
+   */
+  void UpdateBackgroundState();
+
 protected: // For derived classes to call
 
   /**
@@ -273,7 +293,7 @@ protected: // From CustomActorImpl, not to be used by application developers
   /**
    * @copydoc CustomActorImpl::OnStageConnection()
    */
-  virtual void OnStageConnection();
+  virtual void OnStageConnection( int depth );
 
   /**
    * @copydoc CustomActorImpl::OnStageDisconnection()
@@ -316,9 +336,9 @@ protected: // From CustomActorImpl, not to be used by application developers
   virtual bool OnKeyEvent( const KeyEvent& event );
 
   /**
-   * @copydoc CustomActorImpl::OnMouseWheelEvent()
+   * @copydoc CustomActorImpl::OnWheelEvent()
    */
-  virtual bool OnMouseWheelEvent( const MouseWheelEvent& event );
+  virtual bool OnWheelEvent( const WheelEvent& event );
 
   /**
    * @copydoc CustomActorImpl::OnRelayout()
@@ -437,8 +457,9 @@ public: // API for derived classes to override
    * @brief This method is called when the control is accessibility activated.
    *
    * Derived classes should override this to perform custom accessibility activation.
+   * @return true if this control can perform accessibility activation.
    */
-  virtual void OnAccessibilityActivated();
+  virtual bool OnAccessibilityActivated();
 
   /**
    * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
@@ -467,6 +488,14 @@ public: // API for derived classes to override
    */
   virtual bool OnAccessibilityValueChange( bool isIncrease );
 
+  /**
+   * @brief This method should be overridden by deriving classes when they wish to respond
+   * the accessibility zoom action
+   *
+   * @return true if the zoom action has been consumed by this control
+   */
+  virtual bool OnAccessibilityZoom();
+
   // Keyboard focus
 
   /**
@@ -492,7 +521,7 @@ public: // API for derived classes to override
    * @param[in] loopEnabled Whether the focus movement should be looped within the control.
    * @return the next keyboard focusable actor in this control or an empty handle if no actor can be focused.
    */
-  virtual Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled );
+  virtual Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled );
 
   /**
    * @brief Informs this control that its chosen focusable actor will be focused.
@@ -504,6 +533,14 @@ public: // API for derived classes to override
    */
   virtual void OnKeyboardFocusChangeCommitted( Actor commitedFocusableActor );
 
+  /**
+   * @brief This method is called when the control has enter pressed on it.
+   *
+   * Derived classes should override this to perform custom actions.
+   * @return true if this control supported this action.
+   */
+  virtual bool OnKeyboardEnter();
+
   // Gestures
 
   /**
@@ -599,7 +636,7 @@ private:
  * @param handle
  * @return implementation
  */
-Internal::Control& GetImplementation( Dali::Toolkit::Control& handle );
+DALI_IMPORT_API Internal::Control& GetImplementation( Dali::Toolkit::Control& handle );
 
 /**
  * @brief Get implementation from the handle
@@ -608,10 +645,13 @@ Internal::Control& GetImplementation( Dali::Toolkit::Control& handle );
  * @param handle
  * @return implementation
  */
-const Internal::Control& GetImplementation( const Dali::Toolkit::Control& handle );
+DALI_IMPORT_API const Internal::Control& GetImplementation( const Dali::Toolkit::Control& handle );
 
 } // namespace Internal
 
+/**
+ * @}
+ */
 } // namespace Toolkit
 
 } // namespace Dali