/*
- * 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.
{
functorCalled = false;
- receivedKeyEvent.keyModifier = 0;
- receivedKeyEvent.keyPressedName.clear();
- receivedKeyEvent.keyPressed.clear();
+ receivedKeyEvent.Reset();
}
// Check that focus manager is a singleton
DALI_TEST_CHECK(manager == newManager);
+
END_TEST;
}
int UtcDaliKeyInputFocusManagerSetFocus01(void)
{
ToolkitTestApplication application;
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline(" Check that there is no focused control. Set focus to control. Check it is now the focused actor and receives KeyInputFocusGained signal");
DummyControl dummy = DummyControl::New(true);
Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(dummy.GetImplementation());
- dummy.SetSize(100.0f, 100.0f);
+ dummy.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
stage.Add( dummy );
DALI_TEST_CHECK( ! dummyImpl.keyInputFocusGained );
int UtcDaliKeyInputFocusManagerSetFocus02(void)
{
ToolkitTestApplication application;
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline(" Set focus to control. Check it is now the focused actor and receives KeyInputFocusGained signal. Set focuse to another control - check that the first control receives KeyInputFocusLost");
DummyControl dummy1 = DummyControl::New(true);
Impl::DummyControl& dummy1Impl = static_cast<Impl::DummyControl&>(dummy1.GetImplementation());
- dummy1.SetSize(100.0f, 100.0f);
+ dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
stage.Add( dummy1 );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
DummyControl dummy2 = DummyControl::New(true);
Impl::DummyControl& dummy2Impl = static_cast<Impl::DummyControl&>(dummy2.GetImplementation());
- dummy2.SetSize(100.0f, 100.0f);
+ dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
stage.Add( dummy2 );
DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
{
ToolkitTestApplication application;
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline("Test KeyEvent propagation. If focused control doesn't consume KeyEvent, KeyEvent will be recursively delivered to the control and its parents, until the event is consumed or the stage is reached. In this case, KeyEvent is delivered to KeyboardFocusManager via Stage's KeyEventSignal");
stage.KeyEventSignal().Connect( &stageCallback, &KeyEventCallback::Callback );
DummyControl dummy1 = DummyControl::New(true);
- dummy1.SetSize(100.0f, 100.0f);
+ dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
KeyEventCallback callback1( false );
dummy1.KeyEventSignal().Connect( &callback1, &KeyEventCallback::Callback );
stage.Add( dummy1 );
DummyControl dummy2 = DummyControl::New(true);
- dummy2.SetSize(100.0f, 100.0f);
+ dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
KeyEventCallback callback2( false );
dummy2.KeyEventSignal().Connect( &callback2, &KeyEventCallback::Callback );
dummy1.Add( dummy2 );
DummyControl dummy3 = DummyControl::New(true);
Impl::DummyControl& dummy3Impl = static_cast<Impl::DummyControl&>(dummy3.GetImplementation());
- dummy3.SetSize(100.0f, 100.0f);
+ dummy3.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
KeyEventCallback callback3( false );
dummy3.KeyEventSignal().Connect( &callback3, &KeyEventCallback::Callback );
dummy2.Add( dummy3 );
manager.SetFocus( dummy3 );
DALI_TEST_CHECK( dummy3Impl.keyInputFocusGained );
- Integration::KeyEvent event("a", "a", 0, 0, 0, Integration::KeyEvent::Up);
+ Integration::KeyEvent event( "a", "", "a", 0, 0, 0, Integration::KeyEvent::UP, "", "", Device::Class::TOUCH, Device::Subclass::NONE );
application.ProcessEvent(event);
DALI_TEST_CHECK( callback1.mIsCalled );
{
ToolkitTestApplication application;
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline("Test KeyEvent propagation. If focused control doesn't consume KeyEvent, KeyEvent will be recursively delivered to the control and its parents, until the event is consumed or the stage is reached. In this case, KeyEvent is delivered from dummy3 to dummy2");
DALI_TEST_CHECK(manager);
DummyControl dummy1 = DummyControl::New(true);
- dummy1.SetSize(100.0f, 100.0f);
+ dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
KeyEventCallback callback1( false );
dummy1.KeyEventSignal().Connect( &callback1, &KeyEventCallback::Callback );
stage.Add( dummy1 );
DummyControl dummy2 = DummyControl::New(true);
- dummy2.SetSize(100.0f, 100.0f);
+ dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
KeyEventCallback callback2( true );
dummy2.KeyEventSignal().Connect( &callback2, &KeyEventCallback::Callback );
dummy1.Add( dummy2 );
DummyControl dummy3 = DummyControl::New(true);
Impl::DummyControl& dummy3Impl = static_cast<Impl::DummyControl&>(dummy3.GetImplementation());
- dummy3.SetSize(100.0f, 100.0f);
+ dummy3.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
KeyEventCallback callback3( false );
dummy3.KeyEventSignal().Connect( &callback3, &KeyEventCallback::Callback );
dummy2.Add( dummy3 );
manager.SetFocus( dummy3 );
DALI_TEST_CHECK( dummy3Impl.keyInputFocusGained );
- Integration::KeyEvent event("a", "a", 0, 0, 0, Integration::KeyEvent::Up);
+ Integration::KeyEvent event( "a", "", "a", 0, 0, 0, Integration::KeyEvent::UP, "", "", Device::Class::TOUCH, Device::Subclass::NONE );
application.ProcessEvent(event);
DALI_TEST_CHECK( !callback1.mIsCalled );
int UtcDaliKeyInputFocusManagerGetCurrentFocusControl(void)
{
ToolkitTestApplication application;
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline(" Add 2 controls, check they each get focused. Re-focus the first control - ensure it's now got focus (check signals)");
DummyControl dummy1 = DummyControl::New(true);
Impl::DummyControl& dummy1Impl = static_cast<Impl::DummyControl&>(dummy1.GetImplementation());
- dummy1.SetSize(100.0f, 100.0f);
+ dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
stage.Add( dummy1 );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
DummyControl dummy2 = DummyControl::New(true);
Impl::DummyControl& dummy2Impl = static_cast<Impl::DummyControl&>(dummy2.GetImplementation());
- dummy2.SetSize(100.0f, 100.0f);
+ dummy2.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
stage.Add( dummy2 );
DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
int UtcDaliKeyInputFocusManagerRemoveFocus(void)
{
ToolkitTestApplication application;
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline(" Add focus controls. Test that removing focus from control which has focus. ");
DummyControl dummy1 = DummyControl::New(true);
Impl::DummyControl& dummy1Impl = static_cast<Impl::DummyControl&>(dummy1.GetImplementation());
- dummy1.SetSize(100.0f, 100.0f);
+ dummy1.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f) );
stage.Add( dummy1 );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
{
ToolkitTestApplication application;
KeyInputFocusManager manager = KeyInputFocusManager::Get();
- Stage stage = Stage::GetCurrent();
+ Integration::Scene stage = application.GetScene();
tet_infoline(" UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged");
DALI_TEST_CHECK( lostActor == Control() );
END_TEST;
}
+
+int UtcDaliKeyInputFocusManagerSignalKeyInputFocusChangedforNewWindow(void)
+{
+ ToolkitTestApplication application;
+ KeyInputFocusManager manager = KeyInputFocusManager::Get();
+
+ tet_infoline(" UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged");
+
+ PushButton pushButton1 = PushButton::New();
+ PushButton pushButton2 = PushButton::New();
+
+ Window window = Window::New(PositionSize(0,0,0,0) ,"", false);
+ DALI_TEST_CHECK( window );
+
+ window.Add( pushButton1 );
+ window.Add( pushButton2 );
+
+ PushButton gainActor, lostActor;
+ KeyInputFocusChangedCallback callback( gainActor, lostActor );
+ manager.KeyInputFocusChangedSignal().Connect( &callback, &KeyInputFocusChangedCallback::Callback );
+
+ manager.SetFocus(pushButton1);
+
+ DALI_TEST_CHECK( gainActor == pushButton1 );
+ DALI_TEST_CHECK( lostActor == Control() );
+
+ gainActor.Reset();
+ lostActor.Reset();
+
+ manager.SetFocus(pushButton2);
+
+ DALI_TEST_CHECK( gainActor == pushButton2 );
+ DALI_TEST_CHECK( lostActor == pushButton1 );
+
+ gainActor.Reset();
+ lostActor.Reset();
+
+ // Removing the focus actor from the window would also result in signal emission.
+ window.Remove( pushButton1 );
+ window.Remove( pushButton2 );
+ DALI_TEST_CHECK( gainActor == Control() );
+ DALI_TEST_CHECK( lostActor == Control() );
+
+ window.Reset();
+ END_TEST;
+}