[Tizen] Connect KeyEventGeneratedSignal for Get KeyEvent accepted/tizen/unified/20190626.040907 submit/tizen/20190625.054022 submit/tizen/20190625.063633 submit/tizen/20190625.070138
authorHeeyong Song <heeyong.song@samsung.com>
Tue, 25 Jun 2019 04:55:09 +0000 (13:55 +0900)
committerHeeyong Song <heeyong.song@samsung.com>
Tue, 25 Jun 2019 04:55:17 +0000 (13:55 +0900)
Change-Id: I6fe9ce496af4274cb741c54d04e15ac58ef8c9f2

automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.h
dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp
dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h

index 05c4836..d9e9cd8 100644 (file)
@@ -20,6 +20,7 @@
 #include <dali/public-api/actors/layer.h>
 #include <dali/public-api/common/stage.h>
 #include <dali/public-api/object/base-object.h>
+#include <dali/devel-api/common/stage-devel.h>
 
 // INTERNAL INCLUDES
 #include "toolkit-window.h"
@@ -107,6 +108,11 @@ KeyEventSignalType& KeyEventSignal( Window window )
   return Dali::Stage::GetCurrent().KeyEventSignal();
 }
 
+KeyEventGeneratedSignalType& KeyEventGeneratedSignal( Window window )
+{
+  return DevelStage::KeyEventGeneratedSignal( Dali::Stage::GetCurrent() );
+}
+
 TouchSignalType& TouchSignal( Window window )
 {
   return Dali::Stage::GetCurrent().TouchSignal();
index 4c95ad7..37361dd 100644 (file)
@@ -62,10 +62,12 @@ namespace DevelWindow
 {
 
 typedef Signal< void (const KeyEvent&) > KeyEventSignalType;
+typedef Signal< bool (const KeyEvent&) > KeyEventGeneratedSignalType;
 typedef Signal< void (const TouchData&) > TouchSignalType;
 
 Dali::Window Get( Actor actor );
 KeyEventSignalType& KeyEventSignal( Dali::Window window );
+KeyEventGeneratedSignalType& KeyEventGeneratedSignal( Dali::Window window );
 TouchSignalType& TouchSignal( Dali::Window window );
 
 }
index f188281..71bc352 100644 (file)
@@ -23,6 +23,8 @@
 #include <dali/public-api/actors/layer.h>
 #include <dali/public-api/common/stage.h>
 #include <dali/devel-api/common/stage-devel.h>
+#include <dali/devel-api/adaptor-framework/window-devel.h>
+#include <dali/integration-api/adaptors/adaptor.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
@@ -50,13 +52,26 @@ KeyInputFocusManager::KeyInputFocusManager()
 : mSlotDelegate( this ),
   mCurrentFocusControl()
 {
-  DevelStage::KeyEventGeneratedSignal( Stage::GetCurrent() ).Connect(mSlotDelegate, &KeyInputFocusManager::OnKeyEvent);
+  // Retrieve all the existing widnows
+  Dali::WindowContainer windows = Adaptor::Get().GetWindows();
+  for ( auto iter = windows.begin(); iter != windows.end(); ++iter )
+  {
+    DevelWindow::KeyEventGeneratedSignal( *iter ).Connect( mSlotDelegate, &KeyInputFocusManager::OnKeyEvent);
+  }
+
+  // Get notified when any new window is created afterwards
+  Adaptor::Get().WindowCreatedSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnWindowCreated);
 }
 
 KeyInputFocusManager::~KeyInputFocusManager()
 {
 }
 
+void KeyInputFocusManager::OnWindowCreated( Dali::Window& window )
+{
+  DevelWindow::KeyEventGeneratedSignal( window ).Connect( mSlotDelegate, &KeyInputFocusManager::OnKeyEvent);
+}
+
 void KeyInputFocusManager::SetFocus( Toolkit::Control control )
 {
   if( !control )
index f7886c2..0f066c5 100644 (file)
@@ -30,6 +30,8 @@
 namespace Dali
 {
 
+class Window;
+
 namespace Toolkit
 {
 
@@ -90,6 +92,11 @@ protected:
   virtual ~KeyInputFocusManager();
 
 private:
+  /**
+   * This will be called when a new window is created
+   * @param window The new window
+   */
+  void OnWindowCreated( Dali::Window& window );
 
   /**
    * Callback for the key event when no actor in the stage has gained the key input focus