         {:mode :requests-focus
          :focused-child this-focused-child}
         (and (:closed-focus-root component) (#{:none :throws-focus :requests-focus} this-mode))
-        having-focus-state
+        (having-focus-state component "closed root by mouse")
+        (focus-uninterested? component)
+        {:mode :got-trigger
+         :focused-child nil}
         :else old-focus-state)
 
       (fgc/parent-reason? reason)

        ;; Otherwise my parent has focus permanently and my state is clean
        :has-focus (if (= parent-focused-child (:id component)) ; This condition means that parent has focus temporarily
                     ;; Parent keeps latest throwing direction in :throw-mode in this case. Track it for further use
                     (assoc having-focus-state :throw-mode (:throw-mode parent-focus-state))
                     clean-state)
        ;:has-focus clean-state
        :none clean-state
        :parent-of-focused (if (= parent-focused-child (:id component))
                             ;; If my parent is :parent-of-focused and I am :parent-of-focused,

(defn focus-child-by-direction [child-id dir]
  (assoc (focus-child child-id) :throw-mode dir))

(defn focus-uninterested? [component]
  (and (not (:closed-focus-root component)) (not (:focusable component))))

(fg/defevolverfn :focus-state
  (let [reason (fg/get-reason)
        this-focused-child (:focused-child old-focus-state)
        this-mode (:mode old-focus-state)
        parent-id (get-property [] :id)
        parent-focus-state (get-property [] :focus-state)
        parent-focused-child (:focused-child parent-focus-state)
        parent-mode (:mode parent-focus-state)]
