#include <dali/public-api/actors/layer.h>
#include <dali/public-api/common/stage.h>
#include <dali/devel-api/common/stage-devel.h>
+#include <dali/integration-api/adaptors/adaptor.h>
+#include <dali/integration-api/adaptors/scene-holder.h>
// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/control-impl.h>
: mSlotDelegate( this ),
mCurrentFocusControl()
{
- DevelStage::KeyEventGeneratedSignal( Stage::GetCurrent() ).Connect(mSlotDelegate, &KeyInputFocusManager::OnKeyEvent);
+ // Retrieve all the existing widnows
+ Dali::SceneHolderList sceneHolders = Adaptor::Get().GetSceneHolders();
+ for( auto iter = sceneHolders.begin(); iter != sceneHolders.end(); ++iter )
+ {
+ ( *iter ).KeyEventGeneratedSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnKeyEvent );
+ }
+
+ // Get notified when any new scene holder is created afterwards
+ Adaptor::Get().WindowCreatedSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnSceneHolderCreated );
}
KeyInputFocusManager::~KeyInputFocusManager()
{
}
+void KeyInputFocusManager::OnSceneHolderCreated( Dali::Integration::SceneHolder& sceneHolder )
+{
+ sceneHolder.KeyEventGeneratedSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnKeyEvent );
+}
+
void KeyInputFocusManager::SetFocus( Toolkit::Control control )
{
if( !control )