                                   (if (= prev-child this-focused-child)
                                     ;; My child throws focus, but there is no other component to take it.
                                     ;; So I take it temporarily and child will take back within the next step. (*2)
-                                    (temporarily-taken-from-state this-focused-child)
-                                    (focus-child prev-child))
+                                    ;; Latest movement direction is tracked to be used within the next step
+                                    (temporarily-taken-from-state this-focused-child :prev)
+                                    (focus-child-by-direction prev-child :prev))
                                   {:mode :throws-focus
                                    :throw-mode :prev
                                    :focused-child this-focused-child})

      (let [child-id (nth reason 1)
            child-focus-state (get-property [:this child-id] :focus-state)
            child-mode (:mode child-focus-state)
            child-throw-mode (:throw-mode child-focus-state)
            _ (println "Child even into " (:id component) " child " child-id " mode " child-mode " thm " child-throw-mode)]
        (case child-mode
          ;; Nothing to change in this case
          :none old-focus-state

          ;; If my child is the parent of focused component (or parent of parent ...)
          ;; then I'm :parent-of-focused as well
          :parent-of-focused (focus-child child-id)

          ;; My child has focus itself - same thing
          :has-focus (focus-child child-id)

          :requests-focus (case this-mode
                            ;; I'm the parent of focused component (no matter which exactly) and my child requests
                            ;; focus - then I note that this child becomes the new focus owner. My :mode stays the same
                            :parent-of-focused (focus-child child-id)

                            ;; If I have focus and my child requests it - I give focus to it
                            :has-focus (focus-child child-id)

                                                                        (for [[_ c] (:children component)] c))))]
                                                   requesting-child-id
                                                   (if (not (:focusable component))
                                                     (get-in-cycle
                                                       component
                                                       ;; In case latest focus movent direction is tracked
                                                       ;; in :throw-mode - use it to determine firt or last
                                                       (if (= :prev (:throw-mode parent-focus-state))
                                                         :last
                                                         :first))))]
                                 (focus-child-by-direction child-id (:throw-mode parent-focus-state))
                                 having-focus-state)
                               ;; No change in state but track focus movent direction
                               (assoc old-focus-state :throw-mode (:throw-mode parent-focus-state)))

                             ;; Another component next to me has focus, therefore my state is clean
                             clean-state)
