/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
// EXTERNAL INCLUDES
#include <cstring> // for strcmp
#include <dali/public-api/actors/layer.h>
-#include <dali/public-api/common/stage.h>
-#include <dali/devel-api/common/stage-devel.h>
-
-// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/control-impl.h>
#include <dali/integration-api/debug.h>
+#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/adaptor-framework/scene-holder.h>
namespace Dali
{
: 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 )
return;
}
- control.OffStageSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlStageDisconnection );
+ control.OffSceneSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlSceneDisconnection );
Dali::Toolkit::Control previousFocusControl = GetCurrentFocusControl();
if( previousFocusControl )
{
if( control == mCurrentFocusControl )
{
- control.OffStageSignal().Disconnect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlStageDisconnection );
+ control.OffSceneSignal().Disconnect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlSceneDisconnection );
// Notify the control that it has lost key input focus
GetImplementation( control ).OnKeyInputFocusLost();
return consumed;
}
-void KeyInputFocusManager::OnFocusControlStageDisconnection( Dali::Actor actor )
+void KeyInputFocusManager::OnFocusControlSceneDisconnection( Dali::Actor actor )
{
RemoveFocus( Dali::Toolkit::Control::DownCast( actor ) );
}