@ -2393,18 +2393,17 @@ bool ImGui::ItemAdd(const ImRect& bb, ImGuiID id, const ImRect* nav_bb_arg) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemId  =  id ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemRect  =  bb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemStatusFlags  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Clipping test
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  bool  is_clipped  =  IsClippedEx ( bb ,  id ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( is_clipped )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . LastItemRectHoveredRect  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    //if (g.IO.KeyAlt) window->DrawList->AddRect(bb.Min, bb.Max, IM_COL32(255,255,0,120)); // [DEBUG]
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We need to calculate this now to take account of the current clipping rectangle (as items like Selectable may change them)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemRectHoveredRect  =  IsMouseHoveringRect ( bb . Min ,  bb . Max ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( IsMouseHoveringRect ( bb . Min ,  bb . Max ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . LastItemStatusFlags  | =  ImGuiItemStatusFlags_HoveredRect ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -2419,7 +2418,7 @@ bool ImGui::IsItemHovered(ImGuiHoveredFlags flags) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  IsItemFocused ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Test for bounding box overlap, as updated as ItemAdd()
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! window - > DC . LastItemRectHoveredRect  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! ( window - > DC . LastItemStatusFlags  &  ImGuiItemStatusFlags_HoveredRect )  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    IM_ASSERT ( ( flags  &  ( ImGuiHoveredFlags_RootWindow  |  ImGuiHoveredFlags_ChildWindows ) )  = =  0 ) ;    // Flags not supported by this function
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -6051,8 +6050,8 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // After Begin() we fill the last item / hovered data using the title bar data. Make that a standard behavior (to allow usage of context menus on title bar only, etc.).
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . LastItemId  =  window - > MoveId ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . LastItemStatusFlags  =  IsMouseHoveringRect ( title_bar_rect . Min ,  title_bar_rect . Max ,  false )  ?  ImGuiItemStatusFlags_HoveredRect  :  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . LastItemRect  =  title_bar_rect ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . LastItemRectHoveredRect  =  IsMouseHoveringRect ( title_bar_rect . Min ,  title_bar_rect . Max ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Inner clipping rectangle
   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7898,12 +7897,12 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // We vertically grow up to current line height up the typical widget height.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  float  text_base_offset_y  =  ImMax ( padding . y ,  window - > DC . CurrentLineTextBaseOffset ) ;  // Latch before ItemSize changes it
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  float  frame_height  =  ImMax ( ImMin ( window - > DC . CurrentLineHeight ,  g . FontSize  +  style . FramePadding . y * 2 ) ,  label_size . y  +  padding . y * 2 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  bb  =  ImRect ( window - > DC . CursorPos ,  ImVec2 ( window - > Pos . x  +  GetContentRegionMax ( ) . x ,  window - > DC . CursorPos . y  +  frame_height ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  frame_ bb  =  ImRect ( window - > DC . CursorPos ,  ImVec2 ( window - > Pos . x  +  GetContentRegionMax ( ) . x ,  window - > DC . CursorPos . y  +  frame_height ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( display_frame )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Framed header expand a little outside the default padding
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        bb . Min . x  - =  ( float ) ( int ) ( window - > WindowPadding . x * 0.5f )  -  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        bb . Max . x  + =  ( float ) ( int ) ( window - > WindowPadding . x * 0.5f )  -  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        frame_ bb. Min . x  - =  ( float ) ( int ) ( window - > WindowPadding . x * 0.5f )  -  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        frame_ bb. Max . x  + =  ( float ) ( int ) ( window - > WindowPadding . x * 0.5f )  -  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  float  text_offset_x  =  ( g . FontSize  +  ( display_frame  ?  padding . x * 3  :  padding . x * 2 ) ) ;    // Collapser arrow width + Spacing
   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -7912,7 +7911,7 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // For regular tree nodes, we arbitrary allow to click past 2 worth of ItemSpacing
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // (Ideally we'd want to add a flag for the user to specify if we want the hit test to be done up to the right side of the content or not)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImRect  interact_bb  =  display_frame  ?  bb  :  ImRect ( bb . Min . x ,  bb . Min . y ,  bb . Min . x  +  text_width  +  style . ItemSpacing . x * 2 ,  bb . Max . y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImRect  interact_bb  =  display_frame  ?  frame_ bb  :  ImRect ( frame_ bb. Min . x ,  frame_ bb. Min . y ,  frame_ bb. Min . x  +  text_width  +  style . ItemSpacing . x * 2 ,  frame_ bb. Max . y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  is_open  =  TreeNodeBehaviorIsOpen ( id ,  flags ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Store a flag for the current depth to tell if we will allow closing this node when navigating one of its child. 
   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -7921,7 +7920,11 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( is_open  & &  ! g . NavIdIsAlive  & &  ( flags  &  ImGuiTreeNodeFlags_NavCloseFromChild )  & &  ! ( flags  &  ImGuiTreeNodeFlags_NoTreePushOnOpen ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . TreeDepthMayCloseOnPop  | =  ( 1  < <  window - > DC . TreeDepth ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! ItemAdd ( interact_bb ,  id ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  item_add  =  ItemAdd ( interact_bb ,  id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemStatusFlags  | =  ImGuiItemStatusFlags_HasDisplayRect ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemDisplayRect  =  frame_bb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! item_add )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( is_open  & &  ! ( flags  &  ImGuiTreeNodeFlags_NoTreePushOnOpen ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            TreePushRawID ( id ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -7976,25 +7979,25 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Render
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImU32  col  =  GetColorU32 ( ( held  & &  hovered )  ?  ImGuiCol_HeaderActive  :  hovered  ?  ImGuiCol_HeaderHovered  :  ImGuiCol_Header ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImVec2  text_pos  =  bb . Min  +  ImVec2 ( text_offset_x ,  text_base_offset_y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImVec2  text_pos  =  frame_ bb. Min  +  ImVec2 ( text_offset_x ,  text_base_offset_y ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( display_frame )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Framed type
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderFrame ( bb . Min ,  bb . Max ,  col ,  true ,  style . FrameRounding ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderNavHighlight ( bb ,  id ,  ImGuiNavHighlightFlags_TypeThin ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderTriangle ( bb . Min  +  ImVec2 ( padding . x ,  text_base_offset_y ) ,  is_open  ?  ImGuiDir_Down  :  ImGuiDir_Right ,  1.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderFrame ( frame_ bb. Min ,  frame_ bb. Max ,  col ,  true ,  style . FrameRounding ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderNavHighlight ( frame_ bb,  id ,  ImGuiNavHighlightFlags_TypeThin ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderTriangle ( frame_ bb. Min  +  ImVec2 ( padding . x ,  text_base_offset_y ) ,  is_open  ?  ImGuiDir_Down  :  ImGuiDir_Right ,  1.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . LogEnabled )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // NB: '##' is normally used to hide text (as a library-wide feature), so we need to specify the text range to make sure the ## aren't stripped out here.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            const  char  log_prefix [ ]  =  " \n ## " ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            const  char  log_suffix [ ]  =  " ## " ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            LogRenderedText ( & text_pos ,  log_prefix ,  log_prefix + 3 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderTextClipped ( text_pos ,  bb . Max ,  label ,  label_end ,  & label_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderTextClipped ( text_pos ,  frame_ bb. Max ,  label ,  label_end ,  & label_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            LogRenderedText ( & text_pos ,  log_suffix + 1 ,  log_suffix + 3 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderTextClipped ( text_pos ,  bb . Max ,  label ,  label_end ,  & label_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderTextClipped ( text_pos ,  frame_ bb. Max ,  label ,  label_end ,  & label_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -8002,13 +8005,14 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Unframed typed for tree nodes
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( hovered  | |  ( flags  &  ImGuiTreeNodeFlags_Selected ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderFrame ( bb . Min ,  bb . Max ,  col ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderNavHighlight ( bb ,  id ,  ImGuiNavHighlightFlags_TypeThin ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderFrame ( frame_ bb. Min ,  frame_ bb. Max ,  col ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderNavHighlight ( frame_ bb,  id ,  ImGuiNavHighlightFlags_TypeThin ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( flags  &  ImGuiTreeNodeFlags_Bullet )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderBullet ( bb . Min  +  ImVec2 ( text_offset_x  *  0.5f ,  g . FontSize * 0.50f  +  text_base_offset_y ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderBullet ( frame_ bb. Min  +  ImVec2 ( text_offset_x  *  0.5f ,  g . FontSize * 0.50f  +  text_base_offset_y ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else  if  ( ! ( flags  &  ImGuiTreeNodeFlags_Leaf ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderTriangle ( bb . Min  +  ImVec2 ( padding . x ,  g . FontSize * 0.15f  +  text_base_offset_y ) ,  is_open  ?  ImGuiDir_Down  :  ImGuiDir_Right ,  0.70f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            RenderTriangle ( frame_ bb. Min  +  ImVec2 ( padding . x ,  g . FontSize * 0.15f  +  text_base_offset_y ) ,  is_open  ?  ImGuiDir_Down  :  ImGuiDir_Right ,  0.70f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( g . LogEnabled )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            LogRenderedText ( & text_pos ,  " > " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        RenderText ( text_pos ,  label ,  label_end ,  false ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -10792,7 +10796,7 @@ bool ImGui::ListBoxHeader(const char* label, const ImVec2& size_arg) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImVec2  frame_size  =  ImVec2 ( size . x ,  ImMax ( size . y ,  label_size . y ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  frame_bb ( window - > DC . CursorPos ,  window - > DC . CursorPos  +  frame_size ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImRect  bb ( frame_bb . Min ,  frame_bb . Max  +  ImVec2 ( label_size . x  >  0.0f  ?  style . ItemInnerSpacing . x  +  label_size . x  :  0.0f ,  0.0f ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemRect  =  bb ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . LastItemRect  =  bb ;  // Forward storage for ListBoxFooter.. dodgy.
    
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    BeginGroup ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( label_size . x  >  0 )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -11600,7 +11604,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    EndGroup ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Drag and Drop Target
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( window - > DC . LastItemRectHoveredRect   & &  BeginDragDropTarget ( ) )  // NB: The LastItemRectHoveredRect test is merely an optional micro-optimization 
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ( window - > DC . LastItemStatusFlags  &  ImGuiItemStatusFlags_HoveredRect )   & &  BeginDragDropTarget ( ) )  // NB: The flag test is merely an optional micro-optimization, BeginDragDropTarget() does the same test. 
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( const  ImGuiPayload *  payload  =  AcceptDragDropPayload ( IMGUI_PAYLOAD_TYPE_COLOR_3F ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -12021,9 +12025,9 @@ bool ImGui::SplitterBehavior(ImGuiID id, const ImRect& bb, ImGuiAxis axis, float 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImGuiItemFlags  item_flags_backup  =  window - > DC . ItemFlags ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . ItemFlags  | =  ImGuiItemFlags_NoNav  |  ImGuiItemFlags_NoNavDefaultFocus ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  add  =  ItemAdd ( bb ,  id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  item_ add  =  ItemAdd ( bb ,  id ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > DC . ItemFlags  =  item_flags_backup ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! add )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! item_ add)   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  hovered ,  held ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -12666,7 +12670,7 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags, int mouse_button) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // We build a throwaway ID based on current ID stack + relative AABB of items in window. 
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // THE IDENTIFIER WON'T SURVIVE ANY REPOSITIONING OF THE WIDGET, so if your widget moves your dragging operation will be canceled. 
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // We don't need to maintain/call ClearActiveID() as releasing the button will early out this function and trigger !ActiveIdIsAlive.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            bool  is_hovered  =  window - > DC . LastItemRectHoveredRect  ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            bool  is_hovered  =  ( window - > DC . LastItemStatusFlags  &  ImGuiItemStatusFlags_HoveredRect )  ! =  0  ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! is_hovered  & &  ( g . ActiveId  = =  0  | |  g . ActiveIdWindow  ! =  window ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            source_id  =  window - > DC . LastItemId  =  window - > GetIDFromRectangle ( window - > DC . LastItemRect ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -12717,7 +12721,7 @@ bool ImGui::BeginDragDropSource(ImGuiDragDropFlags flags, int mouse_button) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! ( flags  &  ImGuiDragDropFlags_SourceNoDisableHover )  & &  ! ( flags  &  ImGuiDragDropFlags_SourceExtern ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > DC . LastItemRectHoveredRect  =  false  ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > DC . LastItemStatusFlags  & =  ~ ImGuiItemStatusFlags_HoveredRect  ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -12814,18 +12818,19 @@ bool ImGui::BeginDragDropTarget() 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiWindow *  window  =  g . CurrentWindow ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! window - > DC . LastItemRectHoveredRect  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ! ( window - > DC . LastItemStatusFlags  &  ImGuiItemStatusFlags_HoveredRect )  )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . HoveredWindow  = =  NULL  | |  window - > RootWindow  ! =  g . HoveredWindow - > RootWindow )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    const  ImRect &  display_rect  =  ( window - > DC . LastItemStatusFlags  &  ImGuiItemStatusFlags_HasDisplayRect )  ?  window - > DC . LastItemDisplayRect  :  window - > DC . LastItemRect ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiID  id  =  window - > DC . LastItemId ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( id  = =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        id  =  window - > GetIDFromRectangle ( window - > DC . LastItemR ect) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        id  =  window - > GetIDFromRectangle ( display_r ect) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( g . DragDropPayload . SourceId  = =  id )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DragDropTargetRect  =  window - > DC . LastItemR ect;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DragDropTargetRect  =  display_r ect;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . DragDropTargetId  =  id ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}