@ -1098,7 +1098,7 @@ static void ShowDemoWindowWidgets()
ImGui : : TableNextColumn ( ) ;
ImGui : : Selectable ( label , & selected [ i ] ) ; // FIXME-TABLE: Selection overlap
}
ImGui : : EndTable ( ) ;
ImGui : : EndTable ( ) ;
}
ImGui : : Separator ( ) ;
if ( ImGui : : BeginTable ( " split2 " , 3 , ImGuiTableFlags_Resizable | ImGuiTableFlags_NoSavedSettings ) )
@ -3755,7 +3755,7 @@ static void ShowDemoWindowTables()
if ( open_action ! = - 1 )
ImGui : : SetNextItemOpen ( open_action ! = 0 ) ;
if ( ImGui : : TreeNode ( " Vertical scrolling " ) )
if ( ImGui : : TreeNode ( " Vertical scrolling , with clipping " ) )
{
HelpMarker ( " Here we activate ScrollY, which will create a child window container to allow hosting scrollable contents. \n \n We also demonstrate using ImGuiListClipper to virtualize the submission of many items. " ) ;
static ImGuiTableFlags flags = ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable ;
@ -3774,6 +3774,8 @@ static void ShowDemoWindowTables()
ImGui : : TableSetupColumn ( " Two " , ImGuiTableColumnFlags_None ) ;
ImGui : : TableSetupColumn ( " Three " , ImGuiTableColumnFlags_None ) ;
ImGui : : TableHeadersRow ( ) ;
// Demonstrate using clipper for large vertical lists
ImGuiListClipper clipper ;
clipper . Begin ( 1000 ) ;
while ( clipper . Step ( ) )
@ -4393,6 +4395,7 @@ static void ShowDemoWindowTables()
ImGui : : TableSetupColumn ( " Action " , ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_WidthFixed , - 1.0f , MyItemColumnID_Action ) ;
ImGui : : TableSetupColumn ( " Quantity " , ImGuiTableColumnFlags_PreferSortDescending | ImGuiTableColumnFlags_WidthStretch , - 1.0f , MyItemColumnID_Quantity ) ;
ImGui : : TableSetupScrollFreeze ( 0 , 1 ) ; // Make row always visible
ImGui : : TableHeadersRow ( ) ;
// Sort our data if sort specs have been changed!
if ( ImGuiTableSortSpecs * sorts_specs = ImGui : : TableGetSortSpecs ( ) )
@ -4405,13 +4408,13 @@ static void ShowDemoWindowTables()
sorts_specs - > SpecsDirty = false ;
}
// Display data
ImGui : : TableHeadersRow ( ) ;
// Demonstrate using clipper for large vertical lists
ImGuiListClipper clipper ;
clipper . Begin ( items . Size ) ;
while ( clipper . Step ( ) )
for ( int row_n = clipper . DisplayStart ; row_n < clipper . DisplayEnd ; row_n + + )
{
// Display a data item
MyItem * item = & items [ row_n ] ;
ImGui : : PushID ( item - > ID ) ;
ImGui : : TableNextRow ( ) ;
@ -4448,7 +4451,7 @@ static void ShowDemoWindowTables()
static int freeze_cols = 1 ;
static int freeze_rows = 1 ;
static int items_count = IM_ARRAYSIZE ( template_items_names ) ;
static ImVec2 outer_size_value = ImVec2 ( 0 , TEXT_BASE_HEIGHT * 1 5 ) ;
static ImVec2 outer_size_value = ImVec2 ( 0 , TEXT_BASE_HEIGHT * 1 2 ) ;
static float row_min_height = 0.0f ; // Auto
static float inner_width_with_scroll = 0.0f ; // Auto-extend
static bool outer_size_enabled = true ;
@ -4609,14 +4612,16 @@ static void ShowDemoWindowTables()
// FIXME-TABLE FIXME-NAV: How we can get decent up/down even though we have the buttons here?
ImGui : : PushButtonRepeat ( true ) ;
# if 1
// Demonstrate using clipper for large vertical lists
ImGuiListClipper clipper ;
clipper . Begin ( items . Size ) ;
while ( clipper . Step ( ) )
{
for ( int row_n = clipper . DisplayStart ; row_n < clipper . DisplayEnd ; row_n + + )
# else
// Without clipper
{
for ( int row_n = 0 ; row_n < items _count ; row_n + + )
for ( int row_n = 0 ; row_n < items . Size ; row_n + + )
# endif
{
MyItem * item = & items [ row_n ] ;
@ -4691,6 +4696,7 @@ static void ShowDemoWindowTables()
}
ImGui : : PopButtonRepeat ( ) ;
// Store some info to display debug details below
table_scroll_cur = ImVec2 ( ImGui : : GetScrollX ( ) , ImGui : : GetScrollY ( ) ) ;
table_scroll_max = ImVec2 ( ImGui : : GetScrollMaxX ( ) , ImGui : : GetScrollMaxY ( ) ) ;
table_draw_list = ImGui : : GetWindowDrawList ( ) ;
@ -4703,7 +4709,8 @@ static void ShowDemoWindowTables()
ImGui : : SameLine ( 0.0f , 0.0f ) ;
const int table_draw_list_draw_cmd_count = table_draw_list - > CmdBuffer . Size ;
if ( table_draw_list = = parent_draw_list )
ImGui : : Text ( " : DrawCmd: +%d (in same window) " , table_draw_list_draw_cmd_count - parent_draw_list_draw_cmd_count ) ;
ImGui : : Text ( " : DrawCmd: +%d (in same window) " ,
table_draw_list_draw_cmd_count - parent_draw_list_draw_cmd_count ) ;
else
ImGui : : Text ( " : DrawCmd: +%d (in child window), Scroll: (%.f/%.f) (%.f/%.f) " ,
table_draw_list_draw_cmd_count - 1 , table_scroll_cur . x , table_scroll_max . x , table_scroll_cur . y , table_scroll_max . y ) ;
@ -4860,8 +4867,10 @@ static void ShowDemoWindowColumns()
ImVec2 child_size = ImVec2 ( 0 , ImGui : : GetFontSize ( ) * 20.0f ) ;
ImGui : : BeginChild ( " ##ScrollingRegion " , child_size , false , ImGuiWindowFlags_HorizontalScrollbar ) ;
ImGui : : Columns ( 10 ) ;
// Also demonstrate using clipper for large vertical lists
int ITEMS_COUNT = 2000 ;
ImGuiListClipper clipper ; // Also demonstrate using the clipper for large list
ImGuiListClipper clipper ;
clipper . Begin ( ITEMS_COUNT ) ;
while ( clipper . Step ( ) )
{