mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 21:21:06 +01:00 
			
		
		
		
	Tables: (Breaking) rename ImGuiTableFlags_SizingPolicyFixed > ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_SizingPolicyStretch > ImGuiTableFlags_SizingStretchSame in prevision for new policies.
This commit is contained in:
		| @@ -3559,7 +3559,7 @@ static void ShowDemoWindowTables() | ||||
|     { | ||||
|         // By default, if we don't enable ScrollX the sizing policy for each columns is "Stretch" | ||||
|         // Each columns maintain a sizing weight, and they will occupy all available width. | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_SizingPolicyStretch | ImGuiTableFlags_Resizable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_ContextMenuInBody; | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_SizingStretchSame | ImGuiTableFlags_Resizable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_ContextMenuInBody; | ||||
|         PushStyleCompact(); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", &flags, ImGuiTableFlags_Resizable); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_BordersV", &flags, ImGuiTableFlags_BordersV); | ||||
| @@ -3586,17 +3586,17 @@ static void ShowDemoWindowTables() | ||||
|         ImGui::SetNextItemOpen(open_action != 0); | ||||
|     if (ImGui::TreeNode("Resizable, fixed")) | ||||
|     { | ||||
|         // Here we use ImGuiTableFlags_SizingPolicyFixed (even though _ScrollX is not set) | ||||
|         // Here we use ImGuiTableFlags_SizingFixedFit (even though _ScrollX is not set) | ||||
|         // So columns will adopt the "Fixed" policy and will maintain a fixed width regardless of the whole available width (unless table is small) | ||||
|         // If there is not enough available width to fit all columns, they will however be resized down. | ||||
|         // FIXME-TABLE: Providing a stretch-on-init would make sense especially for tables which don't have saved settings | ||||
|         HelpMarker( | ||||
|             "Using _Resizable + _SizingPolicyFixed flags.\n" | ||||
|             "Using _Resizable + _SizingFixedFit flags.\n" | ||||
|             "Fixed-width columns generally makes more sense if you want to use horizontal scrolling.\n\n" | ||||
|             "Double-click a column border to auto-fit the column to its contents."); | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_SizingPolicyFixed | ImGuiTableFlags_Resizable  | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_ContextMenuInBody; | ||||
|         PushStyleCompact(); | ||||
|         static bool fixed_fill = false; | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Resizable | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ImGuiTableFlags_ContextMenuInBody; | ||||
|         static bool fixed_fill = true; | ||||
|         ImGui::Checkbox("fill", &fixed_fill); | ||||
|         PopStyleCompact(); | ||||
|  | ||||
| @@ -3621,8 +3621,10 @@ static void ShowDemoWindowTables() | ||||
|         ImGui::SetNextItemOpen(open_action != 0); | ||||
|     if (ImGui::TreeNode("Resizable, mixed")) | ||||
|     { | ||||
|         HelpMarker("Using columns flag to alter resizing policy on a per-column basis."); | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_SizingPolicyFixed | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable; | ||||
|         HelpMarker( | ||||
|             "Using TableSetupColumn() to alter resizing policy on a per-column basis.\n\n" | ||||
|             "When combining Fixed and Stretch columns, generally you only want one, maybe two trailing columns to use _WidthStretch."); | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable; | ||||
|  | ||||
|         if (ImGui::BeginTable("##table1", 3, flags)) | ||||
|         { | ||||
| @@ -3699,7 +3701,7 @@ static void ShowDemoWindowTables() | ||||
|         } | ||||
|  | ||||
|         // Use outer_size.x == 0.0f instead of default to make the table as tight as possible (only valid when no scrolling and no stretch column) | ||||
|         if (ImGui::BeginTable("##table2", 3, flags | ImGuiTableFlags_SizingPolicyFixed, ImVec2(0.0f, 0.0f))) | ||||
|         if (ImGui::BeginTable("##table2", 3, flags | ImGuiTableFlags_SizingFixedFit, ImVec2(0.0f, 0.0f))) | ||||
|         { | ||||
|             ImGui::TableSetupColumn("One"); | ||||
|             ImGui::TableSetupColumn("Two"); | ||||
| @@ -3845,23 +3847,19 @@ static void ShowDemoWindowTables() | ||||
|             HelpMarker("Be mindful that using right-alignment (e.g. size.x = -FLT_MIN) creates a feedback loop where contents width can feed into auto-column width can feed into contents width."); | ||||
|         } | ||||
|         ImGui::DragInt("Columns", &column_count, 0.1f, 1, 64, "%d", ImGuiSliderFlags_AlwaysClamp); | ||||
|         ImGui::PopItemWidth(); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerH", &flags, ImGuiTableFlags_BordersInnerH); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuterH", &flags, ImGuiTableFlags_BordersOuterH); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_BordersInnerV", &flags, ImGuiTableFlags_BordersInnerV); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_BordersOuterV", &flags, ImGuiTableFlags_BordersOuterV); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_ScrollX", &flags, ImGuiTableFlags_ScrollX); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", &flags, ImGuiTableFlags_ScrollY); | ||||
|         if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingPolicyStretch", &flags, ImGuiTableFlags_SizingPolicyStretch)) | ||||
|             flags &= ~ImGuiTableFlags_SizingPolicyFixed;       // Can't specify both sizing polices so we clear the other | ||||
|         if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingStretchSame", &flags, ImGuiTableFlags_SizingStretchSame)) | ||||
|             flags &= ~ImGuiTableFlags_SizingFixedFit;       // Can't specify both sizing polices so we clear the other | ||||
|         ImGui::SameLine(); HelpMarker("Default if _ScrollX if disabled. Makes columns use _WidthStretch policy by default."); | ||||
|         if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingPolicyFixed", &flags, ImGuiTableFlags_SizingPolicyFixed)) | ||||
|             flags &= ~ImGuiTableFlags_SizingPolicyStretch;     // Can't specify both sizing polices so we clear the other | ||||
|         if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingFixedFit", &flags, ImGuiTableFlags_SizingFixedFit)) | ||||
|             flags &= ~ImGuiTableFlags_SizingStretchSame;     // Can't specify both sizing polices so we clear the other | ||||
|         ImGui::SameLine(); HelpMarker("Default if _ScrollX if enabled. Makes columns use _WidthFixed by default, or _WidthFixedResize if _Resizable is not set."); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", &flags, ImGuiTableFlags_Resizable); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_PreciseWidths", &flags, ImGuiTableFlags_PreciseWidths); | ||||
|         ImGui::SameLine(); HelpMarker("Disable distributing remainder width to stretched columns (width allocation on a 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33). With larger number of columns, resizing will appear to be less smooth."); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_Resizable", &flags, ImGuiTableFlags_Resizable); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_ScrollX", &flags, ImGuiTableFlags_ScrollX); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_ScrollY", &flags, ImGuiTableFlags_ScrollY); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_NoClip", &flags, ImGuiTableFlags_NoClip); | ||||
|         ImGui::PopItemWidth(); | ||||
|         PopStyleCompact(); | ||||
|  | ||||
|         ImVec2 outer_size(-FLT_MIN, TEXT_BASE_HEIGHT * 7); | ||||
| @@ -3939,7 +3937,7 @@ static void ShowDemoWindowTables() | ||||
|     if (ImGui::TreeNode("Horizontal scrolling")) | ||||
|     { | ||||
|         HelpMarker( | ||||
|             "When ScrollX is enabled, the default sizing policy becomes ImGuiTableFlags_SizingPolicyFixed," | ||||
|             "When ScrollX is enabled, the default sizing policy becomes ImGuiTableFlags_SizingFixedFit, " | ||||
|             "as automatically stretching columns doesn't make much sense with horizontal scrolling.\n\n" | ||||
|             "Also note that as of the current version, you will almost always want to enable ScrollY along with ScrollX," | ||||
|             "because the container window won't automatically extend vertically to fix contents (this may be improved in future versions)."); | ||||
| @@ -4000,7 +3998,7 @@ static void ShowDemoWindowTables() | ||||
|             "Showcase using Stretch columns + ScrollX together: " | ||||
|             "this is rather unusual and only makes sense when specifying an 'inner_width' for the table!\n" | ||||
|             "Without an explicit value, inner_width is == outer_size.x and therefore using Stretch columns + ScrollX together doesn't make sense."); | ||||
|         static ImGuiTableFlags flags2 = ImGuiTableFlags_SizingPolicyStretch | ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_RowBg | ImGuiTableFlags_ContextMenuInBody; | ||||
|         static ImGuiTableFlags flags2 = ImGuiTableFlags_SizingStretchSame | ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_RowBg | ImGuiTableFlags_ContextMenuInBody; | ||||
|         static float inner_width = 1000.0f; | ||||
|         PushStyleCompact(); | ||||
|         ImGui::PushID("flags3"); | ||||
| @@ -4057,7 +4055,7 @@ static void ShowDemoWindowTables() | ||||
|         // We use a scrolling table to be able to showcase the difference between the _IsEnabled and _IsVisible flags above, otherwise in | ||||
|         // a non-scrolling table columns are always visible (unless using ImGuiTableFlags_NoKeepColumnsVisible + resizing the parent window down) | ||||
|         const ImGuiTableFlags flags | ||||
|             = ImGuiTableFlags_SizingPolicyFixed | ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ||||
|             = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ||||
|             | ImGuiTableFlags_RowBg | ImGuiTableFlags_BordersOuter | ImGuiTableFlags_BordersV | ||||
|             | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Sortable; | ||||
|         ImVec2 size = ImVec2(-FLT_MIN, TEXT_BASE_HEIGHT * 9); | ||||
| @@ -4101,7 +4099,7 @@ static void ShowDemoWindowTables() | ||||
|  | ||||
|         if (ImGui::BeginTable("##table1", 4, flags)) | ||||
|         { | ||||
|             // We could also set ImGuiTableFlags_SizingPolicyFixed on the table and all columns will default to ImGuiTableColumnFlags_WidthFixed. | ||||
|             // We could also set ImGuiTableFlags_SizingFixedFit on the table and all columns will default to ImGuiTableColumnFlags_WidthFixed. | ||||
|             ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 100.0f); | ||||
|             ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 15.0f); | ||||
|             ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, TEXT_BASE_WIDTH * 30.0f); | ||||
| @@ -4194,7 +4192,7 @@ static void ShowDemoWindowTables() | ||||
|         // Using outer_size.x == 0.0f on a table with no scrolling and no stretch column we can make them tighter. | ||||
|         ImGui::Text("Using auto/all width, using NoHostExtendY:"); | ||||
|         PushStyleCompact(); | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_ContextMenuInBody | ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingPolicyFixed; | ||||
|         static ImGuiTableFlags flags = ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_ContextMenuInBody | ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingFixedFit; | ||||
|         static bool fixed_fill = false; | ||||
|         ImGui::Checkbox("fill", &fixed_fill); | ||||
|         ImGui::CheckboxFlags("ImGuiTableFlags_NoHostExtendY", &flags, ImGuiTableFlags_NoHostExtendY); | ||||
| @@ -4513,7 +4511,7 @@ static void ShowDemoWindowTables() | ||||
|         // [2.2] Right-click on the ".." to open a custom popup | ||||
|         // [2.3] Right-click in columns to open another custom popup | ||||
|         HelpMarker("Demonstrate mixing table context menu (over header), item context button (over button) and custom per-colum context menu (over column body)."); | ||||
|         ImGuiTableFlags flags2 = ImGuiTableFlags_Resizable | ImGuiTableFlags_SizingPolicyFixed | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders; | ||||
|         ImGuiTableFlags flags2 = ImGuiTableFlags_Resizable | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders; | ||||
|         if (ImGui::BeginTable("##table2", COLUMNS_COUNT, flags2)) | ||||
|         { | ||||
|             ImGui::TableSetupColumn("One"); | ||||
| @@ -4587,7 +4585,7 @@ static void ShowDemoWindowTables() | ||||
|             char buf[32]; | ||||
|             sprintf(buf, "Synced Table %d", n); | ||||
|             bool open = ImGui::CollapsingHeader(buf, ImGuiTreeNodeFlags_DefaultOpen); | ||||
|             if (open && ImGui::BeginTable("Table", 3, ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders | ImGuiTableFlags_SizingPolicyFixed | ImGuiTableFlags_NoSavedSettings)) | ||||
|             if (open && ImGui::BeginTable("Table", 3, ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_NoSavedSettings)) | ||||
|             { | ||||
|                 ImGui::TableSetupColumn("One"); | ||||
|                 ImGui::TableSetupColumn("Two"); | ||||
| @@ -4705,7 +4703,7 @@ static void ShowDemoWindowTables() | ||||
|             | ImGuiTableFlags_Sortable | ImGuiTableFlags_SortMulti | ||||
|             | ImGuiTableFlags_RowBg | ImGuiTableFlags_Borders | ImGuiTableFlags_NoBordersInBody | ||||
|             | ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ||||
|             | ImGuiTableFlags_SizingPolicyFixed; | ||||
|             | ImGuiTableFlags_SizingFixedFit; | ||||
|  | ||||
|         enum ContentsType { CT_Text, CT_Button, CT_SmallButton, CT_FillButton, CT_Selectable, CT_SelectableSpanRow }; | ||||
|         static int contents_type = CT_SelectableSpanRow; | ||||
| @@ -4754,11 +4752,11 @@ static void ShowDemoWindowTables() | ||||
|  | ||||
|             if (ImGui::TreeNodeEx("Sizing:", ImGuiTreeNodeFlags_DefaultOpen)) | ||||
|             { | ||||
|                 if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingPolicyStretch", &flags, ImGuiTableFlags_SizingPolicyStretch)) | ||||
|                     flags &= ~ImGuiTableFlags_SizingPolicyFixed;   // Can't specify both sizing polices so we clear the other | ||||
|                 if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingStretchSame", &flags, ImGuiTableFlags_SizingStretchSame)) | ||||
|                     flags &= ~ImGuiTableFlags_SizingFixedFit;   // Can't specify both sizing polices so we clear the other | ||||
|                 ImGui::SameLine(); HelpMarker("[Default if ScrollX is off]\nFit all columns within available width (or specified inner_width). Fixed and Stretch columns allowed."); | ||||
|                 if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingPolicyFixed", &flags, ImGuiTableFlags_SizingPolicyFixed)) | ||||
|                     flags &= ~ImGuiTableFlags_SizingPolicyStretch; // Can't specify both sizing polices so we clear the other | ||||
|                 if (ImGui::CheckboxFlags("ImGuiTableFlags_SizingFixedFit", &flags, ImGuiTableFlags_SizingFixedFit)) | ||||
|                     flags &= ~ImGuiTableFlags_SizingStretchSame; // Can't specify both sizing polices so we clear the other | ||||
|                 ImGui::SameLine(); HelpMarker("[Default if ScrollX is on]\nEnlarge as needed: enable scrollbar if ScrollX is enabled, otherwise extend parent window's contents rectangle. Only Fixed columns allowed. Stretched columns will calculate their width assuming no scrolling."); | ||||
|                 ImGui::SameLine(); HelpMarker("In the Advanced demo we override the policy of each column so those table-wide settings have less effect that typical."); | ||||
|                 ImGui::CheckboxFlags("ImGuiTableFlags_NoHostExtendY", &flags, ImGuiTableFlags_NoHostExtendY); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user