Merge branch 'devel/master' into tizen
[platform/core/uifw/dali-adaptor.git] / dali / internal / accessibility / bridge / bridge-base.h
index 066c107..094d2c5 100644 (file)
@@ -23,6 +23,7 @@
 #include <dali/public-api/dali-adaptor-version.h>
 #include <dali/public-api/signals/connection-tracker.h>
 #include <memory>
+#include <tuple>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/proxy-accessible.h>
@@ -193,9 +194,20 @@ public:
     {
       mIsEmbedded = false;
       mParent.SetAddress({});
+      Dali::Accessibility::Bridge::GetCurrentBridge()->SetExtentsOffset(0, 0);
     }
   }
 
+  void SetOffset(std::int32_t x, std::int32_t y) override
+  {
+    if(!mIsEmbedded)
+    {
+      return;
+    }
+
+    Dali::Accessibility::Bridge::GetCurrentBridge()->SetExtentsOffset(x, y);
+  }
+
   // Component
 
   Dali::Rect<> GetExtents(Dali::Accessibility::CoordinateType type) const override
@@ -263,20 +275,21 @@ public:
 };
 
 /**
- * @brief Enumeration for FilteredEvents.
+ * @brief Enumeration for CoalescableMessages.
  */
-enum class FilteredEvents
+enum class CoalescableMessages
 {
-  BOUNDS_CHANGED ///< Bounds changed
+  BOUNDS_CHANGED, ///< Bounds changed
+  SET_OFFSET, ///< Set offset
 };
 
 // Custom specialization of std::hash
 namespace std
 {
 template<>
-struct hash<std::pair<FilteredEvents, Dali::Accessibility::Accessible*>>
+struct hash<std::pair<CoalescableMessages, Dali::Accessibility::Accessible*>>
 {
-  size_t operator()(std::pair<FilteredEvents, Dali::Accessibility::Accessible*> value) const
+  size_t operator()(std::pair<CoalescableMessages, Dali::Accessibility::Accessible*> value) const
   {
     return (static_cast<size_t>(value.first) * 131) ^ reinterpret_cast<size_t>(value.second);
   }
@@ -288,25 +301,25 @@ struct hash<std::pair<FilteredEvents, Dali::Accessibility::Accessible*>>
  */
 class BridgeBase : public Dali::Accessibility::Bridge, public Dali::ConnectionTracker
 {
-  std::unordered_map<std::pair<FilteredEvents, Dali::Accessibility::Accessible*>, std::pair<unsigned int, std::function<void()>>> mFilteredEvents;
+  std::unordered_map<std::pair<CoalescableMessages, Dali::Accessibility::Accessible*>, std::tuple<unsigned int, unsigned int, std::function<void()>>> mCoalescableMessages;
 
   /**
-   * @brief Removes all FilteredEvents using Tick signal.
+   * @brief Removes all CoalescableMessages using Tick signal.
    *
-   * @return False if mFilteredEvents is empty, otherwise true.
+   * @return False if mCoalescableMessages is empty, otherwise true.
    */
-  bool TickFilteredEvents();
+  bool TickCoalescableMessages();
 
 public:
   /**
-   * @brief Adds FilteredEvents, Accessible, and delay time to mFilteredEvents.
+   * @brief Adds CoalescableMessages, Accessible, and delay time to mCoalescableMessages.
    *
-   * @param[in] kind FilteredEvents enum value
+   * @param[in] kind CoalescableMessages enum value
    * @param[in] obj Accessible object
    * @param[in] delay The delay time
    * @param[in] functor The function to be called // NEED TO UPDATE!
    */
-  void AddFilteredEvent(FilteredEvents kind, Dali::Accessibility::Accessible* obj, float delay, std::function<void()> functor);
+  void AddCoalescableMessage(CoalescableMessages kind, Dali::Accessibility::Accessible* obj, float delay, std::function<void()> functor);
 
   /**
    * @brief Callback when the visibility of the window is changed.
@@ -352,10 +365,7 @@ public:
   /**
    * @copydoc Dali::Accessibility::Bridge::GetDefaultLabel()
    */
-  Dali::Accessibility::Accessible* GetDefaultLabel() const override
-  {
-    return mDefaultLabels.empty() ? nullptr : mDefaultLabels.back();
-  }
+  Dali::Accessibility::Accessible* GetDefaultLabel(Dali::Accessibility::Accessible* root) const override;
 
   /**
    * @copydoc Dali::Accessibility::Bridge::GetApplication()