From 44792acb184ab4991f0f092ee67217df8d9ad973 Mon Sep 17 00:00:00 2001 From: Sunghyun kim Date: Wed, 24 Jul 2019 13:45:42 +0900 Subject: [PATCH] [Tizen] Connect KeyEventGeneratedSignal for Get KeyEvent This reverts commit ab9b594c799633e114ea596e5a3766c13c2dafe6. Change-Id: Ia754d9bf718d133e7d2403b4897116339368eb81 --- .../dali-toolkit-test-utils/toolkit-window.cpp | 6 ++++++ .../dali-toolkit-test-utils/toolkit-window.h | 2 ++ .../focus-manager/keyinput-focus-manager-impl.cpp | 17 ++++++++++++++++- .../focus-manager/keyinput-focus-manager-impl.h | 7 +++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp index 1b8cdbd..482a4d4 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp @@ -23,6 +23,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include "test-render-surface.h" @@ -145,6 +146,11 @@ KeyEventSignalType& KeyEventSignal( Window window ) return GetImplementation( window ).mScene.KeyEventSignal(); } +KeyEventGeneratedSignalType& KeyEventGeneratedSignal( Window window ) +{ + return DevelStage::KeyEventGeneratedSignal( Dali::Stage::GetCurrent() ); +} + TouchSignalType& TouchSignal( Window window ) { return GetImplementation( window ).mScene.TouchSignal(); diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.h index c830af5..2692761 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.h @@ -68,6 +68,7 @@ namespace DevelWindow { typedef Signal< void () > EventProcessingFinishedSignalType; typedef Signal< void (const KeyEvent&) > KeyEventSignalType; +typedef Signal< bool (const KeyEvent&) > KeyEventGeneratedSignalType; typedef Signal< void (const TouchData&) > TouchSignalType; typedef Signal< void (const WheelEvent&) > WheelEventSignalType; @@ -75,6 +76,7 @@ Dali::Window Get( Actor actor ); EventProcessingFinishedSignalType& EventProcessingFinishedSignal( Window window ); KeyEventSignalType& KeyEventSignal( Dali::Window window ); +KeyEventGeneratedSignalType& KeyEventGeneratedSignal( Dali::Window window ); TouchSignalType& TouchSignal( Dali::Window window ); WheelEventSignalType& WheelEventSignal( Window window ); diff --git a/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp b/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp index f188281..71bc352 100644 --- a/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp +++ b/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp @@ -23,6 +23,8 @@ #include #include #include +#include +#include // INTERNAL INCLUDES #include @@ -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 ) diff --git a/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h b/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h index f7886c2..0f066c5 100644 --- a/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h +++ b/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h @@ -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 -- 2.7.4