X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ffocus-manager%2Fkeyinput-focus-manager-impl.cpp;h=2549e52c9d5c7128755575b43aa3dd56d40dcb8f;hp=f188281f955e39232271d3390b2d47d1927443f4;hb=29540fc153880d6949c85786b78b8583ae8f1d37;hpb=9795d65d103bdf0524aa92e96475019eff2705f3 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..2549e52 100644 --- a/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp +++ b/dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp @@ -1,5 +1,5 @@ /* - * 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. @@ -21,12 +21,10 @@ // EXTERNAL INCLUDES #include // for strcmp #include -#include -#include - -// INTERNAL INCLUDES #include #include +#include +#include namespace Dali { @@ -50,13 +48,26 @@ KeyInputFocusManager::KeyInputFocusManager() : 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 ) @@ -71,7 +82,7 @@ void KeyInputFocusManager::SetFocus( Toolkit::Control control ) return; } - control.OffStageSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlStageDisconnection ); + control.OffSceneSignal().Connect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlSceneDisconnection ); Dali::Toolkit::Control previousFocusControl = GetCurrentFocusControl(); if( previousFocusControl ) @@ -97,7 +108,7 @@ void KeyInputFocusManager::RemoveFocus( Toolkit::Control control ) { 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(); @@ -153,7 +164,7 @@ bool KeyInputFocusManager::EmitKeyEventSignal( Toolkit::Control control, const K return consumed; } -void KeyInputFocusManager::OnFocusControlStageDisconnection( Dali::Actor actor ) +void KeyInputFocusManager::OnFocusControlSceneDisconnection( Dali::Actor actor ) { RemoveFocus( Dali::Toolkit::Control::DownCast( actor ) ); }