Merge "Set alpha to wayland window by Application::New(..., OPAQUE or Transparent...
[platform/core/uifw/dali-adaptor.git] / adaptors / wayland / event-handler-wl.cpp
index cc2772b..c32bec4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 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.
 #include <dali/public-api/common/vector-wrapper.h>
 #include <dali/public-api/events/touch-point.h>
 #include <dali/public-api/events/key-event.h>
-#include <dali/public-api/events/mouse-wheel-event.h>
+#include <dali/public-api/events/wheel-event.h>
 #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>
+#include <dali/integration-api/events/wheel-event-integ.h>
 
 // INTERNAL INCLUDES
 #include <events/gesture-manager.h>
@@ -50,8 +50,6 @@
 #include <style-monitor-impl.h>
 #include <base/core-event-interface.h>
 
-using namespace std;
-
 namespace Dali
 {
 
@@ -276,8 +274,8 @@ struct EventHandler::Impl
     EventHandler* handler( (EventHandler*)data );
     if ( mouseWheelEvent->window == (unsigned int)ecore_wl_window_id_get(handler->mImpl->mWindow) )
     {
-      MouseWheelEvent wheelEvent(mouseWheelEvent->direction, mouseWheelEvent->modifiers, Vector2(mouseWheelEvent->x, mouseWheelEvent->y), mouseWheelEvent->z, mouseWheelEvent->timestamp);
-      handler->SendMouseWheelEvent( wheelEvent );
+      WheelEvent wheelEvent( WheelEvent::MOUSE_WHEEL, mouseWheelEvent->direction, mouseWheelEvent->modifiers, Vector2(mouseWheelEvent->x, mouseWheelEvent->y), mouseWheelEvent->z, mouseWheelEvent->timestamp );
+      handler->SendWheelEvent( wheelEvent );
     }
     return ECORE_CALLBACK_PASS_ON;
   }
@@ -321,7 +319,7 @@ struct EventHandler::Impl
       Dali::ImfManager imfManager( ImfManager::Get() );
       if ( imfManager )
       {
-        imfContext = reinterpret_cast<Ecore_IMF_Context*>( imfManager.GetContext() );
+        imfContext = ImfManager::GetImplementation( imfManager ).GetContext();
       }
 
       if ( imfContext )
@@ -392,16 +390,19 @@ struct EventHandler::Impl
     Ecore_Event_Key *keyEvent( (Ecore_Event_Key*)event );
     bool eventHandled( false );
 
-    // XF86Stop and XF86Send must skip ecore_imf_context_filter_event.
-    if ( strcmp( keyEvent->keyname, "XF86Send" )  &&
-         strcmp( keyEvent->keyname, "XF86Phone" ) &&
-         strcmp( keyEvent->keyname, "XF86Stop" ) )
+    // Menu, home, back button must skip ecore_imf_context_filter_event.
+    static const char* menuKeyName = KeyLookup::GetKeyName( DALI_KEY_MENU );
+    static const char* homeKeyName = KeyLookup::GetKeyName( DALI_KEY_HOME );
+    static const char* backKeyName = KeyLookup::GetKeyName( DALI_KEY_BACK );
+    if ( ( menuKeyName && strcmp( keyEvent->keyname, menuKeyName ) != 0 ) &&
+         ( homeKeyName && strcmp( keyEvent->keyname, homeKeyName ) != 0 ) &&
+         ( backKeyName && strcmp( keyEvent->keyname, backKeyName ) != 0 ) )
     {
       Ecore_IMF_Context* imfContext = NULL;
       Dali::ImfManager imfManager( ImfManager::Get() );
       if ( imfManager )
       {
-        imfContext = reinterpret_cast<Ecore_IMF_Context*>( imfManager.GetContext() );
+        imfContext = ImfManager::GetImplementation( imfManager ).GetContext();
       }
 
       if ( imfContext )
@@ -639,11 +640,7 @@ struct EventHandler::Impl
   static void VconfNotifyFontNameChanged( keynode_t* node, void* data )
   {
     EventHandler* handler = static_cast<EventHandler*>( data );
-
-    StyleChange fontChange;
-    fontChange.defaultFontChange = true;
-
-    handler->SendEvent( fontChange );
+    handler->SendEvent( StyleChange::DEFAULT_FONT_CHANGE );
   }
 
   /**
@@ -652,11 +649,7 @@ struct EventHandler::Impl
   static void VconfNotifyFontSizeChanged( keynode_t* node, void* data )
   {
     EventHandler* handler = static_cast<EventHandler*>( data );
-
-    StyleChange fontChange;
-    fontChange.defaultFontSizeChange = true;
-
-    handler->SendEvent( fontChange );
+    handler->SendEvent( StyleChange::DEFAULT_FONT_SIZE_CHANGE );
   }
 
   // Data
@@ -672,21 +665,18 @@ EventHandler::EventHandler( RenderSurface* surface, CoreEventInterface& coreEven
   mDamageObserver( damageObserver ),
   mRotationObserver( NULL ),
   mDragAndDropDetector( dndDetector ),
-  mAccessibilityManager( AccessibilityManager::Get() ),
+  mAccessibilityAdaptor( AccessibilityAdaptor::Get() ),
   mClipboardEventNotifier( ClipboardEventNotifier::Get() ),
   mClipboard(Clipboard::Get()),
   mImpl( NULL )
 {
   Ecore_Wl_Window* window = 0;
 
-  if( surface->GetType() == Dali::RenderSurface::WINDOW )
+  // this code only works with the Ecore RenderSurface so need to downcast
+  ECore::WindowRenderSurface* ecoreSurface = dynamic_cast< ECore::WindowRenderSurface* >( surface );
+  if( ecoreSurface )
   {
-    // this code only works with the Ecore RenderSurface so need to downcast
-    ECore::WindowRenderSurface* ecoreSurface = dynamic_cast< ECore::WindowRenderSurface* >( surface );
-    if( ecoreSurface )
-    {
-      window = ecoreSurface->GetWlWindow();
-    }
+    window = ecoreSurface->GetWlWindow();
   }
 
   mImpl = new Impl(this, window);
@@ -751,15 +741,15 @@ void EventHandler::SendEvent(KeyEvent& keyEvent)
   mCoreEventInterface.ProcessCoreEvents();
 }
 
-void EventHandler::SendMouseWheelEvent( MouseWheelEvent& wheelEvent )
+void EventHandler::SendWheelEvent( WheelEvent& wheelEvent )
 {
-  // Create MouseWheelEvent and send to Core.
-  Integration::MouseWheelEvent event(wheelEvent.direction, wheelEvent.modifiers, wheelEvent.point, wheelEvent.z, wheelEvent.timeStamp);
+  // Create WheelEvent and send to Core.
+  Integration::WheelEvent event( static_cast< Integration::WheelEvent::Type >(wheelEvent.type), wheelEvent.direction, wheelEvent.modifiers, wheelEvent.point, wheelEvent.z, wheelEvent.timeStamp );
   mCoreEventInterface.QueueCoreEvent( event );
   mCoreEventInterface.ProcessCoreEvents();
 }
 
-void EventHandler::SendEvent(StyleChange styleChange)
+void EventHandler::SendEvent( StyleChange::Type styleChange )
 {
   DALI_ASSERT_DEBUG( mStyleMonitor && "StyleMonitor Not Available" );
   GetImplementation( mStyleMonitor ).StyleChanged(styleChange);
@@ -791,9 +781,9 @@ void EventHandler::FeedTouchPoint( TouchPoint& point, int timeStamp)
   SendEvent(point, timeStamp);
 }
 
-void EventHandler::FeedWheelEvent( MouseWheelEvent& wheelEvent )
+void EventHandler::FeedWheelEvent( WheelEvent& wheelEvent )
 {
-  SendMouseWheelEvent( wheelEvent );
+  SendWheelEvent( wheelEvent );
 }
 
 void EventHandler::FeedKeyEvent( KeyEvent& event )
@@ -824,6 +814,18 @@ void EventHandler::Reset()
   mCoreEventInterface.ProcessCoreEvents();
 }
 
+void EventHandler::Pause()
+{
+  mPaused = true;
+  Reset();
+}
+
+void EventHandler::Resume()
+{
+  mPaused = false;
+  Reset();
+}
+
 void EventHandler::SetDragAndDropDetector( DragAndDropDetectorPtr detector )
 {
   mDragAndDropDetector = detector;