[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / controls / scrollable / scroll-view / scroll-view.h
index 1a0e3fb..76f3e20 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_SCROLL_VIEW_H__
-#define __DALI_TOOLKIT_SCROLL_VIEW_H__
+#ifndef DALI_TOOLKIT_SCROLL_VIEW_H
+#define DALI_TOOLKIT_SCROLL_VIEW_H
 
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
 
 namespace Dali
 {
-
 namespace Toolkit
 {
-
 namespace Internal DALI_INTERNAL
 {
 class ScrollView;
@@ -45,9 +43,9 @@ class ScrollView;
  */
 enum ClampState
 {
-  NotClamped,   ///< The quantity isn't clamped @SINCE_1_0.0
-  ClampedToMin, ///< The quantity is clamped to the min value @SINCE_1_0.0
-  ClampedToMax  ///< The quantity is clamped to the max value @SINCE_1_0.0
+  NOT_CLAMPED,    ///< The quantity isn't clamped @SINCE_1_9.28
+  CLAMPED_TO_MIN, ///< The quantity is clamped to the min value @SINCE_1_9.28
+  CLAMPED_TO_MAX  ///< The quantity is clamped to the max value @SINCE_1_9.28
 };
 
 /**
@@ -66,8 +64,8 @@ struct ClampState2D
  */
 enum SnapType
 {
-  Snap,  ///< Snap @SINCE_1_0.0
-  Flick  ///< Flick @SINCE_1_0.0
+  SNAP, ///< SNAP @SINCE_1_9.28
+  FLICK ///< FLICK @SINCE_1_9.28
 };
 
 /**
@@ -76,19 +74,18 @@ enum SnapType
  */
 enum DirectionBias
 {
-  DirectionBiasLeft  = -1,  ///< Bias scroll snap to Left @SINCE_1_0.0
-  DirectionBiasNone  =  0,  ///< Don't bias scroll snap @SINCE_1_0.0
-  DirectionBiasRight =  1   ///< Bias scroll snap to Right @SINCE_1_0.0
+  DIRECTION_BIAS_LEFT  = -1, ///< Bias scroll snap to Left @SINCE_1_9.28
+  DIRECTION_BIAS_NONE  = 0,  ///< Don't bias scroll snap @SINCE_1_9.28
+  DIRECTION_BIAS_RIGHT = 1   ///< Bias scroll snap to Right @SINCE_1_9.28
 };
 
 /**
  * @brief Used for specifying minimum/maximum extents of a ruler.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API RulerDomain
+class DALI_TOOLKIT_API RulerDomain
 {
 public:
-
   /**
    * @brief Creates Ruler domain allowing a point to traverse between min and max extents.
    *
@@ -100,10 +97,9 @@ public:
   explicit RulerDomain(float min, float max, bool enabled = true);
 
 public:
-
-  float min;    ///< Minimum extent (point cannot traverse less than this)
-  float max;    ///< Maximum extent (point cannot traverse greater than this)
-  bool enabled; ///< Whether domain has been enabled or not.
+  float min;     ///< Minimum extent (point cannot traverse less than this)
+  float max;     ///< Maximum extent (point cannot traverse greater than this)
+  bool  enabled; ///< Whether domain has been enabled or not.
 
   /**
    * @brief Clamps value (x) from (min) to (max).
@@ -132,7 +128,7 @@ public:
    * @param[out] clamped Whether clamping occurred and which size (None, Min or Max)
    * @return The clamped value
    */
-  float Clamp(float x, float length, float scale, ClampState &clamped) const;
+  float Clamp(float x, float length, float scale, ClampStateclamped) const;
 
   /**
    * @brief Returns (max-min) size of ruler.
@@ -141,7 +137,6 @@ public:
    * @return The size of the ruler from min to max
    */
   float GetSize() const;
-
 };
 
 // Forward declare future extension interface
@@ -154,17 +149,20 @@ class RulerExtension;
  * where their snap points are and their domain.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API Ruler : public RefObject
+class DALI_TOOLKIT_API Ruler : public RefObject
 {
 public:
-  /// @brief The type of the ruler
-  enum RulerType {
-    Fixed,  ///< A fixed ruler @SINCE_1_0.0
-    Free    ///< A free ruler @SINCE_1_0.0
+  /**
+   * @brief Enumeration for the type of the ruler.
+   * @SINCE_1_0.0
+   */
+  enum RulerType
+  {
+    FIXED, ///< A fixed ruler @SINCE_1_9.28
+    FREE   ///< A free ruler @SINCE_1_9.28
   };
 
 public:
-
   /**
    * @brief Constructs ruler, enabled by default, with limitless domain.
    * @SINCE_1_0.0
@@ -199,7 +197,7 @@ public:
    * @param[in] wrap Enable wrap mode
    * @return The position representing this page point
    */
-  virtual float GetPositionFromPage(unsigned int page, unsigned int &volume, bool wrap) const = 0;
+  virtual float GetPositionFromPage(unsigned int page, unsigned intvolume, bool wrap) const = 0;
 
   /**
    * @brief Returns page from position, based on whatever the ruler
@@ -228,10 +226,12 @@ public:
    * @SINCE_1_0.0
    * @return The extension interface of the Ruler
    */
-  virtual RulerExtension* GetExtension() { return NULL; }
+  virtual RulerExtension* GetExtension()
+  {
+    return NULL;
+  }
 
 public:
-
   /**
    * @brief Gets the ruler type.
    *
@@ -274,7 +274,7 @@ public:
    * @SINCE_1_0.0
    * @return The domain
    */
-  const RulerDomain &GetDomain() const;
+  const RulerDomainGetDomain() const;
 
   /**
    * @brief Disables Domain (minimum/maximum extents for this axis).
@@ -296,7 +296,6 @@ public:
    */
   float Clamp(float x, float length = 0.0f, float scale = 1.0f) const;
 
-
   /**
    * @brief Clamps value (x) from (min) to (max).
    *
@@ -310,7 +309,7 @@ public:
    * @param[out] clamped Whether clamping occurred and which size (None, Min or Max)
    * @return The clamped value
    */
-  float Clamp(float x, float length, float scale, ClampState &clamped) const;
+  float Clamp(float x, float length, float scale, ClampStateclamped) const;
 
   /**
    * @brief Snaps and Clamps (x) in accordance to ruler settings.
@@ -345,10 +344,9 @@ public:
    * @param[out] clamped Whether clamping occurred and which size (None, Min or Max)
    * @return The clamped value after snapping
    */
-  float SnapAndClamp(float x, float bias, float length, float scale, ClampState &clamped) const;
+  float SnapAndClamp(float x, float bias, float length, float scale, ClampStateclamped) const;
 
 protected:
-
   /**
    * @brief Destructor - A reference counted object may only be deleted by calling Unreference().
    * @SINCE_1_0.0
@@ -356,11 +354,9 @@ protected:
   virtual ~Ruler();
 
 protected:
-
-  RulerType mType;               ///< Type of Ruler (Fixed or Free).
-  bool mEnabled;                 ///< If the ruler is enabled.
-  RulerDomain mDomain;           ///< The domain of the ruler.
-
+  RulerType   mType;    ///< Type of Ruler (FIXED or FREE).
+  bool        mEnabled; ///< If the ruler is enabled.
+  RulerDomain mDomain;  ///< The domain of the ruler.
 };
 
 typedef IntrusivePtr<Ruler> RulerPtr; ///< Pointer to Dali::Toolkit::Ruler object @SINCE_1_0.0
@@ -369,7 +365,7 @@ typedef IntrusivePtr<Ruler> RulerPtr; ///< Pointer to Dali::Toolkit::Ruler objec
  * @brief Concrete implementation of Ruler that has no snapping and has one single page.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API DefaultRuler : public Ruler
+class DALI_TOOLKIT_API DefaultRuler : public Ruler
 {
 public:
   /**
@@ -381,29 +377,29 @@ public:
   /**
    * @copydoc Toolkit::Ruler::Snap
    */
-  virtual float Snap(float x, float bias) const;
+  float Snap(float x, float bias) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPositionFromPage
    */
-  virtual float GetPositionFromPage(unsigned int page, unsigned int &volume, bool wrap) const;
+  float GetPositionFromPage(unsigned int page, unsigned int& volume, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPageFromPosition
    */
-  virtual unsigned int GetPageFromPosition(float position, bool wrap) const;
+  unsigned int GetPageFromPosition(float position, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetTotalPages
    */
-  virtual unsigned int GetTotalPages() const;
+  unsigned int GetTotalPages() const override;
 };
 
 /**
  * @brief Concrete implementation of Ruler that has fixed snapping.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API FixedRuler : public Ruler
+class DALI_TOOLKIT_API FixedRuler : public Ruler
 {
 public:
   /**
@@ -417,22 +413,22 @@ public:
   /**
    * @copydoc Toolkit::Ruler::Snap
    */
-  virtual float Snap(float x, float bias) const;
+  float Snap(float x, float bias) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPositionFromPage
    */
-  virtual float GetPositionFromPage(unsigned int page, unsigned int &volume, bool wrap) const;
+  float GetPositionFromPage(unsigned int page, unsigned int& volume, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetPageFromPosition
    */
-  virtual unsigned int GetPageFromPosition(float position, bool wrap) const;
+  unsigned int GetPageFromPosition(float position, bool wrap) const override;
 
   /**
    * @copydoc Toolkit::Ruler::GetTotalPages
    */
-  virtual unsigned int GetTotalPages() const;
+  unsigned int GetTotalPages() const override;
 
 private:
   float mSpacing; ///< The spacing between each interval
@@ -451,20 +447,18 @@ class ScrollView;
  * | snap-started      | @ref SnapStartedSignal()   |
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API ScrollView : public Scrollable
+class DALI_TOOLKIT_API ScrollView : public Scrollable
 {
-
 public:
-
   /**
    * @brief Clamps signal event's data.
    * @SINCE_1_0.0
    */
   struct ClampEvent
   {
-    ClampState2D scale;       ///< Clamp information for scale axes
-    ClampState2D position;    ///< Clamp information for position axes
-    ClampState   rotation;    ///< Clamp information for rotation
+    ClampState2D scale;    ///< Clamp information for scale axes
+    ClampState2D position; ///< Clamp information for position axes
+    ClampState   rotation; ///< Clamp information for rotation
   };
 
   /**
@@ -473,9 +467,9 @@ public:
    */
   struct SnapEvent
   {
-    SnapType type;    ///< Current snap commencing
-    Vector2 position; ///< Target snap position
-    float duration;   ///< Duration of snap animation.
+    SnapType type;     ///< Current snap commencing
+    Vector2  position; ///< Target snap position
+    float    duration; ///< Duration of snap animation.
   };
 
   /**
@@ -484,11 +478,11 @@ public:
    */
   enum PropertyRange
   {
-    PROPERTY_START_INDEX = Toolkit::Scrollable::PROPERTY_END_INDEX + 1,                        ///< @SINCE_1_1.18
-    PROPERTY_END_INDEX =   PROPERTY_START_INDEX + 1000,                                        ///< Reserve property indices, @SINCE_1_1.18
+    PROPERTY_START_INDEX = Toolkit::Scrollable::PROPERTY_END_INDEX + 1, ///< @SINCE_1_1.18
+    PROPERTY_END_INDEX   = PROPERTY_START_INDEX + 1000,                 ///< Reserve property indices, @SINCE_1_1.18
 
     ANIMATABLE_PROPERTY_START_INDEX = Toolkit::Scrollable::ANIMATABLE_PROPERTY_END_INDEX + 1,
-    ANIMATABLE_PROPERTY_END_INDEX   = ANIMATABLE_PROPERTY_START_INDEX + 1000                   ///< Reserve animatable property indices @SINCE_1_0.0
+    ANIMATABLE_PROPERTY_END_INDEX   = ANIMATABLE_PROPERTY_START_INDEX + 1000 ///< Reserve animatable property indices @SINCE_1_0.0
   };
 
   /**
@@ -503,42 +497,219 @@ public:
      */
     enum
     {
-      // Event side properties
-      WRAP_ENABLED = PROPERTY_START_INDEX,               ///< Property, name "wrapEnabled",              @see SetWrapMode(),                 type bool,     @SINCE_1_1.18
-      PANNING_ENABLED,                                   ///< Property, name "panningEnabled",           @see SetScrollSensitive(),          type bool,     @SINCE_1_1.18
-      AXIS_AUTO_LOCK_ENABLED,                            ///< Property, name "axisAutoLockEnabled",      @see SetAxisAutoLock(),             type bool,     @SINCE_1_1.18
-      WHEEL_SCROLL_DISTANCE_STEP,                        ///< Property, name "wheelScrollDistanceStep",  @see SetWheelScrollDistanceStep(),  type Vector2,  @SINCE_1_1.18
-
-      SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX, ///< Property, name "scrollPosition",            type Vector2 @SINCE_1_0.0
-      SCROLL_PRE_POSITION,                               ///< Property, name "scrollPrePosition",         type Vector2 @SINCE_1_0.0
-      SCROLL_PRE_POSITION_X,                             ///< Property, name "scrollPrePositionX",        type float @SINCE_1_0.0
-      SCROLL_PRE_POSITION_Y,                             ///< Property, name "scrollPrePositionY",        type float @SINCE_1_0.0
-      SCROLL_PRE_POSITION_MAX,                           ///< Property, name "scrollPrePositionMax",      type Vector2 @SINCE_1_0.0
-      SCROLL_PRE_POSITION_MAX_X,                         ///< Property, name "scrollPrePositionMaxX",     type float @SINCE_1_0.0
-      SCROLL_PRE_POSITION_MAX_Y,                         ///< Property, name "scrollPrePositionMaxY",     type float @SINCE_1_0.0
-      OVERSHOOT_X,                                       ///< Property, name "overshootX",                type float @SINCE_1_0.0
-      OVERSHOOT_Y,                                       ///< Property, name "overshootY",                type float @SINCE_1_0.0
-      SCROLL_FINAL,                                      ///< Property, name "scrollFinal",               type Vector2 @SINCE_1_0.0
-      SCROLL_FINAL_X,                                    ///< Property, name "scrollFinalX",              type float @SINCE_1_0.0
-      SCROLL_FINAL_Y,                                    ///< Property, name "scrollFinalY",              type float @SINCE_1_0.0
-      WRAP,                                              ///< Property, name "wrap",                      type bool @SINCE_1_0.0
-      PANNING,                                           ///< Property, name "panning",                   type bool @SINCE_1_0.0
-      SCROLLING,                                         ///< Property, name "scrolling",                 type bool @SINCE_1_0.0
-      SCROLL_DOMAIN_SIZE,                                ///< Property, name "scrollDomainSize",          type Vector2 @SINCE_1_0.0
-      SCROLL_DOMAIN_SIZE_X,                              ///< Property, name "scrollDomainSizeX",         type float @SINCE_1_0.0
-      SCROLL_DOMAIN_SIZE_Y,                              ///< Property, name "scrollDomainSizeY",         type float @SINCE_1_0.0
-      SCROLL_DOMAIN_OFFSET,                              ///< Property, name "scrollDomainOffset",        type Vector2 @SINCE_1_0.0
-      SCROLL_POSITION_DELTA,                             ///< Property, name "scrollPositionDelta",       type Vector2 @SINCE_1_0.0
-      START_PAGE_POSITION                                ///< Property, name "startPagePosition",         type Vector3 @SINCE_1_0.0
+      ///////////////////////////////////////////////////////////////////////////////
+      // Event side (non-animatable) properties
+      ///////////////////////////////////////////////////////////////////////////////
+
+      /**
+       * @brief Whether wrapping is enabled.
+       * @details Name "wrapEnabled", type Property::BOOLEAN.
+       * @SINCE_1_1.18
+       * @see SetWrapMode()
+       */
+      WRAP_ENABLED = PROPERTY_START_INDEX,
+
+      /**
+       * @brief Whether panning is enabled.
+       * @details Name "panningEnabled", type Property::BOOLEAN.
+       * @SINCE_1_1.18
+       * @see SetScrollSensitive()
+       */
+      PANNING_ENABLED,
+
+      /**
+       * @brief Whether the Axis Auto Lock mode for panning within the ScrollView is enabled.
+       * @details Name "axisAutoLockEnabled", type Property::BOOLEAN.
+       * @SINCE_1_1.18
+       * @see SetAxisAutoLock()
+       */
+      AXIS_AUTO_LOCK_ENABLED,
+
+      /**
+       * @brief The step of scroll distance in actor coordinates for each wheel event received in free panning mode.
+       * @details Name "wheelScrollDistanceStep", type Property::VECTOR2.
+       * @SINCE_1_1.18
+       * @see SetWheelScrollDistanceStep()
+       */
+      WHEEL_SCROLL_DISTANCE_STEP,
+
+      /**
+       * @brief The scroll mode.
+       * @details Name "scrollMode", type Property::MAP.
+       * The scroll mode map is a frontend for the Ruler helper class, containing the following keys:
+       *
+       * | %Property Name       | Type     | Required | Description                                                                                                                           |
+       * |----------------------|----------|----------|---------------------------------------------------------------------------------------------------------------------------------------|
+       * | xAxisScrollEnabled   | BOOLEAN  | No       | True if the content can be scrolled in X axis or false if not.                                                                        |
+       * | xAxisSnapToInterval  | FLOAT    | No       | When set, causes scroll view to snap to multiples of the value of the interval in the X axis while flicking. (by default no snapping) |
+       * | xAxisScrollBoundary  | FLOAT    | No       | When set, causes scroll view unable to scroll beyond the value of the boundary in the X axis (by default no boundary)                 |
+       * | yAxisScrollEnabled   | BOOLEAN  | No       | True if the content can be scrolled in Y axis or false if not.                                                                        |
+       * | yAxisSnapToInterval  | FLOAT    | No       | When set, causes scroll view to snap to multiples of the value of the interval in the Y axis while flicking. (by default no snapping) |
+       * | yAxisScrollBoundary  | FLOAT    | No       | When set, causes scroll view unable to scroll beyond the value of the boundary in the Y axis (by default no boundary)                 |
+       *
+       * Alternatively, one can use the keys defined in the Dali::Toolkit::ScrollMode::Type enumeration.
+       * @SINCE_1_2.60
+       */
+      SCROLL_MODE,
+
+      ///////////////////////////////////////////////////////////////////////////////
+      // Animatable Properties
+      ///////////////////////////////////////////////////////////////////////////////
+
+      /**
+       * @brief The current scroll position.
+       * @details Name "scrollPosition", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX,
+
+      /**
+       * @brief The position before we set the clamp at scroll boundaries.
+       * @details Name "scrollPrePosition", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION,
+
+      /**
+       * @brief The X component of SCROLL_PRE_POSITION.
+       * @details Name "scrollPrePositionX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_X,
+
+      /**
+       * @brief The Y component of SCROLL_PRE_POSITION.
+       * @details Name "scrollPrePositionY", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_Y,
+
+      /**
+       * @brief The maximum value that SCROLL_PRE_POSITION can be.
+       * @details Name "scrollPrePositionMax", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_MAX,
+
+      /**
+       * @brief The X component of SCROLL_PRE_POSITION_MAX.
+       * @details Name "scrollPrePositionMaxX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_MAX_X,
+
+      /**
+       * @brief The Y component of SCROLL_PRE_POSITION_MAX.
+       * @details Name "scrollPrePositionMaxY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_PRE_POSITION_MAX_Y,
+
+      /**
+       * @brief The amount that we can scroll beyond the boundary along the X axis.
+       * @details Name "overshootX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      OVERSHOOT_X,
+
+      /**
+       * @brief The amount that we can scroll beyond the boundary along the Y axis.
+       * @details Name "overshootY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      OVERSHOOT_Y,
+
+      /**
+       * @brief The position after the overshoot value has been considered in the calculation.
+       * @details Name "scrollFinal", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_FINAL,
+
+      /**
+       * @brief The X component of SCROLL_FINAL.
+       * @details Name "scrollFinalX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_FINAL_X,
+
+      /**
+       * @brief The Y component of SCROLL_FINAL.
+       * @details Name "scrollFinalY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_FINAL_Y,
+
+      /**
+       * @brief Whether scrolling wraps.
+       * @details Name "wrap", type Property::BOOLEAN.
+       * @SINCE_1_0.0
+       */
+      WRAP,
+
+      /**
+       * @brief Whether we are currently panning.
+       * @details Name "panning", type Property::BOOLEAN.
+       * @SINCE_1_0.0
+       */
+      PANNING,
+
+      /**
+       * @brief Whether we are currently scrolling.
+       * @details Name "scrolling", type Property::BOOLEAN.
+       * @SINCE_1_0.0
+       */
+      SCROLLING,
+
+      /**
+       * @brief The size of the scrolling domain.
+       * @details Name "scrollDomainSize", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_SIZE,
+
+      /**
+       * @brief The X component of SCROLL_DOMAIN_SIZE.
+       * @details Name "scrollDomainSizeX", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_SIZE_X,
+
+      /**
+       * @brief The Y component of SCROLL_DOMAIN_SIZE.
+       * @details Name "scrollDomainSizeY", type Property::FLOAT.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_SIZE_Y,
+
+      /**
+       * @brief The offset of the scroll domain.
+       * @details Name "scrollDomainOffset", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_DOMAIN_OFFSET,
+
+      /**
+       * @brief The delta in the position when scrolling.
+       * @details Name "scrollPositionDelta", type Property::VECTOR2.
+       * @SINCE_1_0.0
+       */
+      SCROLL_POSITION_DELTA,
+
+      /**
+       * @brief The starting page position.
+       * @details Name "startPagePosition", type Property::VECTOR3.
+       * @SINCE_1_0.0
+       */
+      START_PAGE_POSITION,
     };
   };
 
   // Typedefs
 
-  typedef Signal< void ( const SnapEvent& ) > SnapStartedSignalType; ///< SnapStarted signal type @SINCE_1_0.0
+  typedef Signal<void(const SnapEvent&)> SnapStartedSignalType; ///< SnapStarted signal type @SINCE_1_0.0
 
 public:
-
   /**
    * @brief Creates an empty ScrollView handle.
    * @SINCE_1_0.0
@@ -553,7 +724,15 @@ public:
    * @SINCE_1_0.0
    * @param[in] handle Handle to copy from
    */
-  ScrollView( const ScrollView& handle );
+  ScrollView(const ScrollView& handle);
+
+  /**
+   * @brief Move constructor
+   * @SINCE_1_9.23
+   *
+   * @param[in] rhs A reference to the moved handle
+   */
+  ScrollView(ScrollView&& rhs) noexcept;
 
   /**
    * @brief Assignment operator.
@@ -563,7 +742,16 @@ public:
    * @param[in] handle The handle to copy from
    * @return A reference to this
    */
-  ScrollView& operator=( const ScrollView& handle );
+  ScrollView& operator=(const ScrollView& handle);
+
+  /**
+   * @brief Move assignment
+   * @SINCE_1_9.23
+   *
+   * @param[in] rhs A reference to the moved handle
+   * @return A reference to this
+   */
+  ScrollView& operator=(ScrollView&& rhs) noexcept;
 
   /**
    * @brief Destructor.
@@ -591,10 +779,9 @@ public:
    * @param[in] handle Handle to an object
    * @return A handle to a ScrollView or an uninitialized handle
    */
-  static ScrollView DownCast( BaseHandle handle );
+  static ScrollView DownCast(BaseHandle handle);
 
 public:
-
   /**
    * @brief Gets snap-animation's AlphaFunction.
    *
@@ -690,11 +877,11 @@ public:
   void SetRulerY(RulerPtr ruler);
 
   /**
-   * @brief Sets scroll sensibility of pan gesture.
+   * @brief Sets scroll sensitivity of pan gesture.
    *
    * @SINCE_1_0.0
    * @param[in] sensitive @c true to enable scroll, @c false to disable scrolling
-   * @note Unlike Actor::SetSensitive(), this determines whether this ScrollView
+   * @note Unlike Actor::Property::SENSITIVE, this determines whether this ScrollView
    * should react (e.g. pan), without disrupting the sensitivity of its children.
    *
    */
@@ -886,7 +1073,7 @@ public:
    * @SINCE_1_0.0
    * @param[in] distance The minimum pan distance for a flick
    */
-  void SetMinimumDistanceForFlick( const Vector2& distance );
+  void SetMinimumDistanceForFlick(const Vector2& distance);
 
   /**
    * @brief Returns the minimum pan speed required for a flick gesture in pixels per second.
@@ -902,7 +1089,7 @@ public:
    * @SINCE_1_0.0
    * @param[in] speed The minimum pan speed for a flick
    */
-  void SetMinimumSpeedForFlick( float speed );
+  void SetMinimumSpeedForFlick(float speed);
 
   /**
    * @brief Gets the maximum flick speed setting for ScrollView when
@@ -1037,8 +1224,7 @@ public:
    * to get to the target page.
    *
    */
-  void ScrollTo(const Vector2& position, float duration,
-                DirectionBias horizontalBias, DirectionBias verticalBias);
+  void ScrollTo(const Vector2& position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias);
 
   /**
    * @brief Scrolls View to position specified (contents will scroll to this position).
@@ -1059,8 +1245,7 @@ public:
    * to get to the target page.
    *
    */
-  void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha,
-                DirectionBias horizontalBias, DirectionBias verticalBias);
+  void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias);
 
   /**
    * @brief Scrolls View to page currently based on assumption that each page is
@@ -1209,7 +1394,7 @@ public:
    * @param[in] threshold The threshold to apply around the axis
    * @note If no threshold is specified, then the default threshold of PI * 0.25 radians (or 45 degrees) is used.
    */
-  void SetScrollingDirection( Radian direction, Radian threshold = PanGestureDetector::DEFAULT_THRESHOLD );
+  void SetScrollingDirection(Radian direction, Radian threshold = PanGestureDetector::DEFAULT_THRESHOLD);
 
   /**
    * @brief Removes a direction constraint from the scroll view.
@@ -1218,10 +1403,9 @@ public:
    * @param[in] direction The axis to stop constraining to.
    *                      Usually will be PanGestureDetector::DIRECTION_VERTICAL or PanGestureDetector::DIRECTION_HORIZONTAL (but can be any other angle if desired).
    */
-  void RemoveScrollingDirection( Radian direction );
+  void RemoveScrollingDirection(Radian direction);
 
 public: // Signals
-
   /**
    * @brief Signal emitted when the ScrollView has started to snap or flick (it tells the target
    * position, scale, rotation for the snap or flick).
@@ -1237,7 +1421,6 @@ public: // Signals
   SnapStartedSignalType& SnapStartedSignal();
 
 public: // Not intended for application developers
-
   /// @cond internal
   /**
    * @brief Creates a handle using the Toolkit::Internal implementation.
@@ -1253,7 +1436,7 @@ public: // Not intended for application developers
    * @SINCE_1_0.0
    * @param[in] internal A pointer to the internal CustomActor
    */
-  explicit DALI_INTERNAL ScrollView( Dali::Internal::CustomActor* internal );
+  explicit DALI_INTERNAL ScrollView(Dali::Internal::CustomActor* internal);
   /// @endcond
 };
 
@@ -1264,4 +1447,4 @@ public: // Not intended for application developers
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_SCROLL_VIEW_H__
+#endif // DALI_TOOLKIT_SCROLL_VIEW_H