Consume only GestureDetected events with a matching resource ID 15/282715/1 accepted/tizen/6.0/unified/20221012.005834 submit/tizen_6.0/20221011.041802 submit/tizen_6.0/20221011.042059
authorArtur Świgoń <a.swigon@samsung.com>
Mon, 10 Oct 2022 17:44:33 +0000 (19:44 +0200)
committerArtur Świgoń <a.swigon@samsung.com>
Mon, 10 Oct 2022 17:45:33 +0000 (19:45 +0200)
Change-Id: I8d4cb74726f230cc640b4c88feaacf769adab6ee

dali/internal/window-system/common/event-handler.cpp
dali/internal/window-system/common/event-handler.h
dali/internal/window-system/common/window-base.h
dali/internal/window-system/tizen-wayland/ecore-wl2/window-base-ecore-wl2.cpp

index 4f19a8b..35b1a94 100755 (executable)
@@ -104,6 +104,7 @@ EventHandler::EventHandler( WindowBase* windowBase, DamageObserver& damageObserv
   mAccessibilityAdaptor( AccessibilityAdaptor::Get() ),
   mClipboardEventNotifier( ClipboardEventNotifier::Get() ),
   mClipboard( Clipboard::Get() ),
+  mWindowBase( windowBase ),
   mPaused( false )
 {
   // Connect signals
@@ -297,6 +298,20 @@ void EventHandler::OnAccessibilityNotification( const WindowBase::AccessibilityI
     return;
   }
 
+  if( std::to_string( info.resourceId ) == mWindowBase->GetNativeWindowResourceId() )
+  {
+    if( !accessibilityAdaptor->IsEnabled() )
+    {
+      // Accessibility gesture was sent to this window, so enable accessibility
+      accessibilityAdaptor->EnableAccessibility();
+    }
+  }
+  else
+  {
+    // Ignore gesture
+    return;
+  }
+
   if( !accessibilityAdaptor->IsEnabled() )
   {
     DALI_LOG_ERROR( "The current dali accessibility is not available. \n" );
index 7077a49..18273ad 100644 (file)
@@ -234,6 +234,7 @@ private:
   using ObserverContainer = std::vector<Observer*>;
   ObserverContainer mObservers;   ///< A list of event observer pointers
 
+  WindowBase* mWindowBase;
   bool mPaused; ///< The paused state of the adaptor.
 };
 
index 799f351..dec8750 100644 (file)
@@ -65,6 +65,7 @@ public:
     int endY;
     int state;
     int eventTime;
+    std::uint32_t resourceId;
     unsigned char quickpanelInfo; // to retrieve quick panel information for Accessibility
     #ifdef DALI_ELDBUS_AVAILABLE
     Eldbus_Proxy* proxy;
index 8cd21cb..33979a8 100755 (executable)
@@ -1319,7 +1319,7 @@ void WindowBaseEcoreWl2::OnEcoreElDBusAccessibilityNotification( void* context,
 #ifdef DALI_ELDBUS_AVAILABLE
 
   // The string defines the arg-list's respective types.
-  if( !eldbus_message_arguments_get( message, "iiiiiiu", &mAccessibilityInfo.gestureValue, &mAccessibilityInfo.startX, &mAccessibilityInfo.startY, &mAccessibilityInfo.endX, &mAccessibilityInfo.endY, &mAccessibilityInfo.state, &mAccessibilityInfo.eventTime ) )
+  if( !eldbus_message_arguments_get( message, "iiiiiiuu", &mAccessibilityInfo.gestureValue, &mAccessibilityInfo.startX, &mAccessibilityInfo.startY, &mAccessibilityInfo.endX, &mAccessibilityInfo.endY, &mAccessibilityInfo.state, &mAccessibilityInfo.eventTime, &mAccessibilityInfo.resourceId ) )
   {
     DALI_LOG_ERROR( "OnEcoreElDBusAccessibilityNotification: Error getting arguments\n" );
   }