mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Tables: (Breaking change) Sorting: Made it users responsability to clear SpecsDirty back to false, so TableGetSortSpecs() doesn't have side-effect any more. + comments
This commit is contained in:
		
							
								
								
									
										28
									
								
								imgui.h
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								imgui.h
									
									
									
									
									
								
							| @@ -688,17 +688,19 @@ namespace ImGui | ||||
|     IMGUI_API void          TableSetBgColor(ImGuiTableBgTarget bg_target, ImU32 color, int column_n = -1);  // change the color of a cell, row, or column. See ImGuiTableBgTarget_ flags for details. | ||||
|     // Tables: Headers & Columns declaration | ||||
|     // - Use TableSetupColumn() to specify label, resizing policy, default width, id, various other flags etc. | ||||
|     // - The name passed to TableSetupColumn() is used by TableAutoHeaders() and by the context-menu | ||||
|     // - Use TableAutoHeaders() to submit the whole header row, otherwise you may treat the header row as a regular row, manually call TableHeader() and other widgets. | ||||
|     // - Headers are required to perform some interactions: reordering, sorting, context menu (FIXME-TABLE: context menu should work without!) | ||||
|     //   Important: this will not display anything! The name passed to TableSetupColumn() is used by TableAutoHeaders() and context-menus. | ||||
|     // - Use TableAutoHeaders() to create a row and automatically submit a TableHeader() for each column. | ||||
|     //   Headers are required to perform some interactions: reordering, sorting, context menu (FIXME-TABLE: context menu should work without!) | ||||
|     // - You may manually submit headers using TableNextRow() + TableHeader() calls, but this is only useful in some advanced cases (e.g. adding custom widgets in header row). | ||||
|     IMGUI_API void          TableSetupColumn(const char* label, ImGuiTableColumnFlags flags = 0, float init_width_or_weight = -1.0f, ImU32 user_id = 0); | ||||
|     IMGUI_API void          TableAutoHeaders();                         // submit all headers cells based on data provided to TableSetupColumn() + submit context menu | ||||
|     IMGUI_API void          TableHeader(const char* label);             // submit one header cell manually. | ||||
|     IMGUI_API void          TableHeader(const char* label);             // submit one header cell manually (rarely used) | ||||
|     // Tables: Sorting | ||||
|     // - Call TableGetSortSpecs() to retrieve latest sort specs for the table. Return value will be NULL if no sorting. | ||||
|     // - You can sort your data again when 'SpecsChanged == true'. It will be true with sorting specs have changed since last call, or the first time. | ||||
|     // - When 'SpecsDirty == true' you can sort your data. It will be true with sorting specs have changed since last call, or the first time. | ||||
|     //   Make sure to set 'SpecsDirty = false' after sorting, else you may wastefully sort your data every frame! | ||||
|     // - Lifetime: don't hold on this pointer over multiple frames or past any subsequent call to BeginTable()! | ||||
|     IMGUI_API const ImGuiTableSortSpecs* TableGetSortSpecs();           // get latest sort specs for the table (NULL if not sorting). | ||||
|     IMGUI_API ImGuiTableSortSpecs* TableGetSortSpecs();                 // get latest sort specs for the table (NULL if not sorting). | ||||
|  | ||||
|     // Tab Bars, Tabs | ||||
|     IMGUI_API bool          BeginTabBar(const char* str_id, ImGuiTabBarFlags flags = 0);        // create and append into a TabBar | ||||
| @@ -1890,15 +1892,17 @@ struct ImGuiTableSortSpecsColumn | ||||
| }; | ||||
|  | ||||
| // Sorting specifications for a table (often handling sort specs for a single column, occasionally more) | ||||
| // Obtained by calling TableGetSortSpecs() | ||||
| // Obtained by calling TableGetSortSpecs(). | ||||
| // When 'SpecsDirty == true' you can sort your data. It will be true with sorting specs have changed since last call, or the first time. | ||||
| // Make sure to set 'SpecsDirty = false' after sorting, else you may wastefully sort your data every frame! | ||||
| struct ImGuiTableSortSpecs | ||||
| { | ||||
|     const ImGuiTableSortSpecsColumn* Specs;         // Pointer to sort spec array. | ||||
|     int                         SpecsCount;         // Sort spec count. Most often 1 unless e.g. ImGuiTableFlags_MultiSortable is enabled. | ||||
|     bool                        SpecsChanged;       // Set to true by TableGetSortSpecs() call if the specs have changed since the previous call. Use this to sort again! | ||||
|     ImU64                       ColumnsMask;        // Set to the mask of column indexes included in the Specs array. e.g. (1 << N) when column N is sorted. | ||||
|     const ImGuiTableSortSpecsColumn* Specs;     // Pointer to sort spec array. | ||||
|     int                         SpecsCount;     // Sort spec count. Most often 1 unless e.g. ImGuiTableFlags_MultiSortable is enabled. | ||||
|     bool                        SpecsDirty;     // Set to true when specs have changed since last time! Use this to sort again, then clear the flag. | ||||
|     ImU64                       ColumnsMask;    // Set to the mask of column indexes included in the Specs array. e.g. (1 << N) when column N is sorted. | ||||
|  | ||||
|     ImGuiTableSortSpecs()       { Specs = NULL; SpecsCount = 0; SpecsChanged = false; ColumnsMask = 0x00; } | ||||
|     ImGuiTableSortSpecs()       { Specs = NULL; SpecsCount = 0; SpecsDirty = false; ColumnsMask = 0x00; } | ||||
| }; | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user