Browse Source

Inputs: fixed moving a window or drag and dropping from preventing input-owner-unaware code from accessing keys. (#5888, #4921, #456)

Amend 4448d97. This is more consistent with input owner design.
ocornut 2 years ago
parent
commit
7bee9a8f96
2 changed files with 5 additions and 3 deletions
  1. 3 1
      docs/CHANGELOG.txt
  2. 2 2
      imgui.cpp

+ 3 - 1
docs/CHANGELOG.txt

@@ -35,7 +35,9 @@ HOW TO UPDATE?
  VERSION 1.89.1 (In Progress)
  VERSION 1.89.1 (In Progress)
 -----------------------------------------------------------------------
 -----------------------------------------------------------------------
 
 
- - Inputs: fix moving a window or drag and dropping from capture mods. (#5888, #4921, #456)
+- Inputs: fixed moving a window or drag and dropping from preventing input-owner-unaware code
+  from accessing keys. (#5888, #4921, #456)
+- Inputs: fixed moving a window or drag and dropping from capturing mods. (#5888, #4921, #456)
 
 
 
 
 -----------------------------------------------------------------------
 -----------------------------------------------------------------------

+ 2 - 2
imgui.cpp

@@ -8537,7 +8537,7 @@ ImGuiID ImGui::GetKeyOwner(ImGuiKey key)
     ImGuiKeyOwnerData* owner_data = GetKeyOwnerData(key);
     ImGuiKeyOwnerData* owner_data = GetKeyOwnerData(key);
     ImGuiID owner_id = owner_data->OwnerCurr;
     ImGuiID owner_id = owner_data->OwnerCurr;
 
 
-    if (g.ActiveIdUsingAllKeyboardKeys && owner_id != g.ActiveId)
+    if (g.ActiveIdUsingAllKeyboardKeys && owner_id != g.ActiveId && owner_id != ImGuiKeyOwner_Any)
         if (key >= ImGuiKey_Keyboard_BEGIN && key < ImGuiKey_Keyboard_END)
         if (key >= ImGuiKey_Keyboard_BEGIN && key < ImGuiKey_Keyboard_END)
             return ImGuiKeyOwner_None;
             return ImGuiKeyOwner_None;
 
 
@@ -8554,7 +8554,7 @@ bool ImGui::TestKeyOwner(ImGuiKey key, ImGuiID owner_id)
         return true;
         return true;
 
 
     ImGuiContext& g = *GImGui;
     ImGuiContext& g = *GImGui;
-    if (g.ActiveIdUsingAllKeyboardKeys && owner_id != g.ActiveId)
+    if (g.ActiveIdUsingAllKeyboardKeys && owner_id != g.ActiveId && owner_id != ImGuiKeyOwner_Any)
         if (key >= ImGuiKey_Keyboard_BEGIN && key < ImGuiKey_Keyboard_END)
         if (key >= ImGuiKey_Keyboard_BEGIN && key < ImGuiKey_Keyboard_END)
             return false;
             return false;