| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1250,8 +1250,9 @@ struct ImGuiState | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGuiID                 ActiveId;                           // Active widget
 | 
					 | 
					 | 
					 | 
					    ImGuiID                 ActiveId;                           // Active widget
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGuiID                 ActiveIdPreviousFrame; | 
					 | 
					 | 
					 | 
					    ImGuiID                 ActiveIdPreviousFrame; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bool                    ActiveIdIsAlive; | 
					 | 
					 | 
					 | 
					    bool                    ActiveIdIsAlive; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bool                    ActiveIdIsJustActivated;            // Set when 
 | 
					 | 
					 | 
					 | 
					    bool                    ActiveIdIsJustActivated;            // Set at the time of activation for one frame
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    bool                    ActiveIdIsFocusedOnly;              // Set only by active widget. Denote focus but no active interaction.
 | 
					 | 
					 | 
					 | 
					    bool                    ActiveIdIsFocusedOnly;              // Set only by active widget. Denote focus but no active interaction
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    ImGuiWindow*            ActiveIdWindow; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGuiWindow*            MovedWindow;                        // Track the child window we clicked on to move a window. Only valid if ActiveID is the "#MOVE" identifier of a window.
 | 
					 | 
					 | 
					 | 
					    ImGuiWindow*            MovedWindow;                        // Track the child window we clicked on to move a window. Only valid if ActiveID is the "#MOVE" identifier of a window.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    float                   SettingsDirtyTimer; | 
					 | 
					 | 
					 | 
					    float                   SettingsDirtyTimer; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImVector<ImGuiIniData>  Settings; | 
					 | 
					 | 
					 | 
					    ImVector<ImGuiIniData>  Settings; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1466,12 +1467,13 @@ static inline ImGuiWindow* GetParentWindow() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return g.CurrentWindowStack[g.CurrentWindowStack.size() - 2]; | 
					 | 
					 | 
					 | 
					    return g.CurrentWindowStack[g.CurrentWindowStack.size() - 2]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void SetActiveId(ImGuiID id) 
 | 
					 | 
					 | 
					 | 
					static void SetActiveId(ImGuiID id, ImGuiWindow* window = NULL) 
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImGuiState& g = *GImGui; | 
					 | 
					 | 
					 | 
					    ImGuiState& g = *GImGui; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g.ActiveId = id; 
 | 
					 | 
					 | 
					 | 
					    g.ActiveId = id; 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g.ActiveIdIsFocusedOnly = false; | 
					 | 
					 | 
					 | 
					    g.ActiveIdIsFocusedOnly = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g.ActiveIdIsJustActivated = true; | 
					 | 
					 | 
					 | 
					    g.ActiveIdIsJustActivated = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    g.ActiveIdWindow = window; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void RegisterAliveId(ImGuiID id) | 
					 | 
					 | 
					 | 
					static void RegisterAliveId(ImGuiID id) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -2379,7 +2381,7 @@ void ImGui::Render() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            { | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                IM_ASSERT(g.MovedWindow == NULL); | 
					 | 
					 | 
					 | 
					                IM_ASSERT(g.MovedWindow == NULL); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                g.MovedWindow = g.HoveredWindow; | 
					 | 
					 | 
					 | 
					                g.MovedWindow = g.HoveredWindow; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                SetActiveId(g.HoveredRootWindow->MoveID); | 
					 | 
					 | 
					 | 
					                SetActiveId(g.HoveredRootWindow->MoveID, g.HoveredRootWindow); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            else if (g.FocusedWindow != NULL) | 
					 | 
					 | 
					 | 
					            else if (g.FocusedWindow != NULL) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            { | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -4887,7 +4889,7 @@ static bool ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                else | 
					 | 
					 | 
					 | 
					                else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                { | 
					 | 
					 | 
					 | 
					                { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    SetActiveId(id); | 
					 | 
					 | 
					 | 
					                    SetActiveId(id, window); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                FocusWindow(window); | 
					 | 
					 | 
					 | 
					                FocusWindow(window); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5537,7 +5539,7 @@ static bool SliderFloatAsInputText(const char* label, float* v, ImGuiID id, int | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    char text_buf[64]; | 
					 | 
					 | 
					 | 
					    char text_buf[64]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ImFormatString(text_buf, IM_ARRAYSIZE(text_buf), "%.*f", decimal_precision, *v); | 
					 | 
					 | 
					 | 
					    ImFormatString(text_buf, IM_ARRAYSIZE(text_buf), "%.*f", decimal_precision, *v); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    SetActiveId(g.ScalarAsInputTextId); | 
					 | 
					 | 
					 | 
					    SetActiveId(g.ScalarAsInputTextId, window); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    g.HoveredId = 0; | 
					 | 
					 | 
					 | 
					    g.HoveredId = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Our replacement widget will override the focus ID (registered previously to allow for a TAB focus to happen)
 | 
					 | 
					 | 
					 | 
					    // Our replacement widget will override the focus ID (registered previously to allow for a TAB focus to happen)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5767,7 +5769,7 @@ bool ImGui::SliderFloat(const char* label, float* v, float v_min, float v_max, c | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    const bool tab_focus_requested = window->FocusItemRegister(g.ActiveId == id); | 
					 | 
					 | 
					 | 
					    const bool tab_focus_requested = window->FocusItemRegister(g.ActiveId == id); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (tab_focus_requested || (hovered && g.IO.MouseClicked[0])) | 
					 | 
					 | 
					 | 
					    if (tab_focus_requested || (hovered && g.IO.MouseClicked[0])) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SetActiveId(id); | 
					 | 
					 | 
					 | 
					        SetActiveId(id, window); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        const bool is_ctrl_down = g.IO.KeyCtrl; | 
					 | 
					 | 
					 | 
					        const bool is_ctrl_down = g.IO.KeyCtrl; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5825,7 +5827,7 @@ bool ImGui::VSliderFloat(const char* label, const ImVec2& size, float* v, float | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (hovered && g.IO.MouseClicked[0]) | 
					 | 
					 | 
					 | 
					    if (hovered && g.IO.MouseClicked[0]) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SetActiveId(id); | 
					 | 
					 | 
					 | 
					        SetActiveId(id, window); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -6071,7 +6073,7 @@ bool ImGui::DragFloat(const char* label, float *v, float v_speed, float v_min, f | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    const bool tab_focus_requested = window->FocusItemRegister(g.ActiveId == id); | 
					 | 
					 | 
					 | 
					    const bool tab_focus_requested = window->FocusItemRegister(g.ActiveId == id); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (tab_focus_requested || (hovered && (g.IO.MouseClicked[0] | g.IO.MouseDoubleClicked[0]))) | 
					 | 
					 | 
					 | 
					    if (tab_focus_requested || (hovered && (g.IO.MouseClicked[0] | g.IO.MouseDoubleClicked[0]))) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SetActiveId(id); | 
					 | 
					 | 
					 | 
					        SetActiveId(id, window); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (tab_focus_requested || g.IO.KeyCtrl || g.IO.MouseDoubleClicked[0]) | 
					 | 
					 | 
					 | 
					        if (tab_focus_requested || g.IO.KeyCtrl || g.IO.MouseDoubleClicked[0]) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -6855,16 +6857,14 @@ bool ImGui::InputText(const char* label, char* buf, size_t buf_size, ImGuiInputT | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (focus_requested_by_tab || (user_clicked && is_ctrl_down)) | 
					 | 
					 | 
					 | 
					            if (focus_requested_by_tab || (user_clicked && is_ctrl_down)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                select_all = true; | 
					 | 
					 | 
					 | 
					                select_all = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        SetActiveId(id); | 
					 | 
					 | 
					 | 
					        SetActiveId(id, window); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
					 | 
					 | 
					 | 
					        FocusWindow(window); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    else if (io.MouseClicked[0]) | 
					 | 
					 | 
					 | 
					    else if (io.MouseClicked[0]) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    { | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        // Release focus when we click outside
 | 
					 | 
					 | 
					 | 
					        // Release focus when we click outside
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (g.ActiveId == id) | 
					 | 
					 | 
					 | 
					        if (g.ActiveId == id) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            SetActiveId(0); | 
					 | 
					 | 
					 | 
					            SetActiveId(0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    // Although we are active we don't prevent mouse from hovering other elements unless we are interacting right now with the widget.
 | 
					 | 
					 | 
					 | 
					    // Although we are active we don't prevent mouse from hovering other elements unless we are interacting right now with the widget.
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |