From: Heeyong Song Date: Tue, 25 Jun 2019 04:55:09 +0000 (+0900) Subject: [Tizen] Connect KeyEventGeneratedSignal for Get KeyEvent X-Git-Tag: submit/tizen/20190625.063633 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=refs%2Ftags%2Fsubmit%2Ftizen%2F20190625.063633 [Tizen] Connect KeyEventGeneratedSignal for Get KeyEvent Change-Id: I6fe9ce496af4274cb741c54d04e15ac58ef8c9f2 --- 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 05c4836..d9e9cd8 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 @@ -20,6 +20,7 @@ #include #include #include +#include // 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(); 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 4c95ad7..37361dd 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 @@ -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 ); } 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