2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 #include <dali-toolkit-test-suite-utils.h>
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali/integration-api/events/key-event-integ.h>
24 #include "dummy-control.h"
27 using namespace Toolkit;
33 * Callback class for KeyInputFocusChanged signal.
35 class KeyInputFocusChangedCallback : public Dali::ConnectionTracker
40 * @param[in] gainActor Ref to the actor that should be set as the one that gains key input focus.
41 * @param[in] lostActor Ref to the actor that should be set as the one that loses key input focus.
43 KeyInputFocusChangedCallback( Control& gainActor, Control& lostActor )
44 : mActorGain( gainActor ),
45 mActorLost( lostActor )
49 void Callback( Control gainingActor, Control lostActor )
51 mActorGain = gainingActor;
52 mActorLost = lostActor;
59 // Stores data that is populated in the callback and will be read by the TET cases
63 : functorCalled(false)
68 functorCalled = false;
70 receivedKeyEvent.keyModifier = 0;
71 receivedKeyEvent.keyPressedName.clear();
72 receivedKeyEvent.keyPressed.clear();
77 KeyEvent receivedKeyEvent;
81 * Callback class to test SignalUnhandledKeyEvent signal
83 class SignalUnhandledKeyEventCallback : public Dali::ConnectionTracker
86 SignalUnhandledKeyEventCallback( SignalData& data ) : mSignalData( data ) { }
88 void Callback(const KeyEvent& event)
90 mSignalData.functorCalled = true;
91 mSignalData.receivedKeyEvent = event;
94 SignalData& mSignalData;
99 void key_input_focus_manager_startup(void)
101 test_return_value = TET_UNDEF;
104 void key_input_focus_manager_cleanup(void)
106 test_return_value = TET_PASS;
109 int UtcDaliKeyInputFocusManagerGet(void)
111 ToolkitTestApplication application;
113 tet_infoline(" UtcDaliKeyInputFocusManagerGet");
115 KeyInputFocusManager manager;
117 manager = KeyInputFocusManager::Get();
118 DALI_TEST_CHECK(manager);
121 KeyInputFocusManager newManager = KeyInputFocusManager::Get();
122 DALI_TEST_CHECK(newManager);
124 // Check that focus manager is a singleton
125 DALI_TEST_CHECK(manager == newManager);
129 int UtcDaliKeyInputFocusManagerSetFocus01(void)
131 ToolkitTestApplication application;
132 Stage stage = Stage::GetCurrent();
134 tet_infoline(" Check that there is no focused control. Add a control to the stack. Check it is now the focused actor and receives KeyInputFocusGained signal");
136 KeyInputFocusManager manager = KeyInputFocusManager::Get();
137 DALI_TEST_CHECK(manager);
139 Control focusedControl = manager.GetCurrentFocusControl();
140 DALI_TEST_CHECK( ! focusedControl );
142 DummyControl dummy = DummyControl::New(true);
143 DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
144 dummy.SetSize(100.0f, 100.0f);
146 DALI_TEST_CHECK( ! dummyImpl.keyInputFocusGained );
148 manager.SetFocus( dummy );
149 DALI_TEST_CHECK( dummy.HasKeyInputFocus()); // Also tests IsKeyboardListener() API
150 DALI_TEST_CHECK( dummyImpl.keyInputFocusGained );
152 focusedControl = manager.GetCurrentFocusControl();
153 DALI_TEST_CHECK( focusedControl );
154 DALI_TEST_CHECK( focusedControl == dummy );
159 int UtcDaliKeyInputFocusManagerSetFocus02(void)
161 ToolkitTestApplication application;
162 Stage stage = Stage::GetCurrent();
164 tet_infoline(" Add a control to the stack. Check it is now the focused actor and receives KeyInputFocusGained signal. Add another control - check that the first control receives KeyInputFocusLost");
166 KeyInputFocusManager manager = KeyInputFocusManager::Get();
167 DALI_TEST_CHECK(manager);
169 DummyControl dummy1 = DummyControl::New(true);
170 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
171 dummy1.SetSize(100.0f, 100.0f);
173 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
174 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
178 manager.SetFocus( dummy1 );
179 DALI_TEST_CHECK( dummy1.HasKeyInputFocus()); // Also tests IsKeyboardListener() API
180 DALI_TEST_CHECK( dummy1Impl.keyInputFocusGained );
181 dummy1Impl.keyInputFocusGained = false;
183 DummyControl dummy2 = DummyControl::New(true);
184 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
185 dummy2.SetSize(100.0f, 100.0f);
187 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
188 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
192 manager.SetFocus( dummy2 );
193 DALI_TEST_CHECK( dummy2.HasKeyInputFocus()); // Also tests IsKeyboardListener() API
194 DALI_TEST_CHECK( dummy2Impl.keyInputFocusGained );
195 dummy1Impl.keyInputFocusGained = false;
197 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
198 DALI_TEST_CHECK( dummy1Impl.keyInputFocusLost );
204 int UtcDaliKeyInputFocusManagerGetCurrentFocusControl(void)
206 ToolkitTestApplication application;
207 Stage stage = Stage::GetCurrent();
209 tet_infoline(" Add 2 controls, check they each get focused. Re-focus the first control - ensure it's now got focus (check signals)");
211 KeyInputFocusManager manager = KeyInputFocusManager::Get();
212 DALI_TEST_CHECK(manager);
214 DummyControl dummy1 = DummyControl::New(true);
215 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
216 dummy1.SetSize(100.0f, 100.0f);
218 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
219 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
221 DummyControl dummy2 = DummyControl::New(true);
222 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
223 dummy2.SetSize(100.0f, 100.0f);
225 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
226 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
228 manager.SetFocus(dummy1);
229 DALI_TEST_CHECK( dummy1 == manager.GetCurrentFocusControl() );
230 DALI_TEST_CHECK( dummy1Impl.keyInputFocusGained );
231 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
232 dummy1Impl.keyInputFocusGained = false;
233 dummy1Impl.keyInputFocusLost = false;
235 manager.SetFocus(dummy2);
236 DALI_TEST_CHECK( dummy2 == manager.GetCurrentFocusControl() );
237 DALI_TEST_CHECK( dummy1Impl.keyInputFocusLost );
238 DALI_TEST_CHECK( dummy2Impl.keyInputFocusGained );
239 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
240 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
241 // Reset signal received
242 dummy1Impl.keyInputFocusGained = false;
243 dummy1Impl.keyInputFocusLost = false;
244 dummy2Impl.keyInputFocusGained = false;
245 dummy2Impl.keyInputFocusLost = false;
247 manager.SetFocus(dummy1);
248 DALI_TEST_CHECK( dummy1 == manager.GetCurrentFocusControl());
249 DALI_TEST_CHECK( dummy1Impl.keyInputFocusGained );
250 DALI_TEST_CHECK( dummy2Impl.keyInputFocusLost );
251 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
252 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
256 int UtcDaliKeyInputFocusManagerRemoveFocus01(void)
258 ToolkitTestApplication application;
259 Stage stage = Stage::GetCurrent();
261 tet_infoline(" Add 3 focus controls. Test that removing the topmost informs the next control that it now has focus, Test that the bottommost control doesn't receive anything. ");
263 KeyInputFocusManager manager = KeyInputFocusManager::Get();
264 DALI_TEST_CHECK(manager);
266 DummyControl dummy1 = DummyControl::New(true);
267 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
268 dummy1.SetSize(100.0f, 100.0f);
270 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
271 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
273 DummyControl dummy2 = DummyControl::New(true);
274 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
275 dummy2.SetSize(100.0f, 100.0f);
277 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
278 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
280 manager.SetFocus(dummy1);
281 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
283 manager.SetFocus(dummy2);
284 DALI_TEST_CHECK(dummy2 == manager.GetCurrentFocusControl());
285 dummy1Impl.keyInputFocusGained = false;
286 dummy1Impl.keyInputFocusLost = false;
287 dummy2Impl.keyInputFocusGained = false;
288 dummy2Impl.keyInputFocusLost = false;
290 manager.RemoveFocus(dummy2);
291 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
292 DALI_TEST_CHECK( dummy1Impl.keyInputFocusGained );
293 DALI_TEST_CHECK( dummy2Impl.keyInputFocusLost );
294 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
295 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
296 dummy1Impl.keyInputFocusGained = false;
297 dummy1Impl.keyInputFocusLost = false;
298 dummy2Impl.keyInputFocusGained = false;
299 dummy2Impl.keyInputFocusLost = false;
301 manager.RemoveFocus(dummy1);
302 DALI_TEST_CHECK(Control() == manager.GetCurrentFocusControl());
303 DALI_TEST_CHECK( dummy1Impl.keyInputFocusLost );
304 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
305 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
306 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
311 int UtcDaliKeyInputFocusManagerRemoveFocus02(void)
313 ToolkitTestApplication application;
314 Stage stage = Stage::GetCurrent();
316 tet_infoline(" Add 3 focus controls. Test that removing the bottommost doesn't change the focused control" );
318 KeyInputFocusManager manager = KeyInputFocusManager::Get();
319 DALI_TEST_CHECK(manager);
321 DummyControl dummy1 = DummyControl::New(true);
322 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
323 dummy1.SetSize(100.0f, 100.0f);
325 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
326 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
328 DummyControl dummy2 = DummyControl::New(true);
329 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
330 dummy2.SetSize(100.0f, 100.0f);
332 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
333 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
335 DummyControl dummy3 = DummyControl::New(true);
336 DummyControlImplOverride& dummy3Impl = static_cast<DummyControlImplOverride&>(dummy3.GetImplementation());
337 dummy3.SetSize(100.0f, 100.0f);
339 DALI_TEST_CHECK( ! dummy3Impl.keyInputFocusGained );
340 DALI_TEST_CHECK( ! dummy3Impl.keyInputFocusLost );
342 manager.SetFocus(dummy1);
343 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
345 manager.SetFocus(dummy2);
346 DALI_TEST_CHECK(dummy2 == manager.GetCurrentFocusControl());
348 manager.SetFocus(dummy3);
349 DALI_TEST_CHECK(dummy3 == manager.GetCurrentFocusControl());
350 dummy1Impl.keyInputFocusGained = false;
351 dummy1Impl.keyInputFocusLost = false;
352 dummy2Impl.keyInputFocusGained = false;
353 dummy2Impl.keyInputFocusLost = false;
354 dummy3Impl.keyInputFocusGained = false;
355 dummy3Impl.keyInputFocusLost = false;
357 manager.RemoveFocus(dummy1);
358 DALI_TEST_CHECK(dummy3 == manager.GetCurrentFocusControl());
359 DALI_TEST_CHECK( dummy1Impl.keyInputFocusLost );
360 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
361 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
362 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
363 DALI_TEST_CHECK( ! dummy3Impl.keyInputFocusLost );
364 DALI_TEST_CHECK( ! dummy3Impl.keyInputFocusGained );
365 dummy1Impl.keyInputFocusGained = false;
366 dummy1Impl.keyInputFocusLost = false;
367 dummy2Impl.keyInputFocusGained = false;
368 dummy2Impl.keyInputFocusLost = false;
369 dummy3Impl.keyInputFocusGained = false;
370 dummy3Impl.keyInputFocusLost = false;
375 int UtcDaliKeyInputFocusManagerRemoveFocus03(void)
377 ToolkitTestApplication application;
378 Stage stage = Stage::GetCurrent();
380 tet_infoline(" Add 2 focus controls. Remove each of them from the bottom up. Test that the stack is now empty. Add a new control - check that it correctly has focus" );
382 KeyInputFocusManager manager = KeyInputFocusManager::Get();
383 DALI_TEST_CHECK(manager);
385 DummyControl dummy1 = DummyControl::New(true);
386 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
387 dummy1.SetSize(100.0f, 100.0f);
389 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
390 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
392 DummyControl dummy2 = DummyControl::New(true);
393 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
394 dummy2.SetSize(100.0f, 100.0f);
396 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
397 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
399 manager.SetFocus(dummy1);
400 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
402 manager.SetFocus(dummy2);
403 DALI_TEST_CHECK(dummy2 == manager.GetCurrentFocusControl());
405 dummy1Impl.keyInputFocusGained = false;
406 dummy1Impl.keyInputFocusLost = false;
407 dummy2Impl.keyInputFocusGained = false;
408 dummy2Impl.keyInputFocusLost = false;
410 manager.RemoveFocus(dummy1);
411 DALI_TEST_CHECK(dummy2 == manager.GetCurrentFocusControl());
412 DALI_TEST_CHECK( dummy1Impl.keyInputFocusLost );
413 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
414 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
415 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
416 dummy1Impl.keyInputFocusGained = false;
417 dummy1Impl.keyInputFocusLost = false;
418 dummy2Impl.keyInputFocusGained = false;
419 dummy2Impl.keyInputFocusLost = false;
421 manager.RemoveFocus(dummy2);
422 DALI_TEST_CHECK(Control() == manager.GetCurrentFocusControl());
423 DALI_TEST_CHECK( dummy2Impl.keyInputFocusLost );
424 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
425 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
426 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
427 dummy1Impl.keyInputFocusGained = false;
428 dummy1Impl.keyInputFocusLost = false;
429 dummy2Impl.keyInputFocusGained = false;
430 dummy2Impl.keyInputFocusLost = false;
432 PushButton pushButton1 = PushButton::New();
433 stage.Add( pushButton1 );
434 manager.SetFocus( pushButton1 );
435 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
436 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
437 DALI_TEST_CHECK( pushButton1 == manager.GetCurrentFocusControl());
441 int UtcDaliKeyInputFocusManagerRemoveFocus04(void)
443 ToolkitTestApplication application;
444 Stage stage = Stage::GetCurrent();
446 tet_infoline(" Test what happens if the removed control is not on the focus stack");
447 KeyInputFocusManager manager = KeyInputFocusManager::Get();
448 DALI_TEST_CHECK(manager);
450 PushButton pushButton1 = PushButton::New();
451 PushButton pushButton2 = PushButton::New();
452 stage.Add( pushButton1 );
453 stage.Add( pushButton2 );
454 manager.SetFocus( pushButton1 );
455 manager.SetFocus( pushButton2 );
457 PushButton pushButton3 = PushButton::New();
458 stage.Add( pushButton3 );
459 manager.RemoveFocus( pushButton3 );
460 DALI_TEST_CHECK( pushButton2 == manager.GetCurrentFocusControl());
464 int UtcDaliKeyInputFocusManagerDestroyObject01(void)
466 ToolkitTestApplication application;
467 Stage stage = Stage::GetCurrent();
469 tet_infoline(" Add 2 controls to the stack. Unparent and destroy the topmost. Check that it is removed from the stack, and that the bottommost is correctly focused" );
471 KeyInputFocusManager manager = KeyInputFocusManager::Get();
472 DALI_TEST_CHECK(manager);
474 DummyControl dummy1 = DummyControl::New(true);
475 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
476 dummy1.SetSize(100.0f, 100.0f);
478 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
479 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
482 DummyControl dummy2 = DummyControl::New(true);
483 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
484 dummy2.SetSize(100.0f, 100.0f);
486 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
487 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
489 manager.SetFocus(dummy1);
490 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
492 manager.SetFocus(dummy2);
493 DALI_TEST_CHECK(dummy2 == manager.GetCurrentFocusControl());
495 dummy1Impl.keyInputFocusGained = false;
496 dummy1Impl.keyInputFocusLost = false;
497 dummy2Impl.keyInputFocusGained = false;
498 dummy2Impl.keyInputFocusLost = false;
500 stage.Remove(dummy2);
503 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
504 DALI_TEST_CHECK( dummy1Impl.keyInputFocusGained );
505 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
509 int UtcDaliKeyInputFocusManagerDestroyObject02(void)
511 ToolkitTestApplication application;
512 Stage stage = Stage::GetCurrent();
514 tet_infoline(" Add 2 controls to the stack. Destroy a different actor entirely. Check that the stack is un-affected.");
516 KeyInputFocusManager manager = KeyInputFocusManager::Get();
517 DALI_TEST_CHECK(manager);
519 DummyControl dummy1 = DummyControl::New(true);
520 DummyControlImplOverride& dummy1Impl = static_cast<DummyControlImplOverride&>(dummy1.GetImplementation());
521 dummy1.SetSize(100.0f, 100.0f);
523 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusGained );
524 DALI_TEST_CHECK( ! dummy1Impl.keyInputFocusLost );
527 DummyControl dummy2 = DummyControl::New(true);
528 DummyControlImplOverride& dummy2Impl = static_cast<DummyControlImplOverride&>(dummy2.GetImplementation());
529 dummy2.SetSize(100.0f, 100.0f);
531 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusGained );
532 DALI_TEST_CHECK( ! dummy2Impl.keyInputFocusLost );
534 manager.SetFocus(dummy1);
535 DALI_TEST_CHECK(dummy1 == manager.GetCurrentFocusControl());
537 manager.SetFocus(dummy2);
538 DALI_TEST_CHECK(dummy2 == manager.GetCurrentFocusControl());
540 dummy1Impl.keyInputFocusGained = false;
541 dummy1Impl.keyInputFocusLost = false;
542 dummy2Impl.keyInputFocusGained = false;
543 dummy2Impl.keyInputFocusLost = false;
546 BufferImage image = CreateBufferImage();
547 ImageActor imageActor = ImageActor::New( image );
548 stage.Add( imageActor );
549 imageActor.SetSize(100, 100);
551 application.SendNotification();
552 application.Render();
554 stage.Remove( imageActor );
557 DALI_TEST_CHECK( dummy2 == manager.GetCurrentFocusControl());
561 int UtcDaliKeyInputFocusManagerIsKeyboardListener(void)
563 ToolkitTestApplication application;
564 Stage stage = Stage::GetCurrent();
566 tet_infoline(" UtcDaliKeyInputFocusManagerIsKeyboardListener");
568 KeyInputFocusManager manager = KeyInputFocusManager::Get();
569 DALI_TEST_CHECK(manager);
571 PushButton pushButton1 = PushButton::New();
572 PushButton pushButton2 = PushButton::New();
573 stage.Add( pushButton1 );
574 stage.Add( pushButton2 );
576 manager.SetFocus(pushButton1);
577 DALI_TEST_CHECK(pushButton1 == manager.GetCurrentFocusControl());
579 manager.SetFocus(pushButton2);
580 DALI_TEST_CHECK(pushButton2 == manager.GetCurrentFocusControl());
582 DALI_TEST_CHECK(manager.IsKeyboardListener(pushButton1));
583 DALI_TEST_CHECK(manager.IsKeyboardListener(pushButton2));
585 manager.RemoveFocus(pushButton2);
586 DALI_TEST_CHECK(!manager.IsKeyboardListener(pushButton2));
588 manager.RemoveFocus(pushButton1);
589 DALI_TEST_CHECK(!manager.IsKeyboardListener(pushButton1));
591 manager.SetFocus(pushButton2);
592 DALI_TEST_CHECK(manager.IsKeyboardListener(pushButton2));
593 pushButton2.ClearKeyInputFocus();
594 DALI_TEST_CHECK(!manager.IsKeyboardListener(pushButton2));
598 int UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged(void)
600 ToolkitTestApplication application;
601 KeyInputFocusManager manager = KeyInputFocusManager::Get();
602 Stage stage = Stage::GetCurrent();
604 tet_infoline(" UtcDaliKeyInputFocusManagerSignalKeyInputFocusChanged");
606 PushButton pushButton1 = PushButton::New();
607 PushButton pushButton2 = PushButton::New();
609 stage.Add( pushButton1 );
610 stage.Add( pushButton2 );
612 PushButton gainActor, lostActor;
613 KeyInputFocusChangedCallback callback( gainActor, lostActor );
614 manager.KeyInputFocusChangedSignal().Connect( &callback, &KeyInputFocusChangedCallback::Callback );
616 manager.SetFocus(pushButton1);
618 DALI_TEST_CHECK( gainActor == pushButton1 );
619 DALI_TEST_CHECK( lostActor == Control() );
624 manager.SetFocus(pushButton2);
626 DALI_TEST_CHECK( gainActor == pushButton2 );
627 DALI_TEST_CHECK( lostActor == pushButton1 );
632 // Removing the focus actor from the stage would also result in signal emission.
633 stage.Remove( pushButton1 );
634 stage.Remove( pushButton2 );
636 DALI_TEST_CHECK( gainActor == Control() );
637 DALI_TEST_CHECK( lostActor == Control() );
641 int UtcDaliKeyInputFocusManagerSignalUnhandledKeyEvent(void)
643 ToolkitTestApplication application;
645 tet_infoline("UtcDaliKeyInputFocusManagerSignalUnhandledKeyEvent");
648 SignalUnhandledKeyEventCallback callback( data );
650 KeyInputFocusManager manager = KeyInputFocusManager::Get();
651 manager.UnhandledKeyEventSignal().Connect( &callback, &SignalUnhandledKeyEventCallback::Callback );
654 Integration::KeyEvent event("a", "a", 0, 0, 0, Integration::KeyEvent::Up);
655 application.ProcessEvent(event);
657 DALI_TEST_CHECK(data.functorCalled);
658 DALI_TEST_CHECK(event.keyName == data.receivedKeyEvent.keyPressedName );
659 DALI_TEST_CHECK(event.keyCode == data.receivedKeyEvent.keyCode);
660 DALI_TEST_CHECK(event.keyString == data.receivedKeyEvent.keyPressed );
661 DALI_TEST_CHECK(event.state == static_cast<Integration::KeyEvent::State>(data.receivedKeyEvent.state) );
665 Integration::KeyEvent event2("v", "v", 0, 0, 0, Integration::KeyEvent::Up);
666 application.ProcessEvent(event2);
668 DALI_TEST_CHECK(data.functorCalled);
669 DALI_TEST_CHECK(event2.keyName == data.receivedKeyEvent.keyPressedName );
670 DALI_TEST_CHECK(event2.keyCode == data.receivedKeyEvent.keyCode);
671 DALI_TEST_CHECK(event2.keyString == data.receivedKeyEvent.keyPressed );