@ -2182,6 +2182,7 @@ void ImGui::SetActiveID(ImGuiID id, ImGuiWindow* window) 
			
		
	
		
			
				
					    if  ( g . ActiveIdIsJustActivated )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        g . ActiveIdTimer  =  0.0f ;   
			
		
	
		
			
				
					        g . ActiveIdValueChanged  =  false ;   
			
		
	
		
			
				
					        if  ( id  ! =  0 )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            g . LastActiveId  =  id ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -2249,6 +2250,15 @@ void ImGui::KeepAliveID(ImGuiID id) 
			
		
	
		
			
				
					        g . ActiveIdPreviousFrameIsAlive  =  true ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void  ImGui : : MarkItemValueChanged ( ImGuiID  id )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    // This marking is solely to be able to provide info for IsItemDeactivatedAfterChange().
   
			
		
	
		
			
				
					    // ActiveId might have been released by the time we call this (as in the typical press/release button behavior) but still need need to fill the data.
   
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    IM_ASSERT ( g . ActiveId  = =  id  | |  g . ActiveId  = =  0 ) ;   
			
		
	
		
			
				
					    g . ActiveIdValueChanged  =  true ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  inline  bool  IsWindowContentHoverable ( ImGuiWindow *  window ,  ImGuiHoveredFlags  flags )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    // An active popup disable hovering on other windows (apart from its own children)
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -3716,6 +3726,7 @@ void ImGui::NewFrame() 
			
		
	
		
			
				
					    g . LastActiveIdTimer  + =  g . IO . DeltaTime ;   
			
		
	
		
			
				
					    g . ActiveIdPreviousFrame  =  g . ActiveId ;   
			
		
	
		
			
				
					    g . ActiveIdPreviousFrameWindow  =  g . ActiveIdWindow ;   
			
		
	
		
			
				
					    g . ActiveIdPreviousFrameValueChanged  =  g . ActiveIdValueChanged ;   
			
		
	
		
			
				
					    g . ActiveIdIsAlive  =  g . ActiveIdPreviousFrameIsAlive  =  false ;   
			
		
	
		
			
				
					    g . ActiveIdIsJustActivated  =  false ;   
			
		
	
		
			
				
					    if  ( g . ScalarAsInputTextId  & &  g . ActiveId  ! =  g . ScalarAsInputTextId )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -4982,6 +4993,12 @@ bool ImGui::IsItemDeactivated() 
			
		
	
		
			
				
					    return  ( g . ActiveIdPreviousFrame  = =  window - > DC . LastItemId  & &  g . ActiveIdPreviousFrame  ! =  0  & &  g . ActiveId  ! =  window - > DC . LastItemId ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					bool  ImGui : : IsItemDeactivatedAfterChange ( )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    return  IsItemDeactivated ( )  & &  ( g . ActiveIdPreviousFrameValueChanged  | |  ( g . ActiveId  = =  0  & &  g . ActiveIdValueChanged ) ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					bool  ImGui : : IsItemFocused ( )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -8022,6 +8039,8 @@ bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags 
			
		
	
		
			
				
					        flags  | =  ImGuiButtonFlags_Repeat ;   
			
		
	
		
			
				
					    bool  hovered ,  held ;   
			
		
	
		
			
				
					    bool  pressed  =  ButtonBehavior ( bb ,  id ,  & hovered ,  & held ,  flags ) ;   
			
		
	
		
			
				
					    if  ( pressed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Render
   
			
		
	
		
			
				
					    const  ImU32  col  =  GetColorU32 ( ( hovered  & &  held )  ?  ImGuiCol_ButtonActive  :  hovered  ?  ImGuiCol_ButtonHovered  :  ImGuiCol_Button ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -9327,6 +9346,8 @@ bool ImGui::SliderScalar(const char* label, ImGuiDataType data_type, void* v, co 
			
		
	
		
			
				
					    // Actual slider behavior + render grab
   
			
		
	
		
			
				
					    ItemSize ( total_bb ,  style . FramePadding . y ) ;   
			
		
	
		
			
				
					    const  bool  value_changed  =  SliderBehavior ( frame_bb ,  id ,  data_type ,  v ,  v_min ,  v_max ,  format ,  power ) ;   
			
		
	
		
			
				
					    if  ( value_changed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Display value using user-provided display format so user can add prefix/suffix/decorations to the value.
   
			
		
	
		
			
				
					    char  value_buf [ 64 ] ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -9380,7 +9401,9 @@ bool ImGui::VSliderScalar(const char* label, const ImVec2& size, ImGuiDataType d 
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Actual slider behavior + render grab
   
			
		
	
		
			
				
					    bool  value_changed  =  SliderBehavior ( frame_bb ,  id ,  data_type ,  v ,  v_min ,  v_max ,  format ,  power ,  ImGuiSliderFlags_Vertical ) ;   
			
		
	
		
			
				
					    const  bool  value_changed  =  SliderBehavior ( frame_bb ,  id ,  data_type ,  v ,  v_min ,  v_max ,  format ,  power ,  ImGuiSliderFlags_Vertical ) ;   
			
		
	
		
			
				
					    if  ( value_changed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Display value using user-provided display format so user can add prefix/suffix/decorations to the value.
   
			
		
	
		
			
				
					    // For the vertical slider we allow centered text to overlap the frame padding
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -9657,6 +9680,8 @@ bool ImGui::DragScalar(const char* label, ImGuiDataType data_type, void* v, floa 
			
		
	
		
			
				
					    // Actual drag behavior
   
			
		
	
		
			
				
					    ItemSize ( total_bb ,  style . FramePadding . y ) ;   
			
		
	
		
			
				
					    const  bool  value_changed  =  DragBehavior ( id ,  data_type ,  v ,  v_speed ,  v_min ,  v_max ,  format ,  power ) ;   
			
		
	
		
			
				
					    if  ( value_changed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Draw frame
   
			
		
	
		
			
				
					    const  ImU32  frame_col  =  GetColorU32 ( g . ActiveId  = =  id  ?  ImGuiCol_FrameBgActive  :  g . HoveredId  = =  id  ?  ImGuiCol_FrameBgHovered  :  ImGuiCol_FrameBg ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -10005,7 +10030,10 @@ bool ImGui::Checkbox(const char* label, bool* v) 
			
		
	
		
			
				
					    bool  hovered ,  held ;   
			
		
	
		
			
				
					    bool  pressed  =  ButtonBehavior ( total_bb ,  id ,  & hovered ,  & held ) ;   
			
		
	
		
			
				
					    if  ( pressed )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        * v  =  ! ( * v ) ;   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    RenderNavHighlight ( total_bb ,  id ) ;   
			
		
	
		
			
				
					    RenderFrame ( check_bb . Min ,  check_bb . Max ,  GetColorU32 ( ( held  & &  hovered )  ?  ImGuiCol_FrameBgActive  :  hovered  ?  ImGuiCol_FrameBgHovered  :  ImGuiCol_FrameBg ) ,  true ,  style . FrameRounding ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -10073,6 +10101,8 @@ bool ImGui::RadioButton(const char* label, bool active) 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    bool  hovered ,  held ;   
			
		
	
		
			
				
					    bool  pressed  =  ButtonBehavior ( total_bb ,  id ,  & hovered ,  & held ) ;   
			
		
	
		
			
				
					    if  ( pressed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    RenderNavHighlight ( total_bb ,  id ) ;   
			
		
	
		
			
				
					    window - > DrawList - > AddCircleFilled ( center ,  radius ,  GetColorU32 ( ( held  & &  hovered )  ?  ImGuiCol_FrameBgActive  :  hovered  ?  ImGuiCol_FrameBgHovered  :  ImGuiCol_FrameBg ) ,  16 ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -10969,6 +10999,9 @@ bool ImGui::InputTextEx(const char* label, char* buf, int buf_size, const ImVec2 
			
		
	
		
			
				
					    if  ( label_size . x  >  0 )   
			
		
	
		
			
				
					        RenderText ( ImVec2 ( frame_bb . Max . x  +  style . ItemInnerSpacing . x ,  frame_bb . Min . y  +  style . FramePadding . y ) ,  label ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    if  ( value_changed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    if  ( ( flags  &  ImGuiInputTextFlags_EnterReturnsTrue )  ! =  0 )   
			
		
	
		
			
				
					        return  enter_pressed ;   
			
		
	
		
			
				
					    else   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -11433,6 +11466,8 @@ bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags fl 
			
		
	
		
			
				
					            g . NavDisableHighlight  =  true ;   
			
		
	
		
			
				
					            SetNavID ( id ,  window - > DC . NavLayerCurrent ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					    if  ( pressed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Render
   
			
		
	
		
			
				
					    if  ( hovered  | |  selected )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -12025,6 +12060,9 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl 
			
		
	
		
			
				
					    if  ( ! ( flags  &  ImGuiColorEditFlags_NoTooltip )  & &  hovered )   
			
		
	
		
			
				
					        ColorTooltip ( desc_id ,  & col . x ,  flags  &  ( ImGuiColorEditFlags_NoAlpha  |  ImGuiColorEditFlags_AlphaPreview  |  ImGuiColorEditFlags_AlphaPreviewHalf ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    if  ( pressed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    return  pressed ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -12319,6 +12357,9 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag 
			
		
	
		
			
				
					    if  ( picker_active_window  & &  g . ActiveId  ! =  0  & &  g . ActiveIdWindow  = =  picker_active_window )   
			
		
	
		
			
				
					        window - > DC . LastItemId  =  g . ActiveId ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    if  ( value_changed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( window - > DC . LastItemId ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    return  value_changed ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -12642,9 +12683,15 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl 
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    EndGroup ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    if  ( value_changed  & &  memcmp ( backup_initial_col ,  col ,  components  *  sizeof ( float ) )  = =  0 )   
			
		
	
		
			
				
					        value_changed  =  false ;   
			
		
	
		
			
				
					    if  ( value_changed )   
			
		
	
		
			
				
					        MarkItemValueChanged ( window - > DC . LastItemId ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    PopID ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    return  value_changed  & &  memcmp ( backup_initial_col ,  col ,  components  *  sizeof ( float ) ) ;   
			
		
	
		
			
				
					    return  value_changed ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					// Horizontal separating line.
  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -12752,6 +12799,8 @@ bool ImGui::SplitterBehavior(ImGuiID id, const ImRect& bb, ImGuiAxis axis, float 
			
		
	
		
			
				
					        * size1  + =  mouse_delta ;   
			
		
	
		
			
				
					        * size2  - =  mouse_delta ;   
			
		
	
		
			
				
					        bb_render . Translate ( ( axis  = =  ImGuiAxis_X )  ?  ImVec2 ( mouse_delta ,  0.0f )  :  ImVec2 ( 0.0f ,  mouse_delta ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        MarkItemValueChanged ( id ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Render