mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	Columns/Internals: (Breaking) renamed ImGuiColumnsFlags_* to ImGuiOldColumnFlags_*. (#125, #513, #913, #1204, #1444, #2142, #2707)
Affected: ImGuiColumnsFlags_None, ImGuiColumnsFlags_NoBorder, ImGuiColumnsFlags_NoResize, ImGuiColumnsFlags_NoPreserveWidths, ImGuiColumnsFlags_NoForceWithinWindow, ImGuiColumnsFlags_GrowParentContentsSize. Added redirection enums. Did not add redirection type.
This commit is contained in:
		| @@ -50,6 +50,8 @@ Breaking Changes: | ||||
| - If you were still using the old names, while you are cleaning up, considering enabling | ||||
|   IMGUI_DISABLE_OBSOLETE_FUNCTIONS in imconfig.h even temporarily to have a pass at finding | ||||
|   and removing up old API calls, if any remaining. | ||||
| - Columns: renamed undocumented/internals ImGuiColumnsFlags_* to ImGuiOldColumnFlags_* in prevision of | ||||
|   incoming Tables API. Keep redirection enums (will obsolete). (#125, #513, #913, #1204, #1444, #2142, #2707) | ||||
| - Renamed io.ConfigWindowsMemoryCompactTimer to io.ConfigMemoryCompactTimer as the feature will apply | ||||
|   to other data structures. (#2636) | ||||
|  | ||||
|   | ||||
| @@ -371,6 +371,7 @@ CODE | ||||
|  When you are not sure about a old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files. | ||||
|  You can read releases logs https://github.com/ocornut/imgui/releases for more details. | ||||
|  | ||||
|  - 2020/11/18 (1.80) - renamed undocumented/internals ImGuiColumnsFlags_* to ImGuiOldColumnFlags_* in prevision of incoming Tables API. | ||||
|  - 2020/11/03 (1.80) - renamed io.ConfigWindowsMemoryCompactTimer to io.ConfigMemoryCompactTimer as the feature will apply to other data structures | ||||
|  - 2020/10/14 (1.80) - backends: moved all backends files (imgui_impl_XXXX.cpp, imgui_impl_XXXX.h) from examples/ to backends/. | ||||
|  - 2020/10/12 (1.80) - removed redirecting functions/enums that were marked obsolete in 1.60 (April 2018): | ||||
|   | ||||
| @@ -117,9 +117,9 @@ struct ImGuiWindowSettings;         // Storage for a window .ini settings (we ke | ||||
|  | ||||
| // Use your programming IDE "Go to definition" facility on the names of the center columns to find the actual flags/enum lists. | ||||
| typedef int ImGuiLayoutType;            // -> enum ImGuiLayoutType_         // Enum: Horizontal or vertical | ||||
| typedef int ImGuiColumnsFlags;          // -> enum ImGuiColumnsFlags_       // Flags: BeginColumns() | ||||
| typedef int ImGuiItemFlags;             // -> enum ImGuiItemFlags_          // Flags: for PushItemFlag() | ||||
| typedef int ImGuiItemStatusFlags;       // -> enum ImGuiItemStatusFlags_    // Flags: for DC.LastItemStatusFlags | ||||
| typedef int ImGuiOldColumnFlags;        // -> enum ImGuiOldColumnFlags_     // Flags: for BeginColumns() | ||||
| typedef int ImGuiNavHighlightFlags;     // -> enum ImGuiNavHighlightFlags_  // Flags: for RenderNavHighlight() | ||||
| typedef int ImGuiNavDirSourceFlags;     // -> enum ImGuiNavDirSourceFlags_  // Flags: for GetNavInputAmount2d() | ||||
| typedef int ImGuiNavMoveFlags;          // -> enum ImGuiNavMoveFlags_       // Flags: for navigation requests | ||||
| @@ -990,22 +990,32 @@ struct ImGuiPtrOrIndex | ||||
| // [SECTION] Columns support | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| enum ImGuiColumnsFlags_ | ||||
| // Flags for internal's BeginColumns(). Prefix using BeginTable() nowadays! | ||||
| enum ImGuiOldColumnFlags_ | ||||
| { | ||||
|     // Default: 0 | ||||
|     ImGuiColumnsFlags_None                  = 0, | ||||
|     ImGuiColumnsFlags_NoBorder              = 1 << 0,   // Disable column dividers | ||||
|     ImGuiColumnsFlags_NoResize              = 1 << 1,   // Disable resizing columns when clicking on the dividers | ||||
|     ImGuiColumnsFlags_NoPreserveWidths      = 1 << 2,   // Disable column width preservation when adjusting columns | ||||
|     ImGuiColumnsFlags_NoForceWithinWindow   = 1 << 3,   // Disable forcing columns to fit within window | ||||
|     ImGuiColumnsFlags_GrowParentContentsSize= 1 << 4    // (WIP) Restore pre-1.51 behavior of extending the parent window contents size but _without affecting the columns width at all_. Will eventually remove. | ||||
|     ImGuiOldColumnFlags_None                    = 0, | ||||
|     ImGuiOldColumnFlags_NoBorder                = 1 << 0,   // Disable column dividers | ||||
|     ImGuiOldColumnFlags_NoResize                = 1 << 1,   // Disable resizing columns when clicking on the dividers | ||||
|     ImGuiOldColumnFlags_NoPreserveWidths        = 1 << 2,   // Disable column width preservation when adjusting columns | ||||
|     ImGuiOldColumnFlags_NoForceWithinWindow     = 1 << 3,   // Disable forcing columns to fit within window | ||||
|     ImGuiOldColumnFlags_GrowParentContentsSize  = 1 << 4    // (WIP) Restore pre-1.51 behavior of extending the parent window contents size but _without affecting the columns width at all_. Will eventually remove. | ||||
|  | ||||
|     // Obsolete names (will be removed) | ||||
| #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS | ||||
|     , ImGuiColumnsFlags_None                    = ImGuiOldColumnFlags_None, | ||||
|     ImGuiColumnsFlags_NoBorder                  = ImGuiOldColumnFlags_NoBorder, | ||||
|     ImGuiColumnsFlags_NoResize                  = ImGuiOldColumnFlags_NoResize, | ||||
|     ImGuiColumnsFlags_NoPreserveWidths          = ImGuiOldColumnFlags_NoPreserveWidths, | ||||
|     ImGuiColumnsFlags_NoForceWithinWindow       = ImGuiOldColumnFlags_NoForceWithinWindow, | ||||
|     ImGuiColumnsFlags_GrowParentContentsSize    = ImGuiOldColumnFlags_GrowParentContentsSize | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| struct ImGuiColumnData | ||||
| { | ||||
|     float               OffsetNorm;         // Column start offset, normalized 0.0 (far left) -> 1.0 (far right) | ||||
|     float               OffsetNormBeforeResize; | ||||
|     ImGuiColumnsFlags   Flags;              // Not exposed | ||||
|     ImGuiOldColumnFlags Flags;              // Not exposed | ||||
|     ImRect              ClipRect; | ||||
|  | ||||
|     ImGuiColumnData()   { memset(this, 0, sizeof(*this)); } | ||||
| @@ -1014,7 +1024,7 @@ struct ImGuiColumnData | ||||
| struct ImGuiColumns | ||||
| { | ||||
|     ImGuiID             ID; | ||||
|     ImGuiColumnsFlags   Flags; | ||||
|     ImGuiOldColumnFlags Flags; | ||||
|     bool                IsFirstFrame; | ||||
|     bool                IsBeingResized; | ||||
|     int                 Current; | ||||
| @@ -1954,7 +1964,7 @@ namespace ImGui | ||||
|  | ||||
|     // Internal Columns API (this is not exposed because we will encourage transitioning to the Tables API) | ||||
|     IMGUI_API void          SetWindowClipRectBeforeSetChannel(ImGuiWindow* window, const ImRect& clip_rect); | ||||
|     IMGUI_API void          BeginColumns(const char* str_id, int count, ImGuiColumnsFlags flags = 0); // setup number of columns. use an identifier to distinguish multiple column sets. close with EndColumns(). | ||||
|     IMGUI_API void          BeginColumns(const char* str_id, int count, ImGuiOldColumnFlags flags = 0); // setup number of columns. use an identifier to distinguish multiple column sets. close with EndColumns(). | ||||
|     IMGUI_API void          EndColumns();                                                               // close columns | ||||
|     IMGUI_API void          PushColumnClipRect(int column_index); | ||||
|     IMGUI_API void          PushColumnsBackground(); | ||||
|   | ||||
| @@ -7930,7 +7930,7 @@ static float GetDraggedColumnOffset(ImGuiColumns* columns, int column_index) | ||||
|  | ||||
|     float x = g.IO.MousePos.x - g.ActiveIdClickOffset.x + COLUMNS_HIT_RECT_HALF_WIDTH - window->Pos.x; | ||||
|     x = ImMax(x, ImGui::GetColumnOffset(column_index - 1) + g.Style.ColumnsMinSpacing); | ||||
|     if ((columns->Flags & ImGuiColumnsFlags_NoPreserveWidths)) | ||||
|     if ((columns->Flags & ImGuiOldColumnFlags_NoPreserveWidths)) | ||||
|         x = ImMin(x, ImGui::GetColumnOffset(column_index + 1) - g.Style.ColumnsMinSpacing); | ||||
|  | ||||
|     return x; | ||||
| @@ -7989,10 +7989,10 @@ void ImGui::SetColumnOffset(int column_index, float offset) | ||||
|         column_index = columns->Current; | ||||
|     IM_ASSERT(column_index < columns->Columns.Size); | ||||
|  | ||||
|     const bool preserve_width = !(columns->Flags & ImGuiColumnsFlags_NoPreserveWidths) && (column_index < columns->Count - 1); | ||||
|     const bool preserve_width = !(columns->Flags & ImGuiOldColumnFlags_NoPreserveWidths) && (column_index < columns->Count - 1); | ||||
|     const float width = preserve_width ? GetColumnWidthEx(columns, column_index, columns->IsBeingResized) : 0.0f; | ||||
|  | ||||
|     if (!(columns->Flags & ImGuiColumnsFlags_NoForceWithinWindow)) | ||||
|     if (!(columns->Flags & ImGuiOldColumnFlags_NoForceWithinWindow)) | ||||
|         offset = ImMin(offset, columns->OffMaxX - g.Style.ColumnsMinSpacing * (columns->Count - column_index)); | ||||
|     columns->Columns[column_index].OffsetNorm = GetColumnNormFromOffset(columns, offset - columns->OffMinX); | ||||
|  | ||||
| @@ -8074,7 +8074,7 @@ ImGuiID ImGui::GetColumnsID(const char* str_id, int columns_count) | ||||
|     return id; | ||||
| } | ||||
|  | ||||
| void ImGui::BeginColumns(const char* str_id, int columns_count, ImGuiColumnsFlags flags) | ||||
| void ImGui::BeginColumns(const char* str_id, int columns_count, ImGuiOldColumnFlags flags) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* window = GetCurrentWindow(); | ||||
| @@ -8220,16 +8220,16 @@ void ImGui::EndColumns() | ||||
|         columns->Splitter.Merge(window->DrawList); | ||||
|     } | ||||
|  | ||||
|     const ImGuiColumnsFlags flags = columns->Flags; | ||||
|     const ImGuiOldColumnFlags flags = columns->Flags; | ||||
|     columns->LineMaxY = ImMax(columns->LineMaxY, window->DC.CursorPos.y); | ||||
|     window->DC.CursorPos.y = columns->LineMaxY; | ||||
|     if (!(flags & ImGuiColumnsFlags_GrowParentContentsSize)) | ||||
|     if (!(flags & ImGuiOldColumnFlags_GrowParentContentsSize)) | ||||
|         window->DC.CursorMaxPos.x = columns->HostCursorMaxPosX;  // Restore cursor max pos, as columns don't grow parent | ||||
|  | ||||
|     // Draw columns borders and handle resize | ||||
|     // The IsBeingResized flag ensure we preserve pre-resize columns width so back-and-forth are not lossy | ||||
|     bool is_being_resized = false; | ||||
|     if (!(flags & ImGuiColumnsFlags_NoBorder) && !window->SkipItems) | ||||
|     if (!(flags & ImGuiOldColumnFlags_NoBorder) && !window->SkipItems) | ||||
|     { | ||||
|         // We clip Y boundaries CPU side because very long triangles are mishandled by some GPU drivers. | ||||
|         const float y1 = ImMax(columns->HostCursorPosY, window->ClipRect.Min.y); | ||||
| @@ -8247,12 +8247,12 @@ void ImGui::EndColumns() | ||||
|                 continue; | ||||
|  | ||||
|             bool hovered = false, held = false; | ||||
|             if (!(flags & ImGuiColumnsFlags_NoResize)) | ||||
|             if (!(flags & ImGuiOldColumnFlags_NoResize)) | ||||
|             { | ||||
|                 ButtonBehavior(column_hit_rect, column_id, &hovered, &held); | ||||
|                 if (hovered || held) | ||||
|                     g.MouseCursor = ImGuiMouseCursor_ResizeEW; | ||||
|                 if (held && !(column->Flags & ImGuiColumnsFlags_NoResize)) | ||||
|                 if (held && !(column->Flags & ImGuiOldColumnFlags_NoResize)) | ||||
|                     dragging_column = n; | ||||
|             } | ||||
|  | ||||
| @@ -8282,14 +8282,13 @@ void ImGui::EndColumns() | ||||
|     window->DC.CursorPos.x = IM_FLOOR(window->Pos.x + window->DC.Indent.x + window->DC.ColumnsOffset.x); | ||||
| } | ||||
|  | ||||
| // [2018-03: This is currently the only public API, while we are working on making BeginColumns/EndColumns user-facing] | ||||
| void ImGui::Columns(int columns_count, const char* id, bool border) | ||||
| { | ||||
|     ImGuiWindow* window = GetCurrentWindow(); | ||||
|     IM_ASSERT(columns_count >= 1); | ||||
|  | ||||
|     ImGuiColumnsFlags flags = (border ? 0 : ImGuiColumnsFlags_NoBorder); | ||||
|     //flags |= ImGuiColumnsFlags_NoPreserveWidths; // NB: Legacy behavior | ||||
|     ImGuiOldColumnFlags flags = (border ? 0 : ImGuiOldColumnFlags_NoBorder); | ||||
|     //flags |= ImGuiOldColumnFlags_NoPreserveWidths; // NB: Legacy behavior | ||||
|     ImGuiColumns* columns = window->DC.CurrentColumns; | ||||
|     if (columns != NULL && columns->Count == columns_count && columns->Flags == flags) | ||||
|         return; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ocornut
					ocornut