Event handling for hover event 15/27815/6
authorRichard Huang <r.huang@samsung.com>
Fri, 19 Sep 2014 10:46:52 +0000 (11:46 +0100)
committerRichard Huang <r.huang@samsung.com>
Fri, 3 Oct 2014 12:16:17 +0000 (05:16 -0700)
Change-Id: If80f5cf4facd93bedcdb4ea8f76d98ffe14bb0e1

adaptors/tizen/accessibility-manager-impl-tizen.cpp
adaptors/ubuntu/accessibility-manager-impl-ubuntu.cpp
adaptors/wayland/accessibility-manager-impl-wl.cpp
adaptors/wayland/event-handler-wl.cpp
adaptors/x11/accessibility-manager-impl-x.cpp
adaptors/x11/event-handler-x.cpp

index feb5551..d2d4f14 100644 (file)
@@ -24,6 +24,7 @@
 #include <dali/public-api/dali-core.h>
 #include <dali/integration-api/debug.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali/integration-api/events/hover-event-integ.h>
 #include <dali/integration-api/events/gesture-requests.h>
 
 // INTERNAL INCLUDES
@@ -155,8 +156,8 @@ bool AccessibilityManager::HandleActionScrollEvent(const TouchPoint& point, unsi
 
   Dali::AccessibilityManager handle( this );
 
-  Dali::TouchEvent touchEvent(timeStamp);
-  touchEvent.points.push_back(point);
+  Dali::TouchEvent event(timeStamp);
+  event.points.push_back(point);
 
   /*
    * In order to application decide touch action first,
@@ -166,17 +167,19 @@ bool AccessibilityManager::HandleActionScrollEvent(const TouchPoint& point, unsi
   {
     if( !mActionScrollSignalV2.Empty() )
     {
-      mActionScrollSignalV2.Emit( handle, touchEvent );
+      mActionScrollSignalV2.Emit( handle, event );
     }
   }
 
-  Integration::TouchEvent event;
-  if (mCombiner.GetNextTouchEvent(point, timeStamp, event))
+  Integration::TouchEvent touchEvent;
+  Integration::HoverEvent hoverEvent;
+  Integration::TouchEventCombiner::EventDispatchType type = mCombiner.GetNextTouchEvent(point, timeStamp, touchEvent, hoverEvent);
+  if(type == Integration::TouchEventCombiner::DispatchTouch || type == Integration::TouchEventCombiner::DispatchBoth) // hover event is ignored
   {
     // Process the touch event in accessibility gesture detector
     if( mAccessibilityGestureDetector )
     {
-      mAccessibilityGestureDetector->SendEvent(event);
+      mAccessibilityGestureDetector->SendEvent(touchEvent);
       ret = true;
     }
   }
index 8c4214a..278bf6c 100644 (file)
@@ -23,6 +23,7 @@
 #include <dali/public-api/dali-core.h>
 #include <dali/integration-api/debug.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali/integration-api/events/hover-event-integ.h>
 #include <dali/integration-api/events/gesture-requests.h>
 
 // INTERNAL INCLUDES
@@ -136,8 +137,8 @@ bool AccessibilityManager::HandleActionScrollEvent(const TouchPoint& point, unsi
 
   Dali::AccessibilityManager handle( this );
 
-  Dali::TouchEvent touchEvent(timeStamp);
-  touchEvent.points.push_back(point);
+  Dali::TouchEvent event(timeStamp);
+  event.points.push_back(point);
 
   /*
    * In order to application decide touch action first,
@@ -147,17 +148,19 @@ bool AccessibilityManager::HandleActionScrollEvent(const TouchPoint& point, unsi
   {
     if( !mActionScrollSignalV2.Empty() )
     {
-      mActionScrollSignalV2.Emit( handle, touchEvent );
+      mActionScrollSignalV2.Emit( handle, event );
     }
   }
 
-  Integration::TouchEvent event;
-  if (mCombiner.GetNextTouchEvent(point, timeStamp, event))
+  Integration::TouchEvent touchEvent;
+  Integration::HoverEvent hoverEvent;
+  Integration::TouchEventCombiner::EventDispatchType type = mCombiner.GetNextTouchEvent(point, timeStamp, touchEvent, hoverEvent);
+  if(type == Integration::TouchEventCombiner::DispatchTouch || type == Integration::TouchEventCombiner::DispatchBoth) // hover event is ignored
   {
     // Process the touch event in accessibility gesture detector
     if( mAccessibilityGestureDetector )
     {
-      mAccessibilityGestureDetector->SendEvent(event);
+      mAccessibilityGestureDetector->SendEvent(touchEvent);
       ret = true;
     }
   }
index b57bc54..0147608 100644 (file)
@@ -26,7 +26,6 @@
 
 #include <dali/public-api/dali-core.h>
 #include <dali/integration-api/debug.h>
-#include <dali/integration-api/events/touch-event-integ.h>
 #include <dali/integration-api/events/gesture-requests.h>
 #include "system-settings.h"
 
index b60efea..e67bda9 100644 (file)
@@ -38,6 +38,7 @@
 #include <dali/integration-api/debug.h>
 #include <dali/integration-api/events/key-event-integ.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali/integration-api/events/hover-event-integ.h>
 #include <dali/integration-api/events/mouse-wheel-event-integ.h>
 
 // INTERNAL INCLUDES
@@ -692,14 +693,24 @@ void EventHandler::SendEvent(TouchPoint& point, unsigned long timeStamp)
     timeStamp = GetCurrentMilliSeconds();
   }
 
-  Integration::TouchEvent event;
-  if (mCombiner.GetNextTouchEvent(point, timeStamp, event))
+  Integration::TouchEvent touchEvent;
+  Integration::HoverEvent hoverEvent;
+  Integration::TouchEventCombiner::EventDispatchType type = mCombiner.GetNextTouchEvent(point, timeStamp, touchEvent, hoverEvent);
+  if(type != Integration::TouchEventCombiner::DispatchNone )
   {
     DALI_LOG_INFO(gTouchEventLogFilter, Debug::General, "%d: Device %d: Button state %d (%.2f, %.2f)\n", timeStamp, point.deviceId, point.state, point.local.x, point.local.y);
 
-    // First the touch event & related gesture events are queued
-    mCoreEventInterface.QueueCoreEvent( event );
-    mGestureManager.SendEvent(event);
+    // First the touch and/or hover event & related gesture events are queued
+    if(type == Integration::TouchEventCombiner::DispatchTouch || type == Integration::TouchEventCombiner::DispatchBoth)
+    {
+      mCoreEventInterface.QueueCoreEvent( touchEvent );
+      mGestureManager.SendEvent(touchEvent);
+    }
+
+    if(type == Integration::TouchEventCombiner::DispatchHover || type == Integration::TouchEventCombiner::DispatchBoth)
+    {
+      mCoreEventInterface.QueueCoreEvent( hoverEvent );
+    }
 
     // Next the events are processed with a single call into Core
     mCoreEventInterface.ProcessCoreEvents();
index e70f2b8..97ff5dd 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <dali/public-api/dali-core.h>
 #include <dali/integration-api/debug.h>
-#include <dali/integration-api/events/touch-event-integ.h>
 #include <dali/integration-api/events/gesture-requests.h>
 #include "system-settings.h"
 
index f702cea..4fbe2a3 100644 (file)
@@ -39,6 +39,7 @@
 #include <dali/integration-api/debug.h>
 #include <dali/integration-api/events/key-event-integ.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali/integration-api/events/hover-event-integ.h>
 #include <dali/integration-api/events/mouse-wheel-event-integ.h>
 
 // INTERNAL INCLUDES
@@ -1137,14 +1138,24 @@ void EventHandler::SendEvent(TouchPoint& point, unsigned long timeStamp)
     timeStamp = GetCurrentMilliSeconds();
   }
 
-  Integration::TouchEvent event;
-  if (mCombiner.GetNextTouchEvent(point, timeStamp, event))
+  Integration::TouchEvent touchEvent;
+  Integration::HoverEvent hoverEvent;
+  Integration::TouchEventCombiner::EventDispatchType type = mCombiner.GetNextTouchEvent(point, timeStamp, touchEvent, hoverEvent);
+  if(type != Integration::TouchEventCombiner::DispatchNone )
   {
     DALI_LOG_INFO(gTouchEventLogFilter, Debug::General, "%d: Device %d: Button state %d (%.2f, %.2f)\n", timeStamp, point.deviceId, point.state, point.local.x, point.local.y);
 
-    // First the touch event & related gesture events are queued
-    mCoreEventInterface.QueueCoreEvent( event );
-    mGestureManager.SendEvent(event);
+    // First the touch and/or hover event & related gesture events are queued
+    if(type == Integration::TouchEventCombiner::DispatchTouch || type == Integration::TouchEventCombiner::DispatchBoth)
+    {
+      mCoreEventInterface.QueueCoreEvent( touchEvent );
+      mGestureManager.SendEvent(touchEvent);
+    }
+
+    if(type == Integration::TouchEventCombiner::DispatchHover || type == Integration::TouchEventCombiner::DispatchBoth)
+    {
+      mCoreEventInterface.QueueCoreEvent( hoverEvent );
+    }
 
     // Next the events are processed with a single call into Core
     mCoreEventInterface.ProcessCoreEvents();