                             ;; changed about this
                             :requests-focus old-focus-state
 
-                            ;; My child request focus and I thow focus - then I let this child get focus
+                            ;; My child request focus and I throw focus - then I let this child get focus
                             :throws-focus (focus-child child-id))
           :throws-focus (case child-throw-mode
                           ;; My child throws focus in :prev direction. Give focus to previous child.
                           ;; But if I'm not a closed root then there may be no previous child,
                           ;; get-in-cycle returns nil in this case. Rethrow it out in this case
                           :prev (if-let [prev-child (get-in-cycle component :prev this-focused-child)]
-                                  (focus-child prev-child)
+                                  (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))
                                   {:mode :throws-focus
                                    :throw-mode :prev
                                    :focused-child this-focused-child})

                :last (nth child-ids (dec child-count))))))
  ([component dir] (get-in-cycle component dir nil)))


(fg/defevolverfn :focus-state
  (let [reason (fg/get-reason)
        this-focused-child (:focused-child old-focus-state)

                                                   (if (not (:focusable component))
                                                     (get-in-cycle component :first)))]
                                 (focus-child child-id)
                                 having-focus-state)
                               old-focus-state)

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