@ -8400,13 +8400,13 @@ void ImGui::NextColumn()
{
// New column (columns 1+ cancels out IndentX)
window - > DC . ColumnsOffset . x = GetColumnOffset ( columns - > Current ) - window - > DC . Indent . x + g . Style . ItemSpacing . x ;
window - > DrawList - > ChannelsSetCurrent ( columns - > Current ) ;
window - > DrawList - > ChannelsSetCurrent ( columns - > Current + 1 ) ;
}
else
{
// New row/line
window - > DC . ColumnsOffset . x = 0.0f ;
window - > DrawList - > ChannelsSetCurrent ( 0 ) ;
window - > DrawList - > ChannelsSetCurrent ( 1 ) ;
columns - > Current = 0 ;
columns - > LineMinY = columns - > LineMaxY ;
}
@ -8415,7 +8415,7 @@ void ImGui::NextColumn()
window - > DC . CurrentLineSize = ImVec2 ( 0.0f , 0.0f ) ;
window - > DC . CurrentLineTextBaseOffset = 0.0f ;
PushColumnClipRect ( ) ;
PushColumnClipRect ( columns - > Current ) ;
PushItemWidth ( GetColumnWidth ( ) * 0.65f ) ; // FIXME-COLUMNS: Move on columns setup
}
@ -8543,6 +8543,25 @@ void ImGui::PushColumnClipRect(int column_index)
PushClipRect ( column - > ClipRect . Min , column - > ClipRect . Max , false ) ;
}
// Get into the columns background draw command (which is generally the same draw command as before we called BeginColumns)
void ImGui : : PushColumnsBackground ( )
{
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
ImGuiColumns * columns = window - > DC . CurrentColumns ;
window - > DrawList - > ChannelsSetCurrent ( 0 ) ;
int cmd_size = window - > DrawList - > CmdBuffer . Size ;
PushClipRect ( columns - > BackupClipRect . Min , columns - > BackupClipRect . Max , false ) ;
IM_ASSERT ( cmd_size = = window - > DrawList - > CmdBuffer . Size ) ; // Being in channel 0 this should not have created an ImDrawCmd
}
void ImGui : : PopColumnsBackground ( )
{
ImGuiWindow * window = GetCurrentWindowRead ( ) ;
ImGuiColumns * columns = window - > DC . CurrentColumns ;
window - > DrawList - > ChannelsSetCurrent ( columns - > Current + 1 ) ;
PopClipRect ( ) ;
}
ImGuiColumns * ImGui : : FindOrCreateColumns ( ImGuiWindow * window , ImGuiID id )
{
// We have few columns per window so for now we don't need bother much with turning this into a faster lookup.
@ -8593,6 +8612,7 @@ void ImGui::BeginColumns(const char* str_id, int columns_count, ImGuiColumnsFlag
columns - > MaxX = ImMax ( content_region_width - window - > Scroll . x , columns - > MinX + 1.0f ) ;
columns - > BackupCursorPosY = window - > DC . CursorPos . y ;
columns - > BackupCursorMaxPosX = window - > DC . CursorMaxPos . x ;
columns - > BackupClipRect = window - > ClipRect ;
columns - > LineMinY = columns - > LineMaxY = window - > DC . CursorPos . y ;
window - > DC . ColumnsOffset . x = 0.0f ;
window - > DC . CursorPos . x = ( float ) ( int ) ( window - > Pos . x + window - > DC . Indent . x + window - > DC . ColumnsOffset . x ) ;
@ -8626,8 +8646,9 @@ void ImGui::BeginColumns(const char* str_id, int columns_count, ImGuiColumnsFlag
if ( columns - > Count > 1 )
{
window - > DrawList - > ChannelsSplit ( columns - > Count ) ;
PushColumnClipRect ( ) ;
window - > DrawList - > ChannelsSplit ( 1 + columns - > Count ) ;
window - > DrawList - > ChannelsSetCurrent ( 1 ) ;
PushColumnClipRect ( 0 ) ;
}
PushItemWidth ( GetColumnWidth ( ) * 0.65f ) ;
}