diff --git a/imgui.cpp b/imgui.cpp
index 2054593..b469da1 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -8370,17 +8370,9 @@
     if (owner_id == ImGuiKeyOwner_Any)
         return (owner_data->LockThisFrame == false);
 
-    // FIXME: For consistency with routing may be good to disable that, OR we could differentiate preemptive routing from setting owner on click.
-    // For now it is better to disable so we can actually get report of case where this may matter.
-    // -> Better to move in the SetKeyOwner() call, aka have a flag to set ->OwnerCurr in SetKeyOwner() ?
-    // May simply be inconsistent and unneeded to offer that feature:
-    //  - for typical keyboard/gamepad routing with multiple claims and ServeLast, we don't want to affect owner testing during the frame.
-    //  - for typical mouse routing overlap + hovered window generally prevents making it useful to alter owner testing during the frame.
-    //  - but effectively Locked flag can alter same-frame behavior.
-    //// We want OwnerNext to be handled immediately so SetKeyOwner(key, id1), TestKeyOwner(key, id2) == false
-    //if (owner_data->OwnerNext != ImGuiKeyOwner_None && owner_data->OwnerNext != owner)
-    //    return false;
-
+    // Note: SetKeyOwner() sets OwnerCurr. It is not strictly required for most mouse routing overlap (because of ActiveId/HoveredId
+    // are acting as filter before this has a chance to filter), but sane as soon as user tries to look into things.
+    // Setting OwnerCurr in SetKeyOwner() is more consistent than testing OwnerNext here: would be inconsistent with getter and other functions.
     if (owner_data->OwnerCurr != owner_id)
     {
         if (owner_data->LockThisFrame)
@@ -8392,6 +8384,7 @@
     return true;
 }
 
+// _LockXXX flags are useful to lock keys away from code which is not input-owner aware.
 // When using _LockXXX flags, you can use ImGuiKeyOwner_Any to lock keys from everyone.
 // - SetKeyOwner(..., None)              : clears owner
 // - SetKeyOwner(..., Any, !Lock)        : illegal (assert)
@@ -8401,14 +8394,12 @@
     IM_ASSERT(IsNamedKeyOrModKey(key) && (owner_id != ImGuiKeyOwner_Any || (flags & (ImGuiInputFlags_LockThisFrame | ImGuiInputFlags_LockUntilRelease)))); // Can only use _Any with _LockXXX flags (to eat a key away without an ID to retrieve it)
 
     ImGuiKeyOwnerData* owner_data = GetKeyOwnerData(key);
-    owner_data->OwnerNext = owner_id;
+    owner_data->OwnerCurr = owner_data->OwnerNext = owner_id;
 
     // We cannot lock by default as it would likely break lots of legacy code.
     // In the case of using LockUntilRelease while key is not down we still lock during the frame (no key_data->Down test)
     owner_data->LockUntilRelease = (flags & ImGuiInputFlags_LockUntilRelease) != 0;
     owner_data->LockThisFrame = (flags & ImGuiInputFlags_LockThisFrame) != 0 || (owner_data->LockUntilRelease);
-    if (owner_data->LockThisFrame)
-        owner_data->OwnerCurr = owner_id;
 }
 
 // This is more or less equivalent to:
