mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	This commit is contained in:
		
							
								
								
									
										22
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								imgui.cpp
									
									
									
									
									
								
							| @@ -1214,13 +1214,8 @@ void ImGuiIO::ClearInputCharacters() | ||||
|     InputQueueCharacters.resize(0); | ||||
| } | ||||
|  | ||||
| void ImGuiIO::AddFocusEvent(bool focused) | ||||
| void ImGuiIO::ClearInputKeys() | ||||
| { | ||||
|     if (focused) | ||||
|         return; | ||||
|  | ||||
|     // Clear buttons state when focus is lost | ||||
|     // (this is useful so e.g. releasing Alt after focus loss on Alt-Tab doesn't trigger the Alt menu toggle) | ||||
|     memset(KeysDown, 0, sizeof(KeysDown)); | ||||
|     for (int n = 0; n < IM_ARRAYSIZE(KeysDownDuration); n++) | ||||
|         KeysDownDuration[n] = KeysDownDurationPrev[n] = -1.0f; | ||||
| @@ -1230,6 +1225,13 @@ void ImGuiIO::AddFocusEvent(bool focused) | ||||
|         NavInputsDownDuration[n] = NavInputsDownDurationPrev[n] = -1.0f; | ||||
| } | ||||
|  | ||||
| void ImGuiIO::AddFocusEvent(bool focused) | ||||
| { | ||||
|     // We intentionally overwrite this and process in NewFrame(), in order to give a chance | ||||
|     // to multi-viewports backends to queue AddFocusEvent(false),AddFocusEvent(true) in same frame. | ||||
|     AppFocusLost = !focused; | ||||
| } | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] MISC HELPERS/UTILITIES (Geometry functions) | ||||
| //----------------------------------------------------------------------------- | ||||
| @@ -4187,6 +4189,14 @@ void ImGui::NewFrame() | ||||
|     g.DragDropWithinTarget = false; | ||||
|     g.DragDropHoldJustPressedId = 0; | ||||
|  | ||||
|     // Clear buttons state when focus is lost | ||||
|     // (this is useful so e.g. releasing Alt after focus loss on Alt-Tab doesn't trigger the Alt menu toggle) | ||||
|     if (g.IO.AppFocusLost) | ||||
|     { | ||||
|         g.IO.ClearInputKeys(); | ||||
|         g.IO.AppFocusLost = false; | ||||
|     } | ||||
|  | ||||
|     // Update keyboard input state | ||||
|     // Synchronize io.KeyMods with individual modifiers io.KeyXXX bools | ||||
|     g.IO.KeyMods = GetMergedKeyModFlags(); | ||||
|   | ||||
							
								
								
									
										4
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -1950,8 +1950,9 @@ struct ImGuiIO | ||||
|     IMGUI_API void  AddInputCharacter(unsigned int c);          // Queue new character input | ||||
|     IMGUI_API void  AddInputCharacterUTF16(ImWchar16 c);        // Queue new character input from an UTF-16 character, it can be a surrogate | ||||
|     IMGUI_API void  AddInputCharactersUTF8(const char* str);    // Queue new characters input from an UTF-8 string | ||||
|     IMGUI_API void  ClearInputCharacters();                     // Clear the text input buffer manually | ||||
|     IMGUI_API void  AddFocusEvent(bool focused);                // Notifies Dear ImGui when hosting platform windows lose or gain input focus | ||||
|     IMGUI_API void  ClearInputCharacters();                     // [Internal] Clear the text input buffer manually | ||||
|     IMGUI_API void  ClearInputKeys();                           // [Internal] Release all keys | ||||
|  | ||||
|     //------------------------------------------------------------------ | ||||
|     // Output - Updated by NewFrame() or EndFrame()/Render() | ||||
| @@ -1997,6 +1998,7 @@ struct ImGuiIO | ||||
|     float       NavInputsDownDuration[ImGuiNavInput_COUNT]; | ||||
|     float       NavInputsDownDurationPrev[ImGuiNavInput_COUNT]; | ||||
|     float       PenPressure;                    // Touch/Pen pressure (0.0f to 1.0f, should be >0.0f only when MouseDown[0] == true). Helper storage currently unused by Dear ImGui. | ||||
|     bool        AppFocusLost; | ||||
|     ImWchar16   InputQueueSurrogate;            // For AddInputCharacterUTF16 | ||||
|     ImVector<ImWchar> InputQueueCharacters;     // Queue of _characters_ input (obtained by platform backend). Fill using AddInputCharacter() helper. | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user