mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01: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,8 +1964,8 @@ 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          EndColumns();                                                             // close columns
 | 
			
		||||
    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();
 | 
			
		||||
    IMGUI_API void          PopColumnsBackground();
 | 
			
		||||
 
 | 
			
		||||
@@ -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