// // UIFocusEnvironment.cpp // SDLTest // // Created by Даниил Виноградов on 02.04.2023. // #include namespace NXKit { bool UIFocusEnvironment::shouldUpdateFocusIn(UIFocusUpdateContext context) { return true; } std::vector> UIFocusEnvironment::preferredFocusEnvironments() { if (!_lastFocusEnvironment.expired()) return { _lastFocusEnvironment.lock() }; return {}; } void UIFocusEnvironment::didUpdateFocusIn(UIFocusUpdateContext context, UIFocusAnimationCoordinator* coordinator) { if (!context.nextFocusedItem().expired()) { if (parentFocusEnvironment()) { std::shared_ptr focus = context.nextFocusedItem().lock(); while (focus && focus->parentFocusEnvironment()) { if (focus->parentFocusEnvironment().get() == this) { _lastFocusEnvironment = focus; break; } focus = focus->parentFocusEnvironment(); } } } if (parentFocusEnvironment()) parentFocusEnvironment()->didUpdateFocusIn(context, coordinator); } }