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 1c396c0..c6b3b5e 100644 (file)
@@ -35,11 +35,15 @@ namespace Dali
 
 namespace Toolkit
 {
+/**
+ * @addtogroup dali_toolkit_controls
+ * @{
+ */
+
 class StyleManager;
 
 namespace Internal
 {
-
 /**
  * @brief This is the internal base class for all controls.
  *
@@ -98,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();
@@ -222,13 +233,16 @@ public:
    */
   bool IsKeyboardFocusGroup();
 
-  // Called by Focus Manager
-
   /**
-   * @brief Called by the accessibility 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
 
   /**
@@ -254,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
 
   /**
@@ -270,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()
@@ -465,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
 
   /**
@@ -502,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
 
   /**
@@ -597,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
@@ -606,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