: mInterfaceVerified(interfaceVerified),
mCurrentFocusedActor(),
mProposedActorToFocus(),
- mDirection(Control::KeyboardFocus::LEFT)
+ mDirection(Control::KeyboardFocus::LEFT),
+ mDeviceName("")
{
}
- Actor GetNextFocusableActor(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction)
+ Actor GetNextFocusableActor(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction, const std::string& deviceName)
{
tet_infoline("Verifying CustomAlgorithm()");
mCurrentFocusedActor = currentFocusedActor;
mProposedActorToFocus = proposedActorToFocus;
mDirection = direction;
+ mDeviceName = deviceName;
return mProposedActorToFocus;
}
mCurrentFocusedActor = Actor();
mProposedActorToFocus = Actor();
mDirection = Control::KeyboardFocus::LEFT;
+ mDeviceName = "";
}
bool& mInterfaceVerified;
Actor mCurrentFocusedActor;
Actor mProposedActorToFocus;
Control::KeyboardFocus::Direction mDirection;
+ std::string mDeviceName;
};
// Functors to test whether PreFocusChange signal is emitted when the keyboard focus is about to change
preFocusChangeCallback.Reset();
bool customAlgorithmInterfaceVerified = false;
+ std::string deviceName = "deviceName";
CustomAlgorithm customAlgorithm(customAlgorithmInterfaceVerified);
Toolkit::DevelKeyboardFocusManager::SetCustomAlgorithm(manager, customAlgorithm);
// Move the focus towards right
- DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false);
+ DALI_TEST_CHECK(Toolkit::DevelKeyboardFocusManager::MoveFocus(manager, Control::KeyboardFocus::RIGHT, deviceName) == false);
// Because no layout control in the stage and the first actor is focused, it should invoke CustomAlgorithm
DALI_TEST_CHECK(customAlgorithm.mInterfaceVerified);
DALI_TEST_CHECK(customAlgorithm.mCurrentFocusedActor == Actor());
DALI_TEST_CHECK(customAlgorithm.mProposedActorToFocus == Actor());
DALI_TEST_CHECK(customAlgorithm.mDirection == Control::KeyboardFocus::RIGHT);
+ DALI_TEST_EQUALS(customAlgorithm.mDeviceName, deviceName, TEST_LOCATION );
customAlgorithm.Reset();
// Check that the focus is set on the first actor
focusChangedCallback.Reset();
// Move the focus towards right
- DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false);
+ DALI_TEST_CHECK(Toolkit::DevelKeyboardFocusManager::MoveFocus(manager, Control::KeyboardFocus::RIGHT, deviceName) == false);
// Because no layout control in the stage and the first actor is focused, it should invoke CustomAlgorithm
DALI_TEST_CHECK(customAlgorithm.mInterfaceVerified);
DALI_TEST_CHECK(customAlgorithm.mCurrentFocusedActor == first);
DALI_TEST_CHECK(customAlgorithm.mProposedActorToFocus == Actor());
DALI_TEST_CHECK(customAlgorithm.mDirection == Control::KeyboardFocus::RIGHT);
+ DALI_TEST_EQUALS(customAlgorithm.mDeviceName, deviceName, TEST_LOCATION );
customAlgorithm.Reset();
// Check that the focus is set on the second actor
focusChangedCallback.Reset();
// Move the focus towards up
- DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == false);
+ DALI_TEST_CHECK(Toolkit::DevelKeyboardFocusManager::MoveFocus(manager, Control::KeyboardFocus::UP, deviceName) == false);
// Because no layout control in the stage and no actor is focused, it should invoke CustomAlgorithm
DALI_TEST_CHECK(customAlgorithm.mInterfaceVerified);
DALI_TEST_CHECK(customAlgorithm.mCurrentFocusedActor == second);
DALI_TEST_CHECK(customAlgorithm.mProposedActorToFocus == Actor());
DALI_TEST_CHECK(customAlgorithm.mDirection == Control::KeyboardFocus::UP);
+ DALI_TEST_EQUALS(customAlgorithm.mDeviceName, deviceName, TEST_LOCATION );
customAlgorithm.Reset();
DALI_TEST_CHECK(!focusChangedCallback.mSignalVerified);
// button1 -- button2
button1.SetProperty(Actor::Property::POSITION, Vector2(0.0f, 0.0f));
button2.SetProperty(Actor::Property::POSITION, Vector2(100.0f, 0.0f));
+ button1.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ button2.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
// flush the queue and render once
application.SendNotification();
// Move the focus towards left, The focus move will success because the default algorithm is enabled.
// [button1] -- button2
DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true);
- // Confirm whether focus is moved to button2
+ // Confirm whether focus is moved to button1
DALI_TEST_EQUALS(button1.GetProperty<int>(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION);
DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == button2);
DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1);
focusChangedCallback.Reset();
+ // Clears focus.
+ manager.ClearFocus();
+ // There is no actor focused.
+ // button1 -- button2
+ DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor());
+
+ // Move the focus towards right, The focus is on the actor closest to the top left of the window.
+ // [button1] -- button2
+ DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true);
+
+ // Confirm whether focus is moved to button1
+ DALI_TEST_EQUALS(button1.GetProperty<int>(DevelControl::Property::STATE), (int)DevelControl::FOCUSED, TEST_LOCATION);
+ DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
+ DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == Actor());
+ DALI_TEST_CHECK(focusChangedCallback.mCurrentFocusedActor == button1);
+ focusChangedCallback.Reset();
+
+
END_TEST;
}