|  |  | @ -1156,6 +1156,7 @@ struct ImGuiState | 
			
		
	
		
		
			
				
					
					|  |  |  |     ImGuiID                 ScalarAsInputTextId;                // Temporary text input when CTRL+clicking on a slider, etc.
 |  |  |  |     ImGuiID                 ScalarAsInputTextId;                // Temporary text input when CTRL+clicking on a slider, etc.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ImGuiStorage            ColorEditModeStorage;               // for user selection
 |  |  |  |     ImGuiStorage            ColorEditModeStorage;               // for user selection
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ImGuiID                 ActiveComboID; |  |  |  |     ImGuiID                 ActiveComboID; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ImVec2                  ActiveClickDeltaToCenter; | 
			
		
	
		
		
			
				
					
					|  |  |  |     float                   DragCurrentValue;                   // current dragged value, always float, not rounded by end-user precision settings
 |  |  |  |     float                   DragCurrentValue;                   // current dragged value, always float, not rounded by end-user precision settings
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     ImVec2                  DragLastMouseDelta; |  |  |  |     ImVec2                  DragLastMouseDelta; | 
			
		
	
		
		
			
				
					
					|  |  |  |     float                   DragSpeedDefaultRatio;              // if speed == 0.0f, uses (max-min) * DragSpeedDefaultRatio
 |  |  |  |     float                   DragSpeedDefaultRatio;              // if speed == 0.0f, uses (max-min) * DragSpeedDefaultRatio
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -1214,6 +1215,7 @@ struct ImGuiState | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         ScalarAsInputTextId = 0; |  |  |  |         ScalarAsInputTextId = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |         ActiveComboID = 0; |  |  |  |         ActiveComboID = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ActiveClickDeltaToCenter = ImVec2(0.0f, 0.0f); | 
			
		
	
		
		
			
				
					
					|  |  |  |         DragCurrentValue = 0.0f; |  |  |  |         DragCurrentValue = 0.0f; | 
			
		
	
		
		
			
				
					
					|  |  |  |         DragLastMouseDelta = ImVec2(0.0f, 0.0f); |  |  |  |         DragLastMouseDelta = ImVec2(0.0f, 0.0f); | 
			
		
	
		
		
			
				
					
					|  |  |  |         DragSpeedDefaultRatio = 0.01f; |  |  |  |         DragSpeedDefaultRatio = 0.01f; | 
			
		
	
	
		
		
			
				
					|  |  | @ -7424,7 +7426,7 @@ void ImGui::NextColumn() | 
			
		
	
		
		
			
				
					
					|  |  |  |         window->DC.CurrentLineTextBaseOffset = 0.0f; |  |  |  |         window->DC.CurrentLineTextBaseOffset = 0.0f; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         PushColumnClipRect(); |  |  |  |         PushColumnClipRect(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         ImGui::PushItemWidth(ImGui::GetColumnWidth() * 0.65f); |  |  |  |         ImGui::PushItemWidth(ImGui::GetColumnWidth() * 0.65f);  // FIXME
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -7440,6 +7442,21 @@ int ImGui::GetColumnsCount() | 
			
		
	
		
		
			
				
					
					|  |  |  |     return window->DC.ColumnsCount; |  |  |  |     return window->DC.ColumnsCount; | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | static float GetDraggedColumnOffset(int column_index) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     // Active (dragged) column always follow mouse. The reason we need this is that dragging a column to the right edge of an auto-resizing
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     // window creates a feedback loop because we store normalized positions/ So while dragging we enforce absolute positioning
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ImGuiState& g = *GImGui; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ImGuiWindow* window = GetCurrentWindow(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     IM_ASSERT(g.ActiveId == window->DC.ColumnsSetID + ImGuiID(column_index)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     float x = g.IO.MousePos.x + g.ActiveClickDeltaToCenter.x; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     x -= window->Pos.x; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     x = ImClamp(x, ImGui::GetColumnOffset(column_index-1)+g.Style.ColumnsMinSpacing, ImGui::GetColumnOffset(column_index+1)-g.Style.ColumnsMinSpacing); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return x; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | float ImGui::GetColumnOffset(int column_index) |  |  |  | float ImGui::GetColumnOffset(int column_index) | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  |     ImGuiState& g = *GImGui; |  |  |  |     ImGuiState& g = *GImGui; | 
			
		
	
	
		
		
			
				
					|  |  | @ -7447,6 +7464,13 @@ float ImGui::GetColumnOffset(int column_index) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (column_index < 0) |  |  |  |     if (column_index < 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |         column_index = window->DC.ColumnsCurrent; |  |  |  |         column_index = window->DC.ColumnsCurrent; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if (g.ActiveId) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         const ImGuiID column_id = window->DC.ColumnsSetID + ImGuiID(column_index); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (g.ActiveId == column_id) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return GetDraggedColumnOffset(column_index); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     // Read from cache
 |  |  |  |     // Read from cache
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     IM_ASSERT(column_index < (int)window->DC.ColumnsOffsetsT.size()); |  |  |  |     IM_ASSERT(column_index < (int)window->DC.ColumnsOffsetsT.size()); | 
			
		
	
		
		
			
				
					
					|  |  |  |     const float t = window->DC.ColumnsOffsetsT[column_index]; |  |  |  |     const float t = window->DC.ColumnsOffsetsT[column_index]; | 
			
		
	
	
		
		
			
				
					|  |  | @ -7538,10 +7562,11 @@ void ImGui::Columns(int columns_count, const char* id, bool border) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (held) |  |  |  |             if (held) | 
			
		
	
		
		
			
				
					
					|  |  |  |             { |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 x -= window->Pos.x; |  |  |  |                 if (g.ActiveIdIsJustActivated) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 x = ImClamp(x + g.IO.MouseDelta.x, ImGui::GetColumnOffset(i-1)+g.Style.ColumnsMinSpacing, ImGui::GetColumnOffset(i+1)-g.Style.ColumnsMinSpacing); |  |  |  |                     g.ActiveClickDeltaToCenter.x = x - g.IO.MousePos.x; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 x = GetDraggedColumnOffset(i); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 SetColumnOffset(i, x); |  |  |  |                 SetColumnOffset(i, x); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 x += window->Pos.x; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |