imgui-bindings 0.1.13-x86_64-linux → 0.1.15-x86_64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog +8 -0
- data/README.md +1 -1
- data/lib/imgui.rb +489 -204
- data/lib/imgui.x86_64.so +0 -0
- data/lib/imnodes.x86_64.so +0 -0
- metadata +3 -3
    
        data/lib/imgui.rb
    CHANGED
    
    | @@ -26,13 +26,16 @@ FFI.typedef :int, :ImGuiHoveredFlags | |
| 26 26 | 
             
            FFI.typedef :uint, :ImGuiID
         | 
| 27 27 | 
             
            FFI.typedef :int, :ImGuiInputFlags
         | 
| 28 28 | 
             
            FFI.typedef :int, :ImGuiInputTextFlags
         | 
| 29 | 
            +
            FFI.typedef :int, :ImGuiItemFlags
         | 
| 29 30 | 
             
            FFI.typedef :int, :ImGuiKeyChord
         | 
| 30 31 | 
             
            FFI.typedef :pointer, :ImGuiMemAllocFunc
         | 
| 31 32 | 
             
            FFI.typedef :pointer, :ImGuiMemFreeFunc
         | 
| 32 33 | 
             
            FFI.typedef :int, :ImGuiMouseButton
         | 
| 33 34 | 
             
            FFI.typedef :int, :ImGuiMouseCursor
         | 
| 35 | 
            +
            FFI.typedef :int, :ImGuiMultiSelectFlags
         | 
| 34 36 | 
             
            FFI.typedef :int, :ImGuiPopupFlags
         | 
| 35 37 | 
             
            FFI.typedef :int, :ImGuiSelectableFlags
         | 
| 38 | 
            +
            FFI.typedef :int64, :ImGuiSelectionUserData
         | 
| 36 39 | 
             
            FFI.typedef :int, :ImGuiSliderFlags
         | 
| 37 40 | 
             
            FFI.typedef :int, :ImGuiStyleVar
         | 
| 38 41 | 
             
            FFI.typedef :int, :ImGuiTabBarFlags
         | 
| @@ -61,6 +64,46 @@ FFI.typedef :int, :ImGuiKey | |
| 61 64 | 
             
            FFI.typedef :int, :ImGuiMouseSource
         | 
| 62 65 | 
             
            FFI.typedef :uchar, :ImGuiSortDirection
         | 
| 63 66 |  | 
| 67 | 
            +
            FFI.typedef :int32, :ImDrawFlags_
         | 
| 68 | 
            +
            FFI.typedef :int32, :ImDrawListFlags_
         | 
| 69 | 
            +
            FFI.typedef :int32, :ImFontAtlasFlags_
         | 
| 70 | 
            +
            FFI.typedef :int32, :ImGuiBackendFlags_
         | 
| 71 | 
            +
            FFI.typedef :int32, :ImGuiButtonFlags_
         | 
| 72 | 
            +
            FFI.typedef :int32, :ImGuiChildFlags_
         | 
| 73 | 
            +
            FFI.typedef :int32, :ImGuiCol_
         | 
| 74 | 
            +
            FFI.typedef :int32, :ImGuiColorEditFlags_
         | 
| 75 | 
            +
            FFI.typedef :int32, :ImGuiComboFlags_
         | 
| 76 | 
            +
            FFI.typedef :int32, :ImGuiCond_
         | 
| 77 | 
            +
            FFI.typedef :int32, :ImGuiConfigFlags_
         | 
| 78 | 
            +
            FFI.typedef :int32, :ImGuiDataType_
         | 
| 79 | 
            +
            FFI.typedef :int32, :ImGuiDir
         | 
| 80 | 
            +
            FFI.typedef :int32, :ImGuiDragDropFlags_
         | 
| 81 | 
            +
            FFI.typedef :int32, :ImGuiFocusedFlags_
         | 
| 82 | 
            +
            FFI.typedef :int32, :ImGuiHoveredFlags_
         | 
| 83 | 
            +
            FFI.typedef :int32, :ImGuiInputFlags_
         | 
| 84 | 
            +
            FFI.typedef :int32, :ImGuiInputTextFlags_
         | 
| 85 | 
            +
            FFI.typedef :int32, :ImGuiItemFlags_
         | 
| 86 | 
            +
            FFI.typedef :int32, :ImGuiKey
         | 
| 87 | 
            +
            FFI.typedef :int32, :ImGuiMouseButton_
         | 
| 88 | 
            +
            FFI.typedef :int32, :ImGuiMouseCursor_
         | 
| 89 | 
            +
            FFI.typedef :int32, :ImGuiMouseSource
         | 
| 90 | 
            +
            FFI.typedef :int32, :ImGuiMultiSelectFlags_
         | 
| 91 | 
            +
            FFI.typedef :int32, :ImGuiPopupFlags_
         | 
| 92 | 
            +
            FFI.typedef :int32, :ImGuiSelectableFlags_
         | 
| 93 | 
            +
            FFI.typedef :int32, :ImGuiSelectionRequestType
         | 
| 94 | 
            +
            FFI.typedef :int32, :ImGuiSliderFlags_
         | 
| 95 | 
            +
            FFI.typedef :int32, :ImGuiSortDirection
         | 
| 96 | 
            +
            FFI.typedef :int32, :ImGuiStyleVar_
         | 
| 97 | 
            +
            FFI.typedef :int32, :ImGuiTabBarFlags_
         | 
| 98 | 
            +
            FFI.typedef :int32, :ImGuiTabItemFlags_
         | 
| 99 | 
            +
            FFI.typedef :int32, :ImGuiTableBgTarget_
         | 
| 100 | 
            +
            FFI.typedef :int32, :ImGuiTableColumnFlags_
         | 
| 101 | 
            +
            FFI.typedef :int32, :ImGuiTableFlags_
         | 
| 102 | 
            +
            FFI.typedef :int32, :ImGuiTableRowFlags_
         | 
| 103 | 
            +
            FFI.typedef :int32, :ImGuiTreeNodeFlags_
         | 
| 104 | 
            +
            FFI.typedef :int32, :ImGuiViewportFlags_
         | 
| 105 | 
            +
            FFI.typedef :int32, :ImGuiWindowFlags_
         | 
| 106 | 
            +
             | 
| 64 107 | 
             
            # ImDrawFlags_
         | 
| 65 108 | 
             
            # Flags for ImDrawList functions
         | 
| 66 109 | 
             
            # (Legacy: bit 0 must always correspond to ImDrawFlags_Closed to be backward compatible with old API using a bool. Bits 1..3 must be unused)
         | 
| @@ -109,11 +152,11 @@ ImGuiButtonFlags_None = 0              # 0 | |
| 109 152 | 
             
            ImGuiButtonFlags_MouseButtonLeft = 1   # 1 << 0 # React on left mouse button (default)
         | 
| 110 153 | 
             
            ImGuiButtonFlags_MouseButtonRight = 2  # 1 << 1 # React on right mouse button
         | 
| 111 154 | 
             
            ImGuiButtonFlags_MouseButtonMiddle = 4 # 1 << 2 # React on center mouse button
         | 
| 112 | 
            -
            ImGuiButtonFlags_MouseButtonMask_ = 7  # ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight | ImGuiButtonFlags_MouseButtonMiddle
         | 
| 155 | 
            +
            ImGuiButtonFlags_MouseButtonMask_ = 7  # ImGuiButtonFlags_MouseButtonLeft | ImGuiButtonFlags_MouseButtonRight | ImGuiButtonFlags_MouseButtonMiddle # [Internal]
         | 
| 113 156 |  | 
| 114 157 | 
             
            # ImGuiChildFlags_
         | 
| 115 158 | 
             
            # Flags for ImGui::BeginChild()
         | 
| 116 | 
            -
            # (Legacy: bit 0 must always correspond to  | 
| 159 | 
            +
            # (Legacy: bit 0 must always correspond to ImGuiChildFlags_Borders to be backward compatible with old API using 'bool border = false'.
         | 
| 117 160 | 
             
            # About using AutoResizeX/AutoResizeY flags:
         | 
| 118 161 | 
             
            # - May be combined with SetNextWindowSizeConstraints() to set a min/max size for each axis (see "Demo->Child->Auto-resize with Constraints").
         | 
| 119 162 | 
             
            # - Size measurement for a given axis is only performed when the child window is within visible boundaries, or is just appearing.
         | 
| @@ -122,7 +165,7 @@ ImGuiButtonFlags_MouseButtonMask_ = 7  # ImGuiButtonFlags_MouseButtonLeft | ImGu | |
| 122 165 | 
             
            #   - You may also use ImGuiChildFlags_AlwaysAutoResize to force an update even when child window is not in view.
         | 
| 123 166 | 
             
            #     HOWEVER PLEASE UNDERSTAND THAT DOING SO WILL PREVENT BeginChild() FROM EVER RETURNING FALSE, disabling benefits of coarse clipping.
         | 
| 124 167 | 
             
            ImGuiChildFlags_None = 0                   # 0
         | 
| 125 | 
            -
             | 
| 168 | 
            +
            ImGuiChildFlags_Borders = 1                # 1 << 0 # Show an outer border and enable WindowPadding. (IMPORTANT: this is always == 1 == true for legacy reason)
         | 
| 126 169 | 
             
            ImGuiChildFlags_AlwaysUseWindowPadding = 2 # 1 << 1 # Pad with style.WindowPadding even if no border are drawn (no padding by default for non-bordered child windows because it makes more sense)
         | 
| 127 170 | 
             
            ImGuiChildFlags_ResizeX = 4                # 1 << 2 # Allow resize from right border (layout direction). Enable .ini saving (unless ImGuiWindowFlags_NoSavedSettings passed to window flags)
         | 
| 128 171 | 
             
            ImGuiChildFlags_ResizeY = 8                # 1 << 3 # Allow resize from bottom border (layout direction). "
         | 
| @@ -130,7 +173,7 @@ ImGuiChildFlags_AutoResizeX = 16           # 1 << 4 # Enable auto-resizing width | |
| 130 173 | 
             
            ImGuiChildFlags_AutoResizeY = 32           # 1 << 5 # Enable auto-resizing height. Read "IMPORTANT: Size measurement" details above.
         | 
| 131 174 | 
             
            ImGuiChildFlags_AlwaysAutoResize = 64      # 1 << 6 # Combined with AutoResizeX/AutoResizeY. Always measure size even when child is hidden, always return true, always disable clipping optimization! NOT RECOMMENDED.
         | 
| 132 175 | 
             
            ImGuiChildFlags_FrameStyle = 128           # 1 << 7 # Style the child window like a framed item: use FrameBg, FrameRounding, FrameBorderSize, FramePadding instead of ChildBg, ChildRounding, ChildBorderSize, WindowPadding.
         | 
| 133 | 
            -
            ImGuiChildFlags_NavFlattened = 256         # 1 << 8
         | 
| 176 | 
            +
            ImGuiChildFlags_NavFlattened = 256         # 1 << 8 # [BETA] Share focus scope, allow gamepad/keyboard navigation to cross over parent border to this child or between sibling child windows.
         | 
| 134 177 |  | 
| 135 178 | 
             
            # ImGuiCol_
         | 
| 136 179 | 
             
            # Enumeration for PushStyleColor() / PopStyleColor()
         | 
| @@ -167,13 +210,13 @@ ImGuiCol_SeparatorActive = 29           # 29 | |
| 167 210 | 
             
            ImGuiCol_ResizeGrip = 30                # 30 # Resize grip in lower-right and lower-left corners of windows.
         | 
| 168 211 | 
             
            ImGuiCol_ResizeGripHovered = 31         # 31
         | 
| 169 212 | 
             
            ImGuiCol_ResizeGripActive = 32          # 32
         | 
| 170 | 
            -
            ImGuiCol_TabHovered = 33                # 33
         | 
| 171 | 
            -
            ImGuiCol_Tab = 34                       # 34 #  | 
| 172 | 
            -
            ImGuiCol_TabSelected = 35               # 35
         | 
| 173 | 
            -
            ImGuiCol_TabSelectedOverline = 36       # 36
         | 
| 174 | 
            -
            ImGuiCol_TabDimmed = 37                 # 37
         | 
| 175 | 
            -
            ImGuiCol_TabDimmedSelected = 38         # 38
         | 
| 176 | 
            -
            ImGuiCol_TabDimmedSelectedOverline = 39 # 39
         | 
| 213 | 
            +
            ImGuiCol_TabHovered = 33                # 33 # Tab background, when hovered
         | 
| 214 | 
            +
            ImGuiCol_Tab = 34                       # 34 # Tab background, when tab-bar is focused & tab is unselected
         | 
| 215 | 
            +
            ImGuiCol_TabSelected = 35               # 35 # Tab background, when tab-bar is focused & tab is selected
         | 
| 216 | 
            +
            ImGuiCol_TabSelectedOverline = 36       # 36 # Tab horizontal overline, when tab-bar is focused & tab is selected
         | 
| 217 | 
            +
            ImGuiCol_TabDimmed = 37                 # 37 # Tab background, when tab-bar is unfocused & tab is unselected
         | 
| 218 | 
            +
            ImGuiCol_TabDimmedSelected = 38         # 38 # Tab background, when tab-bar is unfocused & tab is selected
         | 
| 219 | 
            +
            ImGuiCol_TabDimmedSelectedOverline = 39 # 39 #..horizontal overline, when tab-bar is unfocused & tab is selected
         | 
| 177 220 | 
             
            ImGuiCol_PlotLines = 40                 # 40
         | 
| 178 221 | 
             
            ImGuiCol_PlotLinesHovered = 41          # 41
         | 
| 179 222 | 
             
            ImGuiCol_PlotHistogram = 42             # 42
         | 
| @@ -183,7 +226,7 @@ ImGuiCol_TableBorderStrong = 45         # 45 # Table outer and header borders (p | |
| 183 226 | 
             
            ImGuiCol_TableBorderLight = 46          # 46 # Table inner borders (prefer using Alpha=1.0 here)
         | 
| 184 227 | 
             
            ImGuiCol_TableRowBg = 47                # 47 # Table row background (even rows)
         | 
| 185 228 | 
             
            ImGuiCol_TableRowBgAlt = 48             # 48 # Table row background (odd rows)
         | 
| 186 | 
            -
            ImGuiCol_TextLink = 49                  # 49
         | 
| 229 | 
            +
            ImGuiCol_TextLink = 49                  # 49 # Hyperlink color
         | 
| 187 230 | 
             
            ImGuiCol_TextSelectedBg = 50            # 50
         | 
| 188 231 | 
             
            ImGuiCol_DragDropTarget = 51            # 51 # Rectangle highlighting a drop target
         | 
| 189 232 | 
             
            ImGuiCol_NavHighlight = 52              # 52 # Gamepad/keyboard: current highlighted item
         | 
| @@ -254,9 +297,9 @@ ImGuiConfigFlags_NavEnableKeyboard = 1    # 1 << 0 # Master keyboard navigation | |
| 254 297 | 
             
            ImGuiConfigFlags_NavEnableGamepad = 2     # 1 << 1 # Master gamepad navigation enable flag. Backend also needs to set ImGuiBackendFlags_HasGamepad.
         | 
| 255 298 | 
             
            ImGuiConfigFlags_NavEnableSetMousePos = 4 # 1 << 2 # Instruct navigation to move the mouse cursor. May be useful on TV/console systems where moving a virtual mouse is awkward. Will update io.MousePos and set io.WantSetMousePos=true. If enabled you MUST honor io.WantSetMousePos requests in your backend, otherwise ImGui will react as if the mouse is jumping around back and forth.
         | 
| 256 299 | 
             
            ImGuiConfigFlags_NavNoCaptureKeyboard = 8 # 1 << 3 # Instruct navigation to not set the io.WantCaptureKeyboard flag when io.NavActive is set.
         | 
| 257 | 
            -
            ImGuiConfigFlags_NoMouse = 16             # 1 << 4 # Instruct imgui to  | 
| 300 | 
            +
            ImGuiConfigFlags_NoMouse = 16             # 1 << 4 # Instruct dear imgui to disable mouse inputs and interactions.
         | 
| 258 301 | 
             
            ImGuiConfigFlags_NoMouseCursorChange = 32 # 1 << 5 # Instruct backend to not alter mouse cursor shape and visibility. Use if the backend cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor. You may want to honor requests from imgui by reading GetMouseCursor() yourself instead.
         | 
| 259 | 
            -
            ImGuiConfigFlags_NoKeyboard = 64          # 1 << 6
         | 
| 302 | 
            +
            ImGuiConfigFlags_NoKeyboard = 64          # 1 << 6 # Instruct dear imgui to disable keyboard inputs and interactions. This is done by ignoring keyboard events and clearing existing states.
         | 
| 260 303 | 
             
            ImGuiConfigFlags_IsSRGB = 1048576         # 1 << 20 # Application is SRGB-aware.
         | 
| 261 304 | 
             
            ImGuiConfigFlags_IsTouchScreen = 2097152  # 1 << 21 # Application is using a touch screen instead of a mouse.
         | 
| 262 305 |  | 
| @@ -272,9 +315,11 @@ ImGuiDataType_S64 = 6    # 6 # long long / __int64 | |
| 272 315 | 
             
            ImGuiDataType_U64 = 7    # 7 # unsigned long long / unsigned __int64
         | 
| 273 316 | 
             
            ImGuiDataType_Float = 8  # 8 # float
         | 
| 274 317 | 
             
            ImGuiDataType_Double = 9 # 9 # double
         | 
| 275 | 
            -
             | 
| 318 | 
            +
            ImGuiDataType_Bool = 10  # 10 # bool (provided for user convenience, not supported by scalar widgets)
         | 
| 319 | 
            +
            ImGuiDataType_COUNT = 11 # 11
         | 
| 276 320 |  | 
| 277 321 | 
             
            # ImGuiDir
         | 
| 322 | 
            +
            # A cardinal direction
         | 
| 278 323 | 
             
            ImGuiDir_None = -1 # -1
         | 
| 279 324 | 
             
            ImGuiDir_Left = 0  # 0
         | 
| 280 325 | 
             
            ImGuiDir_Right = 1 # 1
         | 
| @@ -290,9 +335,9 @@ ImGuiDragDropFlags_SourceNoDisableHover = 2       # 1 << 1 # By default, when dr | |
| 290 335 | 
             
            ImGuiDragDropFlags_SourceNoHoldToOpenOthers = 4   # 1 << 2 # Disable the behavior that allows to open tree nodes and collapsing header by holding over them while dragging a source item.
         | 
| 291 336 | 
             
            ImGuiDragDropFlags_SourceAllowNullID = 8          # 1 << 3 # Allow items such as Text(), Image() that have no unique identifier to be used as drag source, by manufacturing a temporary identifier based on their window-relative position. This is extremely unusual within the dear imgui ecosystem and so we made it explicit.
         | 
| 292 337 | 
             
            ImGuiDragDropFlags_SourceExtern = 16              # 1 << 4 # External source (from outside of dear imgui), won't attempt to read current item/window info. Will always return true. Only one Extern source can be active simultaneously.
         | 
| 293 | 
            -
            ImGuiDragDropFlags_PayloadAutoExpire = 32         # 1 << 5
         | 
| 294 | 
            -
            ImGuiDragDropFlags_PayloadNoCrossContext = 64     # 1 << 6
         | 
| 295 | 
            -
            ImGuiDragDropFlags_PayloadNoCrossProcess = 128    # 1 << 7
         | 
| 338 | 
            +
            ImGuiDragDropFlags_PayloadAutoExpire = 32         # 1 << 5 # Automatically expire the payload if the source cease to be submitted (otherwise payloads are persisting while being dragged)
         | 
| 339 | 
            +
            ImGuiDragDropFlags_PayloadNoCrossContext = 64     # 1 << 6 # Hint to specify that the payload may not be copied outside current dear imgui context.
         | 
| 340 | 
            +
            ImGuiDragDropFlags_PayloadNoCrossProcess = 128    # 1 << 7 # Hint to specify that the payload may not be copied outside current process.
         | 
| 296 341 | 
             
            ImGuiDragDropFlags_AcceptBeforeDelivery = 1024    # 1 << 10 # AcceptDragDropPayload() will returns true even before the mouse button is released. You can then call IsDelivery() to test if the payload needs to be delivered.
         | 
| 297 342 | 
             
            ImGuiDragDropFlags_AcceptNoDrawDefaultRect = 2048 # 1 << 11 # Do not draw the default highlight rectangle when hovering over target.
         | 
| 298 343 | 
             
            ImGuiDragDropFlags_AcceptNoPreviewTooltip = 4096  # 1 << 12 # Request hiding the BeginDragDropSource tooltip from the BeginDragDropTarget site.
         | 
| @@ -333,17 +378,20 @@ ImGuiHoveredFlags_DelayNormal = 65536                # 1 << 16 # IsItemHovered() | |
| 333 378 | 
             
            ImGuiHoveredFlags_NoSharedDelay = 131072             # 1 << 17 # IsItemHovered() only: Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays)
         | 
| 334 379 |  | 
| 335 380 | 
             
            # ImGuiInputFlags_
         | 
| 381 | 
            +
            # Flags for Shortcut(), SetNextItemShortcut(),
         | 
| 382 | 
            +
            # (and for upcoming extended versions of IsKeyPressed(), IsMouseClicked(), Shortcut(), SetKeyOwner(), SetItemKeyOwner() that are still in imgui_internal.h)
         | 
| 383 | 
            +
            # Don't mistake with ImGuiInputTextFlags! (which is for ImGui::InputText() function)
         | 
| 336 384 | 
             
            ImGuiInputFlags_None = 0                     # 0
         | 
| 337 | 
            -
            ImGuiInputFlags_Repeat = 1                   # 1 << 0
         | 
| 338 | 
            -
            ImGuiInputFlags_RouteActive = 1024           # 1 << 10
         | 
| 339 | 
            -
            ImGuiInputFlags_RouteFocused = 2048          # 1 << 11
         | 
| 340 | 
            -
            ImGuiInputFlags_RouteGlobal = 4096           # 1 << 12
         | 
| 341 | 
            -
            ImGuiInputFlags_RouteAlways = 8192           # 1 << 13
         | 
| 342 | 
            -
            ImGuiInputFlags_RouteOverFocused = 16384     # 1 << 14
         | 
| 343 | 
            -
            ImGuiInputFlags_RouteOverActive = 32768      # 1 << 15
         | 
| 344 | 
            -
            ImGuiInputFlags_RouteUnlessBgFocused = 65536 # 1 << 16
         | 
| 345 | 
            -
            ImGuiInputFlags_RouteFromRootWindow = 131072 # 1 << 17
         | 
| 346 | 
            -
            ImGuiInputFlags_Tooltip = 262144             # 1 << 18
         | 
| 385 | 
            +
            ImGuiInputFlags_Repeat = 1                   # 1 << 0 # Enable repeat. Return true on successive repeats. Default for legacy IsKeyPressed(). NOT Default for legacy IsMouseClicked(). MUST BE == 1.
         | 
| 386 | 
            +
            ImGuiInputFlags_RouteActive = 1024           # 1 << 10 # Route to active item only.
         | 
| 387 | 
            +
            ImGuiInputFlags_RouteFocused = 2048          # 1 << 11 # Route to windows in the focus stack (DEFAULT). Deep-most focused window takes inputs. Active item takes inputs over deep-most focused window.
         | 
| 388 | 
            +
            ImGuiInputFlags_RouteGlobal = 4096           # 1 << 12 # Global route (unless a focused window or active item registered the route).
         | 
| 389 | 
            +
            ImGuiInputFlags_RouteAlways = 8192           # 1 << 13 # Do not register route, poll keys directly.
         | 
| 390 | 
            +
            ImGuiInputFlags_RouteOverFocused = 16384     # 1 << 14 # Option: global route: higher priority than focused route (unless active item in focused route).
         | 
| 391 | 
            +
            ImGuiInputFlags_RouteOverActive = 32768      # 1 << 15 # Option: global route: higher priority than active item. Unlikely you need to use that: will interfere with every active items, e.g. CTRL+A registered by InputText will be overridden by this. May not be fully honored as user/internal code is likely to always assume they can access keys when active.
         | 
| 392 | 
            +
            ImGuiInputFlags_RouteUnlessBgFocused = 65536 # 1 << 16 # Option: global route: will not be applied if underlying background/void is focused (== no Dear ImGui windows are focused). Useful for overlay applications.
         | 
| 393 | 
            +
            ImGuiInputFlags_RouteFromRootWindow = 131072 # 1 << 17 # Option: route evaluated from the point of view of root window rather than current window.
         | 
| 394 | 
            +
            ImGuiInputFlags_Tooltip = 262144             # 1 << 18 # Automatically display a tooltip when hovering item [BETA] Unsure of right api (opt-in/opt-out)
         | 
| 347 395 |  | 
| 348 396 | 
             
            # ImGuiInputTextFlags_
         | 
| 349 397 | 
             
            # Flags for ImGui::InputText()
         | 
| @@ -357,13 +405,13 @@ ImGuiInputTextFlags_CharsNoBlank = 16            # 1 << 4 # Filter out spaces, t | |
| 357 405 | 
             
            ImGuiInputTextFlags_AllowTabInput = 32           # 1 << 5 # Pressing TAB input a '\t' character into the text field
         | 
| 358 406 | 
             
            ImGuiInputTextFlags_EnterReturnsTrue = 64        # 1 << 6 # Return 'true' when Enter is pressed (as opposed to every time the value was modified). Consider looking at the IsItemDeactivatedAfterEdit() function.
         | 
| 359 407 | 
             
            ImGuiInputTextFlags_EscapeClearsAll = 128        # 1 << 7 # Escape key clears content if not empty, and deactivate otherwise (contrast to default behavior of Escape to revert)
         | 
| 360 | 
            -
            ImGuiInputTextFlags_CtrlEnterForNewLine = 256    # 1 << 8 # In multi-line mode,  | 
| 408 | 
            +
            ImGuiInputTextFlags_CtrlEnterForNewLine = 256    # 1 << 8 # In multi-line mode, validate with Enter, add new line with Ctrl+Enter (default is opposite: validate with Ctrl+Enter, add line with Enter).
         | 
| 361 409 | 
             
            ImGuiInputTextFlags_ReadOnly = 512               # 1 << 9 # Read-only mode
         | 
| 362 | 
            -
            ImGuiInputTextFlags_Password = 1024              # 1 << 10 # Password mode, display all characters as '*'
         | 
| 410 | 
            +
            ImGuiInputTextFlags_Password = 1024              # 1 << 10 # Password mode, display all characters as '*', disable copy
         | 
| 363 411 | 
             
            ImGuiInputTextFlags_AlwaysOverwrite = 2048       # 1 << 11 # Overwrite mode
         | 
| 364 412 | 
             
            ImGuiInputTextFlags_AutoSelectAll = 4096         # 1 << 12 # Select entire text when first taking mouse focus
         | 
| 365 | 
            -
            ImGuiInputTextFlags_ParseEmptyRefVal = 8192      # 1 << 13
         | 
| 366 | 
            -
            ImGuiInputTextFlags_DisplayEmptyRefVal = 16384   # 1 << 14
         | 
| 413 | 
            +
            ImGuiInputTextFlags_ParseEmptyRefVal = 8192      # 1 << 13 # InputFloat(), InputInt(), InputScalar() etc. only: parse empty string as zero value.
         | 
| 414 | 
            +
            ImGuiInputTextFlags_DisplayEmptyRefVal = 16384   # 1 << 14 # InputFloat(), InputInt(), InputScalar() etc. only: when value is zero, do not display it. Generally used with ImGuiInputTextFlags_ParseEmptyRefVal.
         | 
| 367 415 | 
             
            ImGuiInputTextFlags_NoHorizontalScroll = 32768   # 1 << 15 # Disable following the cursor horizontally
         | 
| 368 416 | 
             
            ImGuiInputTextFlags_NoUndoRedo = 65536           # 1 << 16 # Disable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID().
         | 
| 369 417 | 
             
            ImGuiInputTextFlags_CallbackCompletion = 131072  # 1 << 17 # Callback on pressing TAB (for completion handling)
         | 
| @@ -373,6 +421,16 @@ ImGuiInputTextFlags_CallbackCharFilter = 1048576 # 1 << 20 # Callback on charact | |
| 373 421 | 
             
            ImGuiInputTextFlags_CallbackResize = 2097152     # 1 << 21 # Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow. Notify when the string wants to be resized (for string types which hold a cache of their Size). You will be provided a new BufSize in the callback and NEED to honor it. (see misc/cpp/imgui_stdlib.h for an example of using this)
         | 
| 374 422 | 
             
            ImGuiInputTextFlags_CallbackEdit = 4194304       # 1 << 22 # Callback on any edit (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active)
         | 
| 375 423 |  | 
| 424 | 
            +
            # ImGuiItemFlags_
         | 
| 425 | 
            +
            # Flags for ImGui::PushItemFlag()
         | 
| 426 | 
            +
            # (Those are shared by all items)
         | 
| 427 | 
            +
            ImGuiItemFlags_None = 0              # 0 # (Default)
         | 
| 428 | 
            +
            ImGuiItemFlags_NoTabStop = 1         # 1 << 0 # false    // Disable keyboard tabbing. This is a "lighter" version of ImGuiItemFlags_NoNav.
         | 
| 429 | 
            +
            ImGuiItemFlags_NoNav = 2             # 1 << 1 # false    // Disable any form of focusing (keyboard/gamepad directional navigation and SetKeyboardFocusHere() calls).
         | 
| 430 | 
            +
            ImGuiItemFlags_NoNavDefaultFocus = 4 # 1 << 2 # false    // Disable item being a candidate for default focus (e.g. used by title bar items).
         | 
| 431 | 
            +
            ImGuiItemFlags_ButtonRepeat = 8      # 1 << 3 # false    // Any button-like behavior will have repeat mode enabled (based on io.KeyRepeatDelay and io.KeyRepeatRate values). Note that you can also call IsItemActive() after any button to tell if it is being held.
         | 
| 432 | 
            +
            ImGuiItemFlags_AutoClosePopups = 16  # 1 << 4 # true     // MenuItem()/Selectable() automatically close their parent popup window.
         | 
| 433 | 
            +
             | 
| 376 434 | 
             
            # ImGuiKey
         | 
| 377 435 | 
             
            # A key identifier (ImGuiKey_XXX or ImGuiMod_XXX value): can represent Keyboard, Mouse and Gamepad values.
         | 
| 378 436 | 
             
            # All our named keys are >= 512. Keys value 0 to 511 are left unused as legacy native/opaque key values (< 1.87).
         | 
| @@ -537,11 +595,11 @@ ImGuiKey_ReservedForModAlt = 664   # 664 | |
| 537 595 | 
             
            ImGuiKey_ReservedForModSuper = 665 # 665
         | 
| 538 596 | 
             
            ImGuiKey_COUNT = 666               # 666
         | 
| 539 597 | 
             
            ImGuiMod_None = 0                  # 0
         | 
| 540 | 
            -
            ImGuiMod_Ctrl = 4096               # 1 << 12 # Ctrl
         | 
| 598 | 
            +
            ImGuiMod_Ctrl = 4096               # 1 << 12 # Ctrl (non-macOS), Cmd (macOS)
         | 
| 541 599 | 
             
            ImGuiMod_Shift = 8192              # 1 << 13 # Shift
         | 
| 542 600 | 
             
            ImGuiMod_Alt = 16384               # 1 << 14 # Option/Menu
         | 
| 543 | 
            -
            ImGuiMod_Super = 32768             # 1 << 15 #  | 
| 544 | 
            -
            ImGuiMod_Mask_ = 61440             # 0xF000 #  | 
| 601 | 
            +
            ImGuiMod_Super = 32768             # 1 << 15 # Windows/Super (non-macOS), Ctrl (macOS)
         | 
| 602 | 
            +
            ImGuiMod_Mask_ = 61440             # 0xF000 # 4-bits
         | 
| 545 603 | 
             
            ImGuiKey_NamedKey_BEGIN = 512      # 512
         | 
| 546 604 | 
             
            ImGuiKey_NamedKey_END = 666        # ImGuiKey_COUNT
         | 
| 547 605 | 
             
            ImGuiKey_NamedKey_COUNT = 154      # ImGuiKey_NamedKey_END - ImGuiKey_NamedKey_BEGIN
         | 
| @@ -581,6 +639,26 @@ ImGuiMouseSource_TouchScreen = 1 # 1 # Input is coming from a touch screen (no h | |
| 581 639 | 
             
            ImGuiMouseSource_Pen = 2         # 2 # Input is coming from a pressure/magnetic pen (often used in conjunction with high-sampling rates).
         | 
| 582 640 | 
             
            ImGuiMouseSource_COUNT = 3       # 3
         | 
| 583 641 |  | 
| 642 | 
            +
            # ImGuiMultiSelectFlags_
         | 
| 643 | 
            +
            # Flags for BeginMultiSelect()
         | 
| 644 | 
            +
            ImGuiMultiSelectFlags_None = 0                     # 0
         | 
| 645 | 
            +
            ImGuiMultiSelectFlags_SingleSelect = 1             # 1 << 0 # Disable selecting more than one item. This is available to allow single-selection code to share same code/logic if desired. It essentially disables the main purpose of BeginMultiSelect() tho!
         | 
| 646 | 
            +
            ImGuiMultiSelectFlags_NoSelectAll = 2              # 1 << 1 # Disable CTRL+A shortcut to select all.
         | 
| 647 | 
            +
            ImGuiMultiSelectFlags_NoRangeSelect = 4            # 1 << 2 # Disable Shift+selection mouse/keyboard support (useful for unordered 2D selection). With BoxSelect is also ensure contiguous SetRange requests are not combined into one. This allows not handling interpolation in SetRange requests.
         | 
| 648 | 
            +
            ImGuiMultiSelectFlags_NoAutoSelect = 8             # 1 << 3 # Disable selecting items when navigating (useful for e.g. supporting range-select in a list of checkboxes).
         | 
| 649 | 
            +
            ImGuiMultiSelectFlags_NoAutoClear = 16             # 1 << 4 # Disable clearing selection when navigating or selecting another one (generally used with ImGuiMultiSelectFlags_NoAutoSelect. useful for e.g. supporting range-select in a list of checkboxes).
         | 
| 650 | 
            +
            ImGuiMultiSelectFlags_NoAutoClearOnReselect = 32   # 1 << 5 # Disable clearing selection when clicking/selecting an already selected item.
         | 
| 651 | 
            +
            ImGuiMultiSelectFlags_BoxSelect1d = 64             # 1 << 6 # Enable box-selection with same width and same x pos items (e.g. full row Selectable()). Box-selection works better with little bit of spacing between items hit-box in order to be able to aim at empty space.
         | 
| 652 | 
            +
            ImGuiMultiSelectFlags_BoxSelect2d = 128            # 1 << 7 # Enable box-selection with varying width or varying x pos items support (e.g. different width labels, or 2D layout/grid). This is slower: alters clipping logic so that e.g. horizontal movements will update selection of normally clipped items.
         | 
| 653 | 
            +
            ImGuiMultiSelectFlags_BoxSelectNoScroll = 256      # 1 << 8 # Disable scrolling when box-selecting near edges of scope.
         | 
| 654 | 
            +
            ImGuiMultiSelectFlags_ClearOnEscape = 512          # 1 << 9 # Clear selection when pressing Escape while scope is focused.
         | 
| 655 | 
            +
            ImGuiMultiSelectFlags_ClearOnClickVoid = 1024      # 1 << 10 # Clear selection when clicking on empty location within scope.
         | 
| 656 | 
            +
            ImGuiMultiSelectFlags_ScopeWindow = 2048           # 1 << 11 # Scope for _BoxSelect and _ClearOnClickVoid is whole window (Default). Use if BeginMultiSelect() covers a whole window or used a single time in same window.
         | 
| 657 | 
            +
            ImGuiMultiSelectFlags_ScopeRect = 4096             # 1 << 12 # Scope for _BoxSelect and _ClearOnClickVoid is rectangle encompassing BeginMultiSelect()/EndMultiSelect(). Use if BeginMultiSelect() is called multiple times in same window.
         | 
| 658 | 
            +
            ImGuiMultiSelectFlags_SelectOnClick = 8192         # 1 << 13 # Apply selection on mouse down when clicking on unselected item. (Default)
         | 
| 659 | 
            +
            ImGuiMultiSelectFlags_SelectOnClickRelease = 16384 # 1 << 14 # Apply selection on mouse release when clicking an unselected item. Allow dragging an unselected item without altering selection.
         | 
| 660 | 
            +
            ImGuiMultiSelectFlags_NavWrapX = 65536             # 1 << 16 # [Temporary] Enable navigation wrapping on X axis. Provided as a convenience because we don't have a design for the general Nav API for this yet. When the more general feature be public we may obsolete this flag in favor of new one.
         | 
| 661 | 
            +
             | 
| 584 662 | 
             
            # ImGuiPopupFlags_
         | 
| 585 663 | 
             
            # Flags for OpenPopup*(), BeginPopupContext*(), IsPopupOpen() functions.
         | 
| 586 664 | 
             
            # - To be backward compatible with older API which took an 'int mouse_button = 1' argument instead of 'ImGuiPopupFlags flags',
         | 
| @@ -605,12 +683,19 @@ ImGuiPopupFlags_AnyPopup = 3072               # ImGuiPopupFlags_AnyPopupId | ImG | |
| 605 683 |  | 
| 606 684 | 
             
            # ImGuiSelectableFlags_
         | 
| 607 685 | 
             
            # Flags for ImGui::Selectable()
         | 
| 608 | 
            -
            ImGuiSelectableFlags_None = 0 | 
| 609 | 
            -
             | 
| 610 | 
            -
            ImGuiSelectableFlags_SpanAllColumns = 2 | 
| 611 | 
            -
            ImGuiSelectableFlags_AllowDoubleClick = 4 | 
| 612 | 
            -
            ImGuiSelectableFlags_Disabled = 8 | 
| 613 | 
            -
            ImGuiSelectableFlags_AllowOverlap = 16 | 
| 686 | 
            +
            ImGuiSelectableFlags_None = 0              # 0
         | 
| 687 | 
            +
            ImGuiSelectableFlags_NoAutoClosePopups = 1 # 1 << 0 # Clicking this doesn't close parent popup window (overrides ImGuiItemFlags_AutoClosePopups)
         | 
| 688 | 
            +
            ImGuiSelectableFlags_SpanAllColumns = 2    # 1 << 1 # Frame will span all columns of its container table (text will still fit in current column)
         | 
| 689 | 
            +
            ImGuiSelectableFlags_AllowDoubleClick = 4  # 1 << 2 # Generate press events on double clicks too
         | 
| 690 | 
            +
            ImGuiSelectableFlags_Disabled = 8          # 1 << 3 # Cannot be selected, display grayed out text
         | 
| 691 | 
            +
            ImGuiSelectableFlags_AllowOverlap = 16     # 1 << 4 # (WIP) Hit testing to allow subsequent widgets to overlap this one
         | 
| 692 | 
            +
            ImGuiSelectableFlags_Highlight = 32        # 1 << 5 # Make the item be displayed as if it is hovered
         | 
| 693 | 
            +
             | 
| 694 | 
            +
            # ImGuiSelectionRequestType
         | 
| 695 | 
            +
            # Selection request type
         | 
| 696 | 
            +
            ImGuiSelectionRequestType_None = 0     # 0
         | 
| 697 | 
            +
            ImGuiSelectionRequestType_SetAll = 1   # 1 # Request app to clear selection (if Selected==false) or select all items (if Selected==true). We cannot set RangeFirstItem/RangeLastItem as its contents is entirely up to user (not necessarily an index)
         | 
| 698 | 
            +
            ImGuiSelectionRequestType_SetRange = 2 # 2 # Request app to select/unselect [RangeFirstItem..RangeLastItem] items (inclusive) based on value of Selected. Only EndMultiSelect() request this, app code can read after BeginMultiSelect() and it will always be false.
         | 
| 614 699 |  | 
| 615 700 | 
             
            # ImGuiSliderFlags_
         | 
| 616 701 | 
             
            # Flags for DragFloat(), DragInt(), SliderFloat(), SliderInt() etc.
         | 
| @@ -619,15 +704,16 @@ ImGuiSelectableFlags_AllowOverlap = 16    # 1 << 4 # (WIP) Hit testing to allow | |
| 619 704 | 
             
            ImGuiSliderFlags_None = 0                  # 0
         | 
| 620 705 | 
             
            ImGuiSliderFlags_AlwaysClamp = 16          # 1 << 4 # Clamp value to min/max bounds when input manually with CTRL+Click. By default CTRL+Click allows going out of bounds.
         | 
| 621 706 | 
             
            ImGuiSliderFlags_Logarithmic = 32          # 1 << 5 # Make the widget logarithmic (linear otherwise). Consider using ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits.
         | 
| 622 | 
            -
            ImGuiSliderFlags_NoRoundToFormat = 64      # 1 << 6 # Disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits)
         | 
| 623 | 
            -
            ImGuiSliderFlags_NoInput = 128             # 1 << 7 # Disable CTRL+Click or Enter key allowing to input text directly into the widget
         | 
| 624 | 
            -
            ImGuiSliderFlags_WrapAround = 256          # 1 << 8
         | 
| 707 | 
            +
            ImGuiSliderFlags_NoRoundToFormat = 64      # 1 << 6 # Disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits).
         | 
| 708 | 
            +
            ImGuiSliderFlags_NoInput = 128             # 1 << 7 # Disable CTRL+Click or Enter key allowing to input text directly into the widget.
         | 
| 709 | 
            +
            ImGuiSliderFlags_WrapAround = 256          # 1 << 8 # Enable wrapping around from max to min and from min to max (only supported by DragXXX() functions for now.
         | 
| 625 710 | 
             
            ImGuiSliderFlags_InvalidMask_ = 1879048207 # 0x7000000F # [Internal] We treat using those bits as being potentially a 'float power' argument from the previous API that has got miscast to this enum, and will trigger an assert if needed.
         | 
| 626 711 |  | 
| 627 712 | 
             
            # ImGuiSortDirection
         | 
| 713 | 
            +
            # A sorting direction
         | 
| 628 714 | 
             
            ImGuiSortDirection_None = 0       # 0
         | 
| 629 | 
            -
            ImGuiSortDirection_Ascending = 1  # 1
         | 
| 630 | 
            -
            ImGuiSortDirection_Descending = 2 # 2
         | 
| 715 | 
            +
            ImGuiSortDirection_Ascending = 1  # 1 # Ascending = 0->9, A->Z etc.
         | 
| 716 | 
            +
            ImGuiSortDirection_Descending = 2 # 2 # Descending = 9->0, Z->A etc.
         | 
| 631 717 |  | 
| 632 718 | 
             
            # ImGuiStyleVar_
         | 
| 633 719 | 
             
            # Enumeration for PushStyleVar() / PopStyleVar() to temporarily modify the ImGuiStyle structure.
         | 
| @@ -663,14 +749,15 @@ ImGuiStyleVar_GrabRounding = 21                # 21 # float     GrabRounding | |
| 663 749 | 
             
            ImGuiStyleVar_TabRounding = 22                 # 22 # float     TabRounding
         | 
| 664 750 | 
             
            ImGuiStyleVar_TabBorderSize = 23               # 23 # float     TabBorderSize
         | 
| 665 751 | 
             
            ImGuiStyleVar_TabBarBorderSize = 24            # 24 # float     TabBarBorderSize
         | 
| 666 | 
            -
             | 
| 667 | 
            -
             | 
| 668 | 
            -
             | 
| 669 | 
            -
             | 
| 670 | 
            -
             | 
| 671 | 
            -
             | 
| 672 | 
            -
             | 
| 673 | 
            -
             | 
| 752 | 
            +
            ImGuiStyleVar_TabBarOverlineSize = 25          # 25 # float     TabBarOverlineSize
         | 
| 753 | 
            +
            ImGuiStyleVar_TableAngledHeadersAngle = 26     # 26 # float     TableAngledHeadersAngle
         | 
| 754 | 
            +
            ImGuiStyleVar_TableAngledHeadersTextAlign = 27 # 27 # ImVec2  TableAngledHeadersTextAlign
         | 
| 755 | 
            +
            ImGuiStyleVar_ButtonTextAlign = 28             # 28 # ImVec2    ButtonTextAlign
         | 
| 756 | 
            +
            ImGuiStyleVar_SelectableTextAlign = 29         # 29 # ImVec2    SelectableTextAlign
         | 
| 757 | 
            +
            ImGuiStyleVar_SeparatorTextBorderSize = 30     # 30 # float     SeparatorTextBorderSize
         | 
| 758 | 
            +
            ImGuiStyleVar_SeparatorTextAlign = 31          # 31 # ImVec2    SeparatorTextAlign
         | 
| 759 | 
            +
            ImGuiStyleVar_SeparatorTextPadding = 32        # 32 # ImVec2    SeparatorTextPadding
         | 
| 760 | 
            +
            ImGuiStyleVar_COUNT = 33                       # 33
         | 
| 674 761 |  | 
| 675 762 | 
             
            # ImGuiTabBarFlags_
         | 
| 676 763 | 
             
            # Flags for ImGui::BeginTabBar()
         | 
| @@ -681,7 +768,7 @@ ImGuiTabBarFlags_TabListPopupButton = 4           # 1 << 2 # Disable buttons to | |
| 681 768 | 
             
            ImGuiTabBarFlags_NoCloseWithMiddleMouseButton = 8 # 1 << 3 # Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You may handle this behavior manually on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false.
         | 
| 682 769 | 
             
            ImGuiTabBarFlags_NoTabListScrollingButtons = 16   # 1 << 4 # Disable scrolling buttons (apply when fitting policy is ImGuiTabBarFlags_FittingPolicyScroll)
         | 
| 683 770 | 
             
            ImGuiTabBarFlags_NoTooltip = 32                   # 1 << 5 # Disable tooltips when hovering a tab
         | 
| 684 | 
            -
            ImGuiTabBarFlags_DrawSelectedOverline = 64        # 1 << 6
         | 
| 771 | 
            +
            ImGuiTabBarFlags_DrawSelectedOverline = 64        # 1 << 6 # Draw selected overline markers over selected tab
         | 
| 685 772 | 
             
            ImGuiTabBarFlags_FittingPolicyResizeDown = 128    # 1 << 7 # Resize tabs when they don't fit
         | 
| 686 773 | 
             
            ImGuiTabBarFlags_FittingPolicyScroll = 256        # 1 << 8 # Add scroll buttons when tabs don't fit
         | 
| 687 774 | 
             
            ImGuiTabBarFlags_FittingPolicyMask_ = 384         # ImGuiTabBarFlags_FittingPolicyResizeDown | ImGuiTabBarFlags_FittingPolicyScroll
         | 
| @@ -730,7 +817,7 @@ ImGuiTableColumnFlags_NoClip = 256                 # 1 << 8 # Disable clipping f | |
| 730 817 | 
             
            ImGuiTableColumnFlags_NoSort = 512                 # 1 << 9 # Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table).
         | 
| 731 818 | 
             
            ImGuiTableColumnFlags_NoSortAscending = 1024       # 1 << 10 # Disable ability to sort in the ascending direction.
         | 
| 732 819 | 
             
            ImGuiTableColumnFlags_NoSortDescending = 2048      # 1 << 11 # Disable ability to sort in the descending direction.
         | 
| 733 | 
            -
            ImGuiTableColumnFlags_NoHeaderLabel = 4096         # 1 << 12 # TableHeadersRow() will  | 
| 820 | 
            +
            ImGuiTableColumnFlags_NoHeaderLabel = 4096         # 1 << 12 # TableHeadersRow() will submit an empty label for this column. Convenient for some small columns. Name will still appear in context menu or in angled headers. You may append into this cell by calling TableSetColumnIndex() right after the TableHeadersRow() call.
         | 
| 734 821 | 
             
            ImGuiTableColumnFlags_NoHeaderWidth = 8192         # 1 << 13 # Disable header text width contribution to automatic column width.
         | 
| 735 822 | 
             
            ImGuiTableColumnFlags_PreferSortAscending = 16384  # 1 << 14 # Make the initial sort direction Ascending when first sorting on this column (default).
         | 
| 736 823 | 
             
            ImGuiTableColumnFlags_PreferSortDescending = 32768 # 1 << 15 # Make the initial sort direction Descending when first sorting on this column.
         | 
| @@ -821,14 +908,14 @@ ImGuiTreeNodeFlags_AllowOverlap = 4             # 1 << 2 # Hit testing to allow | |
| 821 908 | 
             
            ImGuiTreeNodeFlags_NoTreePushOnOpen = 8         # 1 << 3 # Don't do a TreePush() when open (e.g. for CollapsingHeader) = no extra indent nor pushing on ID stack
         | 
| 822 909 | 
             
            ImGuiTreeNodeFlags_NoAutoOpenOnLog = 16         # 1 << 4 # Don't automatically and temporarily open node when Logging is active (by default logging will automatically open tree nodes)
         | 
| 823 910 | 
             
            ImGuiTreeNodeFlags_DefaultOpen = 32             # 1 << 5 # Default node to be open
         | 
| 824 | 
            -
            ImGuiTreeNodeFlags_OpenOnDoubleClick = 64       # 1 << 6 #  | 
| 825 | 
            -
            ImGuiTreeNodeFlags_OpenOnArrow = 128            # 1 << 7 #  | 
| 911 | 
            +
            ImGuiTreeNodeFlags_OpenOnDoubleClick = 64       # 1 << 6 # Open on double-click instead of simple click (default for multi-select unless any _OpenOnXXX behavior is set explicitly). Both behaviors may be combined.
         | 
| 912 | 
            +
            ImGuiTreeNodeFlags_OpenOnArrow = 128            # 1 << 7 # Open when clicking on the arrow part (default for multi-select unless any _OpenOnXXX behavior is set explicitly). Both behaviors may be combined.
         | 
| 826 913 | 
             
            ImGuiTreeNodeFlags_Leaf = 256                   # 1 << 8 # No collapsing, no arrow (use as a convenience for leaf nodes).
         | 
| 827 914 | 
             
            ImGuiTreeNodeFlags_Bullet = 512                 # 1 << 9 # Display a bullet instead of arrow. IMPORTANT: node can still be marked open/close if you don't set the _Leaf flag!
         | 
| 828 | 
            -
            ImGuiTreeNodeFlags_FramePadding = 1024          # 1 << 10 # Use FramePadding (even for an unframed text node) to vertically align text baseline to regular widget height. Equivalent to calling AlignTextToFramePadding().
         | 
| 829 | 
            -
            ImGuiTreeNodeFlags_SpanAvailWidth = 2048        # 1 << 11 # Extend hit box to the right-most edge, even if not framed. This is not the default in order to allow adding other items on the same line | 
| 830 | 
            -
            ImGuiTreeNodeFlags_SpanFullWidth = 4096         # 1 << 12 # Extend hit box to the left-most and right-most edges ( | 
| 831 | 
            -
            ImGuiTreeNodeFlags_SpanTextWidth = 8192         # 1 << 13
         | 
| 915 | 
            +
            ImGuiTreeNodeFlags_FramePadding = 1024          # 1 << 10 # Use FramePadding (even for an unframed text node) to vertically align text baseline to regular widget height. Equivalent to calling AlignTextToFramePadding() before the node.
         | 
| 916 | 
            +
            ImGuiTreeNodeFlags_SpanAvailWidth = 2048        # 1 << 11 # Extend hit box to the right-most edge, even if not framed. This is not the default in order to allow adding other items on the same line without using AllowOverlap mode.
         | 
| 917 | 
            +
            ImGuiTreeNodeFlags_SpanFullWidth = 4096         # 1 << 12 # Extend hit box to the left-most and right-most edges (cover the indent area).
         | 
| 918 | 
            +
            ImGuiTreeNodeFlags_SpanTextWidth = 8192         # 1 << 13 # Narrow hit box + narrow hovering highlight, will only cover the label text.
         | 
| 832 919 | 
             
            ImGuiTreeNodeFlags_SpanAllColumns = 16384       # 1 << 14 # Frame will span all columns of its container table (text will still fit in current column)
         | 
| 833 920 | 
             
            ImGuiTreeNodeFlags_NavLeftJumpsBackHere = 32768 # 1 << 15 # (WIP) Nav: left direction may move to this TreeNode() from any of its child (items submitted between TreeNode and TreePop)
         | 
| 834 921 | 
             
            ImGuiTreeNodeFlags_CollapsingHeader = 26        # ImGuiTreeNodeFlags_Framed | ImGuiTreeNodeFlags_NoTreePushOnOpen | ImGuiTreeNodeFlags_NoAutoOpenOnLog
         | 
| @@ -838,7 +925,7 @@ ImGuiTreeNodeFlags_CollapsingHeader = 26        # ImGuiTreeNodeFlags_Framed | Im | |
| 838 925 | 
             
            ImGuiViewportFlags_None = 0              # 0
         | 
| 839 926 | 
             
            ImGuiViewportFlags_IsPlatformWindow = 1  # 1 << 0 # Represent a Platform Window
         | 
| 840 927 | 
             
            ImGuiViewportFlags_IsPlatformMonitor = 2 # 1 << 1 # Represent a Platform Monitor (unused yet)
         | 
| 841 | 
            -
            ImGuiViewportFlags_OwnedByApp = 4        # 1 << 2 # Platform Window:  | 
| 928 | 
            +
            ImGuiViewportFlags_OwnedByApp = 4        # 1 << 2 # Platform Window: Is created/managed by the user application? (rather than our backend)
         | 
| 842 929 |  | 
| 843 930 | 
             
            # ImGuiWindowFlags_
         | 
| 844 931 | 
             
            # Flags for ImGui::Begin()
         | 
| @@ -1284,6 +1371,10 @@ class ImDrawList < FFI::Struct | |
| 1284 1371 | 
             
                ImGui::ImDrawList__ResetForNewFrame(self)
         | 
| 1285 1372 | 
             
              end
         | 
| 1286 1373 |  | 
| 1374 | 
            +
              def _SetTextureID(texture_id)
         | 
| 1375 | 
            +
                ImGui::ImDrawList__SetTextureID(self, texture_id)
         | 
| 1376 | 
            +
              end
         | 
| 1377 | 
            +
             | 
| 1287 1378 | 
             
              def _TryMergeDrawCmds()
         | 
| 1288 1379 | 
             
                ImGui::ImDrawList__TryMergeDrawCmds(self)
         | 
| 1289 1380 | 
             
              end
         | 
| @@ -1475,7 +1566,7 @@ class ImGuiKeyData < FFI::Struct | |
| 1475 1566 | 
             
            end
         | 
| 1476 1567 |  | 
| 1477 1568 | 
             
            # - Currently represents the Platform Window created by the application which is hosting our Dear ImGui windows.
         | 
| 1478 | 
            -
            # -  | 
| 1569 | 
            +
            # - With multi-viewport enabled, we extend this concept to have multiple active viewports.
         | 
| 1479 1570 | 
             
            # - In the future we will extend this concept further to also represent Platform Monitor and support a "no main platform window" operation mode.
         | 
| 1480 1571 | 
             
            # - About Main Area vs Work Area:
         | 
| 1481 1572 | 
             
            #   - Main Area = entire viewport.
         | 
| @@ -1515,6 +1606,81 @@ class ImGuiViewport < FFI::Struct | |
| 1515 1606 |  | 
| 1516 1607 | 
             
            end
         | 
| 1517 1608 |  | 
| 1609 | 
            +
            # Helper: Key->Value storage
         | 
| 1610 | 
            +
            # Typically you don't have to worry about this since a storage is held within each Window.
         | 
| 1611 | 
            +
            # We use it to e.g. store collapse state for a tree (Int 0/1)
         | 
| 1612 | 
            +
            # This is optimized for efficient lookup (dichotomy into a contiguous buffer) and rare insertion (typically tied to user interactions aka max once a frame)
         | 
| 1613 | 
            +
            # You can use it as custom user storage for temporary values. Declare your own storage if, for example:
         | 
| 1614 | 
            +
            # - You want to manipulate the open/close state of a particular sub-tree in your interface (tree node uses Int 0/1 to store their state).
         | 
| 1615 | 
            +
            # - You want to store custom debug data easily without adding or editing structures in your code (probably not efficient, but convenient)
         | 
| 1616 | 
            +
            # Types are NOT stored, so it is up to you to make sure your Key don't collide with different types.
         | 
| 1617 | 
            +
            class ImGuiStorage < FFI::Struct
         | 
| 1618 | 
            +
              layout(
         | 
| 1619 | 
            +
                :Data, ImVector.by_value
         | 
| 1620 | 
            +
              )
         | 
| 1621 | 
            +
             | 
| 1622 | 
            +
              def BuildSortByKey()
         | 
| 1623 | 
            +
                ImGui::ImGuiStorage_BuildSortByKey(self)
         | 
| 1624 | 
            +
              end
         | 
| 1625 | 
            +
             | 
| 1626 | 
            +
              def Clear()
         | 
| 1627 | 
            +
                ImGui::ImGuiStorage_Clear(self)
         | 
| 1628 | 
            +
              end
         | 
| 1629 | 
            +
             | 
| 1630 | 
            +
              def GetBool(key, default_val = false)
         | 
| 1631 | 
            +
                ImGui::ImGuiStorage_GetBool(self, key, default_val)
         | 
| 1632 | 
            +
              end
         | 
| 1633 | 
            +
             | 
| 1634 | 
            +
              def GetBoolRef(key, default_val = false)
         | 
| 1635 | 
            +
                ImGui::ImGuiStorage_GetBoolRef(self, key, default_val)
         | 
| 1636 | 
            +
              end
         | 
| 1637 | 
            +
             | 
| 1638 | 
            +
              def GetFloat(key, default_val = 0.0)
         | 
| 1639 | 
            +
                ImGui::ImGuiStorage_GetFloat(self, key, default_val)
         | 
| 1640 | 
            +
              end
         | 
| 1641 | 
            +
             | 
| 1642 | 
            +
              def GetFloatRef(key, default_val = 0.0)
         | 
| 1643 | 
            +
                ImGui::ImGuiStorage_GetFloatRef(self, key, default_val)
         | 
| 1644 | 
            +
              end
         | 
| 1645 | 
            +
             | 
| 1646 | 
            +
              def GetInt(key, default_val = 0)
         | 
| 1647 | 
            +
                ImGui::ImGuiStorage_GetInt(self, key, default_val)
         | 
| 1648 | 
            +
              end
         | 
| 1649 | 
            +
             | 
| 1650 | 
            +
              def GetIntRef(key, default_val = 0)
         | 
| 1651 | 
            +
                ImGui::ImGuiStorage_GetIntRef(self, key, default_val)
         | 
| 1652 | 
            +
              end
         | 
| 1653 | 
            +
             | 
| 1654 | 
            +
              def GetVoidPtr(key)
         | 
| 1655 | 
            +
                ImGui::ImGuiStorage_GetVoidPtr(self, key)
         | 
| 1656 | 
            +
              end
         | 
| 1657 | 
            +
             | 
| 1658 | 
            +
              def GetVoidPtrRef(key, default_val = nil)
         | 
| 1659 | 
            +
                ImGui::ImGuiStorage_GetVoidPtrRef(self, key, default_val)
         | 
| 1660 | 
            +
              end
         | 
| 1661 | 
            +
             | 
| 1662 | 
            +
              def SetAllInt(val)
         | 
| 1663 | 
            +
                ImGui::ImGuiStorage_SetAllInt(self, val)
         | 
| 1664 | 
            +
              end
         | 
| 1665 | 
            +
             | 
| 1666 | 
            +
              def SetBool(key, val)
         | 
| 1667 | 
            +
                ImGui::ImGuiStorage_SetBool(self, key, val)
         | 
| 1668 | 
            +
              end
         | 
| 1669 | 
            +
             | 
| 1670 | 
            +
              def SetFloat(key, val)
         | 
| 1671 | 
            +
                ImGui::ImGuiStorage_SetFloat(self, key, val)
         | 
| 1672 | 
            +
              end
         | 
| 1673 | 
            +
             | 
| 1674 | 
            +
              def SetInt(key, val)
         | 
| 1675 | 
            +
                ImGui::ImGuiStorage_SetInt(self, key, val)
         | 
| 1676 | 
            +
              end
         | 
| 1677 | 
            +
             | 
| 1678 | 
            +
              def SetVoidPtr(key, val)
         | 
| 1679 | 
            +
                ImGui::ImGuiStorage_SetVoidPtr(self, key, val)
         | 
| 1680 | 
            +
              end
         | 
| 1681 | 
            +
             | 
| 1682 | 
            +
            end
         | 
| 1683 | 
            +
             | 
| 1518 1684 | 
             
            # Helper: ImColor() implicitly converts colors to either ImU32 (packed 4x1 byte) or ImVec4 (4x1 float)
         | 
| 1519 1685 | 
             
            # Prefer using IM_COL32() macros if you want a guaranteed compile-time ImU32 for usage with ImDrawList API.
         | 
| 1520 1686 | 
             
            # **Avoid storing ImColor! Store either u32 of ImVec4. This is not a full-featured color class. MAY OBSOLETE.
         | 
| @@ -1811,6 +1977,7 @@ class ImGuiIO < FFI::Struct | |
| 1811 1977 | 
             
                :DisplayFramebufferScale, ImVec2.by_value,
         | 
| 1812 1978 | 
             
                :MouseDrawCursor, :bool,
         | 
| 1813 1979 | 
             
                :ConfigMacOSXBehaviors, :bool,
         | 
| 1980 | 
            +
                :ConfigNavSwapGamepadButtons, :bool,
         | 
| 1814 1981 | 
             
                :ConfigInputTrickleEventQueue, :bool,
         | 
| 1815 1982 | 
             
                :ConfigInputTextCursorBlink, :bool,
         | 
| 1816 1983 | 
             
                :ConfigInputTextEnterKeepActive, :bool,
         | 
| @@ -1833,13 +2000,6 @@ class ImGuiIO < FFI::Struct | |
| 1833 2000 | 
             
                :BackendPlatformUserData, :pointer,
         | 
| 1834 2001 | 
             
                :BackendRendererUserData, :pointer,
         | 
| 1835 2002 | 
             
                :BackendLanguageUserData, :pointer,
         | 
| 1836 | 
            -
                :GetClipboardTextFn, :pointer,
         | 
| 1837 | 
            -
                :SetClipboardTextFn, :pointer,
         | 
| 1838 | 
            -
                :ClipboardUserData, :pointer,
         | 
| 1839 | 
            -
                :PlatformOpenInShellFn, :pointer,
         | 
| 1840 | 
            -
                :PlatformOpenInShellUserData, :pointer,
         | 
| 1841 | 
            -
                :PlatformSetImeDataFn, :pointer,
         | 
| 1842 | 
            -
                :PlatformLocaleDecimalPoint, :ushort,
         | 
| 1843 2003 | 
             
                :WantCaptureMouse, :bool,
         | 
| 1844 2004 | 
             
                :WantCaptureKeyboard, :bool,
         | 
| 1845 2005 | 
             
                :WantTextInput, :bool,
         | 
| @@ -2044,6 +2204,7 @@ class ImGuiListClipper < FFI::Struct | |
| 2044 2204 | 
             
                :ItemsCount, :int,
         | 
| 2045 2205 | 
             
                :ItemsHeight, :float,
         | 
| 2046 2206 | 
             
                :StartPosY, :float,
         | 
| 2207 | 
            +
                :StartSeekOffsetY, :double,
         | 
| 2047 2208 | 
             
                :TempData, :pointer
         | 
| 2048 2209 | 
             
              )
         | 
| 2049 2210 |  | 
| @@ -2067,6 +2228,10 @@ class ImGuiListClipper < FFI::Struct | |
| 2067 2228 | 
             
                ImGui::ImGuiListClipper_IncludeItemsByIndex(self, item_begin, item_end)
         | 
| 2068 2229 | 
             
              end
         | 
| 2069 2230 |  | 
| 2231 | 
            +
              def SeekCursorForItem(item_index)
         | 
| 2232 | 
            +
                ImGui::ImGuiListClipper_SeekCursorForItem(self, item_index)
         | 
| 2233 | 
            +
              end
         | 
| 2234 | 
            +
             | 
| 2070 2235 | 
             
              def Step()
         | 
| 2071 2236 | 
             
                ImGui::ImGuiListClipper_Step(self)
         | 
| 2072 2237 | 
             
              end
         | 
| @@ -2077,6 +2242,22 @@ class ImGuiListClipper < FFI::Struct | |
| 2077 2242 |  | 
| 2078 2243 | 
             
            end
         | 
| 2079 2244 |  | 
| 2245 | 
            +
            # Main IO structure returned by BeginMultiSelect()/EndMultiSelect().
         | 
| 2246 | 
            +
            # This mainly contains a list of selection requests.
         | 
| 2247 | 
            +
            # - Use 'Demo->Tools->Debug Log->Selection' to see requests as they happen.
         | 
| 2248 | 
            +
            # - Some fields are only useful if your list is dynamic and allows deletion (getting post-deletion focus/state right is shown in the demo)
         | 
| 2249 | 
            +
            # - Below: who reads/writes each fields? 'r'=read, 'w'=write, 'ms'=multi-select code, 'app'=application/user code.
         | 
| 2250 | 
            +
            class ImGuiMultiSelectIO < FFI::Struct
         | 
| 2251 | 
            +
              layout(
         | 
| 2252 | 
            +
                :Requests, ImVector.by_value,
         | 
| 2253 | 
            +
                :RangeSrcItem, :int64,
         | 
| 2254 | 
            +
                :NavIdItem, :int64,
         | 
| 2255 | 
            +
                :NavIdSelected, :bool,
         | 
| 2256 | 
            +
                :RangeSrcReset, :bool,
         | 
| 2257 | 
            +
                :ItemsCount, :int
         | 
| 2258 | 
            +
              )
         | 
| 2259 | 
            +
            end
         | 
| 2260 | 
            +
             | 
| 2080 2261 | 
             
            # Data payload for Drag and Drop operations: AcceptDragDropPayload(), GetDragDropPayload()
         | 
| 2081 2262 | 
             
            class ImGuiPayload < FFI::Struct
         | 
| 2082 2263 | 
             
              layout(
         | 
| @@ -2116,7 +2297,7 @@ class ImGuiPayload < FFI::Struct | |
| 2116 2297 |  | 
| 2117 2298 | 
             
            end
         | 
| 2118 2299 |  | 
| 2119 | 
            -
            # (Optional) Support for IME (Input Method Editor) via the  | 
| 2300 | 
            +
            # (Optional) Support for IME (Input Method Editor) via the platform_io.Platform_SetImeDataFn() function.
         | 
| 2120 2301 | 
             
            class ImGuiPlatformImeData < FFI::Struct
         | 
| 2121 2302 | 
             
              layout(
         | 
| 2122 2303 | 
             
                :WantVisible, :bool,
         | 
| @@ -2134,90 +2315,112 @@ class ImGuiPlatformImeData < FFI::Struct | |
| 2134 2315 |  | 
| 2135 2316 | 
             
            end
         | 
| 2136 2317 |  | 
| 2137 | 
            -
            #  | 
| 2138 | 
            -
            #  | 
| 2139 | 
            -
             | 
| 2318 | 
            +
            # Optional helper to store multi-selection state + apply multi-selection requests.
         | 
| 2319 | 
            +
            # - Used by our demos and provided as a convenience to easily implement basic multi-selection.
         | 
| 2320 | 
            +
            # - Iterate selection with 'void* it = NULL; ImGuiID id; while (selection.GetNextSelectedItem(&it, &id)) { ... }'
         | 
| 2321 | 
            +
            #   Or you can check 'if (Contains(id)) { ... }' for each possible object if their number is not too high to iterate.
         | 
| 2322 | 
            +
            # - USING THIS IS NOT MANDATORY. This is only a helper and not a required API.
         | 
| 2323 | 
            +
            # To store a multi-selection, in your application you could:
         | 
| 2324 | 
            +
            # - Use this helper as a convenience. We use our simple key->value ImGuiStorage as a std::set<ImGuiID> replacement.
         | 
| 2325 | 
            +
            # - Use your own external storage: e.g. std::set<MyObjectId>, std::vector<MyObjectId>, interval trees, intrusively stored selection etc.
         | 
| 2326 | 
            +
            # In ImGuiSelectionBasicStorage we:
         | 
| 2327 | 
            +
            # - always use indices in the multi-selection API (passed to SetNextItemSelectionUserData(), retrieved in ImGuiMultiSelectIO)
         | 
| 2328 | 
            +
            # - use the AdapterIndexToStorageId() indirection layer to abstract how persistent selection data is derived from an index.
         | 
| 2329 | 
            +
            # - use decently optimized logic to allow queries and insertion of very large selection sets.
         | 
| 2330 | 
            +
            # - do not preserve selection order.
         | 
| 2331 | 
            +
            # Many combinations are possible depending on how you prefer to store your items and how you prefer to store your selection.
         | 
| 2332 | 
            +
            # Large applications are likely to eventually want to get rid of this indirection layer and do their own thing.
         | 
| 2333 | 
            +
            # See https://github.com/ocornut/imgui/wiki/Multi-Select for details and pseudo-code using this helper.
         | 
| 2334 | 
            +
            class ImGuiSelectionBasicStorage < FFI::Struct
         | 
| 2140 2335 | 
             
              layout(
         | 
| 2336 | 
            +
                :Size, :int,
         | 
| 2337 | 
            +
                :PreserveOrder, :bool,
         | 
| 2141 2338 | 
             
                :UserData, :pointer,
         | 
| 2142 | 
            -
                : | 
| 2143 | 
            -
                : | 
| 2144 | 
            -
                : | 
| 2145 | 
            -
              )
         | 
| 2146 | 
            -
            end
         | 
| 2147 | 
            -
             | 
| 2148 | 
            -
            # Helper: Key->Value storage
         | 
| 2149 | 
            -
            # Typically you don't have to worry about this since a storage is held within each Window.
         | 
| 2150 | 
            -
            # We use it to e.g. store collapse state for a tree (Int 0/1)
         | 
| 2151 | 
            -
            # This is optimized for efficient lookup (dichotomy into a contiguous buffer) and rare insertion (typically tied to user interactions aka max once a frame)
         | 
| 2152 | 
            -
            # You can use it as custom user storage for temporary values. Declare your own storage if, for example:
         | 
| 2153 | 
            -
            # - You want to manipulate the open/close state of a particular sub-tree in your interface (tree node uses Int 0/1 to store their state).
         | 
| 2154 | 
            -
            # - You want to store custom debug data easily without adding or editing structures in your code (probably not efficient, but convenient)
         | 
| 2155 | 
            -
            # Types are NOT stored, so it is up to you to make sure your Key don't collide with different types.
         | 
| 2156 | 
            -
            class ImGuiStorage < FFI::Struct
         | 
| 2157 | 
            -
              layout(
         | 
| 2158 | 
            -
                :Data, ImVector.by_value
         | 
| 2339 | 
            +
                :AdapterIndexToStorageId, :pointer,
         | 
| 2340 | 
            +
                :_SelectionOrder, :int,
         | 
| 2341 | 
            +
                :_Storage, ImGuiStorage.by_value
         | 
| 2159 2342 | 
             
              )
         | 
| 2160 2343 |  | 
| 2161 | 
            -
              def  | 
| 2162 | 
            -
                ImGui:: | 
| 2344 | 
            +
              def ApplyRequests(ms_io)
         | 
| 2345 | 
            +
                ImGui::ImGuiSelectionBasicStorage_ApplyRequests(self, ms_io)
         | 
| 2163 2346 | 
             
              end
         | 
| 2164 2347 |  | 
| 2165 2348 | 
             
              def Clear()
         | 
| 2166 | 
            -
                ImGui:: | 
| 2349 | 
            +
                ImGui::ImGuiSelectionBasicStorage_Clear(self)
         | 
| 2167 2350 | 
             
              end
         | 
| 2168 2351 |  | 
| 2169 | 
            -
              def  | 
| 2170 | 
            -
                ImGui:: | 
| 2352 | 
            +
              def Contains(id)
         | 
| 2353 | 
            +
                ImGui::ImGuiSelectionBasicStorage_Contains(self, id)
         | 
| 2171 2354 | 
             
              end
         | 
| 2172 2355 |  | 
| 2173 | 
            -
              def  | 
| 2174 | 
            -
                ImGui:: | 
| 2356 | 
            +
              def GetNextSelectedItem(opaque_it, out_id)
         | 
| 2357 | 
            +
                ImGui::ImGuiSelectionBasicStorage_GetNextSelectedItem(self, opaque_it, out_id)
         | 
| 2175 2358 | 
             
              end
         | 
| 2176 2359 |  | 
| 2177 | 
            -
              def  | 
| 2178 | 
            -
                ImGui:: | 
| 2360 | 
            +
              def GetStorageIdFromIndex(idx)
         | 
| 2361 | 
            +
                ImGui::ImGuiSelectionBasicStorage_GetStorageIdFromIndex(self, idx)
         | 
| 2179 2362 | 
             
              end
         | 
| 2180 2363 |  | 
| 2181 | 
            -
              def  | 
| 2182 | 
            -
                ImGui:: | 
| 2364 | 
            +
              def self.create()
         | 
| 2365 | 
            +
                return ImGuiSelectionBasicStorage.new(ImGui::ImGuiSelectionBasicStorage_ImGuiSelectionBasicStorage())
         | 
| 2183 2366 | 
             
              end
         | 
| 2184 2367 |  | 
| 2185 | 
            -
              def  | 
| 2186 | 
            -
                ImGui:: | 
| 2368 | 
            +
              def SetItemSelected(id, selected)
         | 
| 2369 | 
            +
                ImGui::ImGuiSelectionBasicStorage_SetItemSelected(self, id, selected)
         | 
| 2187 2370 | 
             
              end
         | 
| 2188 2371 |  | 
| 2189 | 
            -
              def  | 
| 2190 | 
            -
                ImGui:: | 
| 2372 | 
            +
              def Swap(r)
         | 
| 2373 | 
            +
                ImGui::ImGuiSelectionBasicStorage_Swap(self, r)
         | 
| 2191 2374 | 
             
              end
         | 
| 2192 2375 |  | 
| 2193 | 
            -
              def  | 
| 2194 | 
            -
                ImGui:: | 
| 2376 | 
            +
              def destroy()
         | 
| 2377 | 
            +
                ImGui::ImGuiSelectionBasicStorage_destroy(self)
         | 
| 2195 2378 | 
             
              end
         | 
| 2196 2379 |  | 
| 2197 | 
            -
             | 
| 2198 | 
            -
                ImGui::ImGuiStorage_GetVoidPtrRef(self, key, default_val)
         | 
| 2199 | 
            -
              end
         | 
| 2380 | 
            +
            end
         | 
| 2200 2381 |  | 
| 2201 | 
            -
             | 
| 2202 | 
            -
             | 
| 2203 | 
            -
             | 
| 2382 | 
            +
            # Optional helper to apply multi-selection requests to existing randomly accessible storage.
         | 
| 2383 | 
            +
            # Convenient if you want to quickly wire multi-select API on e.g. an array of bool or items storing their own selection state.
         | 
| 2384 | 
            +
            class ImGuiSelectionExternalStorage < FFI::Struct
         | 
| 2385 | 
            +
              layout(
         | 
| 2386 | 
            +
                :UserData, :pointer,
         | 
| 2387 | 
            +
                :AdapterSetItemSelected, :pointer
         | 
| 2388 | 
            +
              )
         | 
| 2204 2389 |  | 
| 2205 | 
            -
              def  | 
| 2206 | 
            -
                ImGui:: | 
| 2390 | 
            +
              def ApplyRequests(ms_io)
         | 
| 2391 | 
            +
                ImGui::ImGuiSelectionExternalStorage_ApplyRequests(self, ms_io)
         | 
| 2207 2392 | 
             
              end
         | 
| 2208 2393 |  | 
| 2209 | 
            -
              def  | 
| 2210 | 
            -
                ImGui:: | 
| 2394 | 
            +
              def self.create()
         | 
| 2395 | 
            +
                return ImGuiSelectionExternalStorage.new(ImGui::ImGuiSelectionExternalStorage_ImGuiSelectionExternalStorage())
         | 
| 2211 2396 | 
             
              end
         | 
| 2212 2397 |  | 
| 2213 | 
            -
              def  | 
| 2214 | 
            -
                ImGui:: | 
| 2398 | 
            +
              def destroy()
         | 
| 2399 | 
            +
                ImGui::ImGuiSelectionExternalStorage_destroy(self)
         | 
| 2215 2400 | 
             
              end
         | 
| 2216 2401 |  | 
| 2217 | 
            -
             | 
| 2218 | 
            -
             | 
| 2219 | 
            -
             | 
| 2402 | 
            +
            end
         | 
| 2403 | 
            +
             | 
| 2404 | 
            +
            # Selection request item
         | 
| 2405 | 
            +
            class ImGuiSelectionRequest < FFI::Struct
         | 
| 2406 | 
            +
              layout(
         | 
| 2407 | 
            +
                :Type, :ImGuiSelectionRequestType,
         | 
| 2408 | 
            +
                :Selected, :bool,
         | 
| 2409 | 
            +
                :RangeDirection, :char,
         | 
| 2410 | 
            +
                :RangeFirstItem, :int64,
         | 
| 2411 | 
            +
                :RangeLastItem, :int64
         | 
| 2412 | 
            +
              )
         | 
| 2413 | 
            +
            end
         | 
| 2220 2414 |  | 
| 2415 | 
            +
            # Resizing callback data to apply custom constraint. As enabled by SetNextWindowSizeConstraints(). Callback is called during the next Begin().
         | 
| 2416 | 
            +
            # NB: For basic min/max size constraint on each axis you don't need to use the callback! The SetNextWindowSizeConstraints() parameters are enough.
         | 
| 2417 | 
            +
            class ImGuiSizeCallbackData < FFI::Struct
         | 
| 2418 | 
            +
              layout(
         | 
| 2419 | 
            +
                :UserData, :pointer,
         | 
| 2420 | 
            +
                :Pos, ImVec2.by_value,
         | 
| 2421 | 
            +
                :CurrentSize, ImVec2.by_value,
         | 
| 2422 | 
            +
                :DesiredSize, ImVec2.by_value
         | 
| 2423 | 
            +
              )
         | 
| 2221 2424 | 
             
            end
         | 
| 2222 2425 |  | 
| 2223 2426 | 
             
            class ImGuiStyle < FFI::Struct
         | 
| @@ -2252,6 +2455,7 @@ class ImGuiStyle < FFI::Struct | |
| 2252 2455 | 
             
                :TabBorderSize, :float,
         | 
| 2253 2456 | 
             
                :TabMinWidthForCloseButton, :float,
         | 
| 2254 2457 | 
             
                :TabBarBorderSize, :float,
         | 
| 2458 | 
            +
                :TabBarOverlineSize, :float,
         | 
| 2255 2459 | 
             
                :TableAngledHeadersAngle, :float,
         | 
| 2256 2460 | 
             
                :TableAngledHeadersTextAlign, ImVec2.by_value,
         | 
| 2257 2461 | 
             
                :ColorButtonPosition, :int,
         | 
| @@ -2449,6 +2653,7 @@ class ImGuiTextRange < FFI::Struct | |
| 2449 2653 |  | 
| 2450 2654 | 
             
            end
         | 
| 2451 2655 |  | 
| 2656 | 
            +
            # [Internal] Key+Value for ImGuiStorage
         | 
| 2452 2657 | 
             
            class ImGuiStoragePair < FFI::Struct
         | 
| 2453 2658 | 
             
              layout(
         | 
| 2454 2659 | 
             
                :key, :uint,
         | 
| @@ -2605,6 +2810,7 @@ module ImGui | |
| 2605 2810 | 
             
                  [:ImDrawList__PathArcToN, [:pointer, ImVec2.by_value, :float, :float, :float, :int], :void],
         | 
| 2606 2811 | 
             
                  [:ImDrawList__PopUnusedDrawCmd, [:pointer], :void],
         | 
| 2607 2812 | 
             
                  [:ImDrawList__ResetForNewFrame, [:pointer], :void],
         | 
| 2813 | 
            +
                  [:ImDrawList__SetTextureID, [:pointer, :pointer], :void],
         | 
| 2608 2814 | 
             
                  [:ImDrawList__TryMergeDrawCmds, [:pointer], :void],
         | 
| 2609 2815 | 
             
                  [:ImDrawList_destroy, [:pointer], :void],
         | 
| 2610 2816 | 
             
                  [:ImFontAtlasCustomRect_ImFontAtlasCustomRect, [], :pointer],
         | 
| @@ -2699,6 +2905,7 @@ module ImGui | |
| 2699 2905 | 
             
                  [:ImGuiListClipper_ImGuiListClipper, [], :pointer],
         | 
| 2700 2906 | 
             
                  [:ImGuiListClipper_IncludeItemByIndex, [:pointer, :int], :void],
         | 
| 2701 2907 | 
             
                  [:ImGuiListClipper_IncludeItemsByIndex, [:pointer, :int, :int], :void],
         | 
| 2908 | 
            +
                  [:ImGuiListClipper_SeekCursorForItem, [:pointer, :int], :void],
         | 
| 2702 2909 | 
             
                  [:ImGuiListClipper_Step, [:pointer], :bool],
         | 
| 2703 2910 | 
             
                  [:ImGuiListClipper_destroy, [:pointer], :void],
         | 
| 2704 2911 | 
             
                  [:ImGuiOnceUponAFrame_ImGuiOnceUponAFrame, [], :pointer],
         | 
| @@ -2709,8 +2916,22 @@ module ImGui | |
| 2709 2916 | 
             
                  [:ImGuiPayload_IsDelivery, [:pointer], :bool],
         | 
| 2710 2917 | 
             
                  [:ImGuiPayload_IsPreview, [:pointer], :bool],
         | 
| 2711 2918 | 
             
                  [:ImGuiPayload_destroy, [:pointer], :void],
         | 
| 2919 | 
            +
                  [:ImGuiPlatformIO_ImGuiPlatformIO, [], :pointer],
         | 
| 2920 | 
            +
                  [:ImGuiPlatformIO_destroy, [:pointer], :void],
         | 
| 2712 2921 | 
             
                  [:ImGuiPlatformImeData_ImGuiPlatformImeData, [], :pointer],
         | 
| 2713 2922 | 
             
                  [:ImGuiPlatformImeData_destroy, [:pointer], :void],
         | 
| 2923 | 
            +
                  [:ImGuiSelectionBasicStorage_ApplyRequests, [:pointer, :pointer], :void],
         | 
| 2924 | 
            +
                  [:ImGuiSelectionBasicStorage_Clear, [:pointer], :void],
         | 
| 2925 | 
            +
                  [:ImGuiSelectionBasicStorage_Contains, [:pointer, :uint], :bool],
         | 
| 2926 | 
            +
                  [:ImGuiSelectionBasicStorage_GetNextSelectedItem, [:pointer, :pointer, :pointer], :bool],
         | 
| 2927 | 
            +
                  [:ImGuiSelectionBasicStorage_GetStorageIdFromIndex, [:pointer, :int], :uint],
         | 
| 2928 | 
            +
                  [:ImGuiSelectionBasicStorage_ImGuiSelectionBasicStorage, [], :pointer],
         | 
| 2929 | 
            +
                  [:ImGuiSelectionBasicStorage_SetItemSelected, [:pointer, :uint, :bool], :void],
         | 
| 2930 | 
            +
                  [:ImGuiSelectionBasicStorage_Swap, [:pointer, :pointer], :void],
         | 
| 2931 | 
            +
                  [:ImGuiSelectionBasicStorage_destroy, [:pointer], :void],
         | 
| 2932 | 
            +
                  [:ImGuiSelectionExternalStorage_ApplyRequests, [:pointer, :pointer], :void],
         | 
| 2933 | 
            +
                  [:ImGuiSelectionExternalStorage_ImGuiSelectionExternalStorage, [], :pointer],
         | 
| 2934 | 
            +
                  [:ImGuiSelectionExternalStorage_destroy, [:pointer], :void],
         | 
| 2714 2935 | 
             
                  [:ImGuiStoragePair_ImGuiStoragePair_Int, [:uint, :int], :pointer],
         | 
| 2715 2936 | 
             
                  [:ImGuiStoragePair_ImGuiStoragePair_Float, [:uint, :float], :pointer],
         | 
| 2716 2937 | 
             
                  [:ImGuiStoragePair_ImGuiStoragePair_Ptr, [:uint, :pointer], :pointer],
         | 
| @@ -2780,6 +3001,7 @@ module ImGui | |
| 2780 3001 | 
             
                  [:igBeginMainMenuBar, [], :bool],
         | 
| 2781 3002 | 
             
                  [:igBeginMenu, [:pointer, :bool], :bool],
         | 
| 2782 3003 | 
             
                  [:igBeginMenuBar, [], :bool],
         | 
| 3004 | 
            +
                  [:igBeginMultiSelect, [:int, :int, :int], :pointer],
         | 
| 2783 3005 | 
             
                  [:igBeginPopup, [:pointer, :int], :bool],
         | 
| 2784 3006 | 
             
                  [:igBeginPopupContextItem, [:pointer, :int], :bool],
         | 
| 2785 3007 | 
             
                  [:igBeginPopupContextVoid, [:pointer, :int], :bool],
         | 
| @@ -2845,6 +3067,7 @@ module ImGui | |
| 2845 3067 | 
             
                  [:igEndMainMenuBar, [], :void],
         | 
| 2846 3068 | 
             
                  [:igEndMenu, [], :void],
         | 
| 2847 3069 | 
             
                  [:igEndMenuBar, [], :void],
         | 
| 3070 | 
            +
                  [:igEndMultiSelect, [], :pointer],
         | 
| 2848 3071 | 
             
                  [:igEndPopup, [], :void],
         | 
| 2849 3072 | 
             
                  [:igEndTabBar, [], :void],
         | 
| 2850 3073 | 
             
                  [:igEndTabItem, [], :void],
         | 
| @@ -2861,7 +3084,6 @@ module ImGui | |
| 2861 3084 | 
             
                  [:igGetColumnWidth, [:int], :float],
         | 
| 2862 3085 | 
             
                  [:igGetColumnsCount, [], :int],
         | 
| 2863 3086 | 
             
                  [:igGetContentRegionAvail, [:pointer], :void],
         | 
| 2864 | 
            -
                  [:igGetContentRegionMax, [:pointer], :void],
         | 
| 2865 3087 | 
             
                  [:igGetCurrentContext, [], :pointer],
         | 
| 2866 3088 | 
             
                  [:igGetCursorPos, [:pointer], :void],
         | 
| 2867 3089 | 
             
                  [:igGetCursorPosX, [], :float],
         | 
| @@ -2881,6 +3103,7 @@ module ImGui | |
| 2881 3103 | 
             
                  [:igGetID_Str, [:pointer], :uint],
         | 
| 2882 3104 | 
             
                  [:igGetID_StrStr, [:pointer, :pointer], :uint],
         | 
| 2883 3105 | 
             
                  [:igGetID_Ptr, [:pointer], :uint],
         | 
| 3106 | 
            +
                  [:igGetID_Int, [:int], :uint],
         | 
| 2884 3107 | 
             
                  [:igGetIO, [], :pointer],
         | 
| 2885 3108 | 
             
                  [:igGetItemID, [], :uint],
         | 
| 2886 3109 | 
             
                  [:igGetItemRectMax, [:pointer], :void],
         | 
| @@ -2894,6 +3117,7 @@ module ImGui | |
| 2894 3117 | 
             
                  [:igGetMouseDragDelta, [:pointer, :int, :float], :void],
         | 
| 2895 3118 | 
             
                  [:igGetMousePos, [:pointer], :void],
         | 
| 2896 3119 | 
             
                  [:igGetMousePosOnOpeningCurrentPopup, [:pointer], :void],
         | 
| 3120 | 
            +
                  [:igGetPlatformIO, [], :pointer],
         | 
| 2897 3121 | 
             
                  [:igGetScrollMaxX, [], :float],
         | 
| 2898 3122 | 
             
                  [:igGetScrollMaxY, [], :float],
         | 
| 2899 3123 | 
             
                  [:igGetScrollX, [], :float],
         | 
| @@ -2907,8 +3131,6 @@ module ImGui | |
| 2907 3131 | 
             
                  [:igGetTime, [], :double],
         | 
| 2908 3132 | 
             
                  [:igGetTreeNodeToLabelSpacing, [], :float],
         | 
| 2909 3133 | 
             
                  [:igGetVersion, [], :pointer],
         | 
| 2910 | 
            -
                  [:igGetWindowContentRegionMax, [:pointer], :void],
         | 
| 2911 | 
            -
                  [:igGetWindowContentRegionMin, [:pointer], :void],
         | 
| 2912 3134 | 
             
                  [:igGetWindowDrawList, [], :pointer],
         | 
| 2913 3135 | 
             
                  [:igGetWindowHeight, [], :float],
         | 
| 2914 3136 | 
             
                  [:igGetWindowPos, [:pointer], :void],
         | 
| @@ -2945,6 +3167,7 @@ module ImGui | |
| 2945 3167 | 
             
                  [:igIsItemFocused, [], :bool],
         | 
| 2946 3168 | 
             
                  [:igIsItemHovered, [:int], :bool],
         | 
| 2947 3169 | 
             
                  [:igIsItemToggledOpen, [], :bool],
         | 
| 3170 | 
            +
                  [:igIsItemToggledSelection, [], :bool],
         | 
| 2948 3171 | 
             
                  [:igIsItemVisible, [], :bool],
         | 
| 2949 3172 | 
             
                  [:igIsKeyChordPressed, [:int], :bool],
         | 
| 2950 3173 | 
             
                  [:igIsKeyDown, [:int], :bool],
         | 
| @@ -2989,29 +3212,29 @@ module ImGui | |
| 2989 3212 | 
             
                  [:igPlotHistogram_FnFloatPtr, [:pointer, :pointer, :pointer, :int, :int, :pointer, :float, :float, ImVec2.by_value], :void],
         | 
| 2990 3213 | 
             
                  [:igPlotLines_FloatPtr, [:pointer, :pointer, :int, :int, :pointer, :float, :float, ImVec2.by_value, :int], :void],
         | 
| 2991 3214 | 
             
                  [:igPlotLines_FnFloatPtr, [:pointer, :pointer, :pointer, :int, :int, :pointer, :float, :float, ImVec2.by_value], :void],
         | 
| 2992 | 
            -
                  [:igPopButtonRepeat, [], :void],
         | 
| 2993 3215 | 
             
                  [:igPopClipRect, [], :void],
         | 
| 2994 3216 | 
             
                  [:igPopFont, [], :void],
         | 
| 2995 3217 | 
             
                  [:igPopID, [], :void],
         | 
| 3218 | 
            +
                  [:igPopItemFlag, [], :void],
         | 
| 2996 3219 | 
             
                  [:igPopItemWidth, [], :void],
         | 
| 2997 3220 | 
             
                  [:igPopStyleColor, [:int], :void],
         | 
| 2998 3221 | 
             
                  [:igPopStyleVar, [:int], :void],
         | 
| 2999 | 
            -
                  [:igPopTabStop, [], :void],
         | 
| 3000 3222 | 
             
                  [:igPopTextWrapPos, [], :void],
         | 
| 3001 3223 | 
             
                  [:igProgressBar, [:float, ImVec2.by_value, :pointer], :void],
         | 
| 3002 | 
            -
                  [:igPushButtonRepeat, [:bool], :void],
         | 
| 3003 3224 | 
             
                  [:igPushClipRect, [ImVec2.by_value, ImVec2.by_value, :bool], :void],
         | 
| 3004 3225 | 
             
                  [:igPushFont, [:pointer], :void],
         | 
| 3005 3226 | 
             
                  [:igPushID_Str, [:pointer], :void],
         | 
| 3006 3227 | 
             
                  [:igPushID_StrStr, [:pointer, :pointer], :void],
         | 
| 3007 3228 | 
             
                  [:igPushID_Ptr, [:pointer], :void],
         | 
| 3008 3229 | 
             
                  [:igPushID_Int, [:int], :void],
         | 
| 3230 | 
            +
                  [:igPushItemFlag, [:int, :bool], :void],
         | 
| 3009 3231 | 
             
                  [:igPushItemWidth, [:float], :void],
         | 
| 3010 3232 | 
             
                  [:igPushStyleColor_U32, [:int, :uint], :void],
         | 
| 3011 3233 | 
             
                  [:igPushStyleColor_Vec4, [:int, ImVec4.by_value], :void],
         | 
| 3012 3234 | 
             
                  [:igPushStyleVar_Float, [:int, :float], :void],
         | 
| 3013 3235 | 
             
                  [:igPushStyleVar_Vec2, [:int, ImVec2.by_value], :void],
         | 
| 3014 | 
            -
                  [: | 
| 3236 | 
            +
                  [:igPushStyleVarX, [:int, :float], :void],
         | 
| 3237 | 
            +
                  [:igPushStyleVarY, [:int, :float], :void],
         | 
| 3015 3238 | 
             
                  [:igPushTextWrapPos, [:float], :void],
         | 
| 3016 3239 | 
             
                  [:igRadioButton_Bool, [:pointer, :bool], :bool],
         | 
| 3017 3240 | 
             
                  [:igRadioButton_IntPtr, [:pointer, :pointer, :int], :bool],
         | 
| @@ -3036,6 +3259,7 @@ module ImGui | |
| 3036 3259 | 
             
                  [:igSetCursorScreenPos, [ImVec2.by_value], :void],
         | 
| 3037 3260 | 
             
                  [:igSetDragDropPayload, [:pointer, :pointer, :size_t, :int], :bool],
         | 
| 3038 3261 | 
             
                  [:igSetItemDefaultFocus, [], :void],
         | 
| 3262 | 
            +
                  [:igSetItemKeyOwner, [:int], :void],
         | 
| 3039 3263 | 
             
                  [:igSetItemTooltip, [:pointer, :varargs], :void],
         | 
| 3040 3264 | 
             
                  [:igSetKeyboardFocusHere, [:int], :void],
         | 
| 3041 3265 | 
             
                  [:igSetMouseCursor, [:int], :void],
         | 
| @@ -3043,7 +3267,9 @@ module ImGui | |
| 3043 3267 | 
             
                  [:igSetNextFrameWantCaptureMouse, [:bool], :void],
         | 
| 3044 3268 | 
             
                  [:igSetNextItemAllowOverlap, [], :void],
         | 
| 3045 3269 | 
             
                  [:igSetNextItemOpen, [:bool, :int], :void],
         | 
| 3270 | 
            +
                  [:igSetNextItemSelectionUserData, [:int64], :void],
         | 
| 3046 3271 | 
             
                  [:igSetNextItemShortcut, [:int, :int], :void],
         | 
| 3272 | 
            +
                  [:igSetNextItemStorageID, [:uint], :void],
         | 
| 3047 3273 | 
             
                  [:igSetNextItemWidth, [:float], :void],
         | 
| 3048 3274 | 
             
                  [:igSetNextWindowBgAlpha, [:float], :void],
         | 
| 3049 3275 | 
             
                  [:igSetNextWindowCollapsed, [:bool, :int], :void],
         | 
| @@ -3218,6 +3444,7 @@ module ImGui | |
| 3218 3444 | 
             
              # Disabling [BETA API]
         | 
| 3219 3445 | 
             
              # - Disable all user interactions and dim items visuals (applying style.DisabledAlpha over current colors)
         | 
| 3220 3446 | 
             
              # - Those can be nested but it cannot be used to enable an already disabled section (a single BeginDisabled(true) in the stack is enough to keep everything disabled)
         | 
| 3447 | 
            +
              # - Tooltips windows by exception are opted out of disabling.
         | 
| 3221 3448 | 
             
              # - BeginDisabled(false) essentially does nothing useful but is provided to facilitate use of boolean expressions. If you can avoid calling BeginDisabled(False)/EndDisabled() best to avoid it.
         | 
| 3222 3449 | 
             
              def self.BeginDisabled(disabled = true)
         | 
| 3223 3450 | 
             
                igBeginDisabled(disabled)
         | 
| @@ -3290,6 +3517,20 @@ module ImGui | |
| 3290 3517 | 
             
                igBeginMenuBar()
         | 
| 3291 3518 | 
             
              end
         | 
| 3292 3519 |  | 
| 3520 | 
            +
              # arg: flags(ImGuiMultiSelectFlags), selection_size(int), items_count(int)
         | 
| 3521 | 
            +
              # ret: pointer
         | 
| 3522 | 
            +
              #
         | 
| 3523 | 
            +
              # Multi-selection system for Selectable(), Checkbox(), TreeNode() functions [BETA]
         | 
| 3524 | 
            +
              # - This enables standard multi-selection/range-selection idioms (CTRL+Mouse/Keyboard, SHIFT+Mouse/Keyboard, etc.) in a way that also allow a clipper to be used.
         | 
| 3525 | 
            +
              # - ImGuiSelectionUserData is often used to store your item index within the current view (but may store something else).
         | 
| 3526 | 
            +
              # - Read comments near ImGuiMultiSelectIO for instructions/details and see 'Demo->Widgets->Selection State & Multi-Select' for demo.
         | 
| 3527 | 
            +
              # - TreeNode() is technically supported but... using this correctly is more complicated. You need some sort of linear/random access to your tree,
         | 
| 3528 | 
            +
              #   which is suited to advanced trees setups already implementing filters and clipper. We will work simplifying the current demo.
         | 
| 3529 | 
            +
              # - 'selection_size' and 'items_count' parameters are optional and used by a few features. If they are costly for you to compute, you may avoid them.
         | 
| 3530 | 
            +
              def self.BeginMultiSelect(flags, selection_size = -1, items_count = -1)  # Implied selection_size = -1, items_count = -1
         | 
| 3531 | 
            +
                igBeginMultiSelect(flags, selection_size, items_count)
         | 
| 3532 | 
            +
              end
         | 
| 3533 | 
            +
             | 
| 3293 3534 | 
             
              # arg: str_id(const char*), flags(ImGuiWindowFlags)
         | 
| 3294 3535 | 
             
              # ret: bool
         | 
| 3295 3536 | 
             
              #
         | 
| @@ -3384,7 +3625,8 @@ module ImGui | |
| 3384 3625 | 
             
              #
         | 
| 3385 3626 | 
             
              # Tooltips
         | 
| 3386 3627 | 
             
              # - Tooltips are windows following the mouse. They do not take focus away.
         | 
| 3387 | 
            -
              # - A tooltip window can contain items of any types. | 
| 3628 | 
            +
              # - A tooltip window can contain items of any types.
         | 
| 3629 | 
            +
              # - SetTooltip() is more or less a shortcut for the 'if (BeginTooltip()) { Text(...); EndTooltip(); }' idiom (with a subtlety that it discard any previously submitted tooltip)
         | 
| 3388 3630 | 
             
              def self.BeginTooltip()  # begin/append a tooltip window.
         | 
| 3389 3631 | 
             
                igBeginTooltip()
         | 
| 3390 3632 | 
             
              end
         | 
| @@ -3522,13 +3764,13 @@ module ImGui | |
| 3522 3764 | 
             
                igColorPicker4(label, col, flags, ref_col)
         | 
| 3523 3765 | 
             
              end
         | 
| 3524 3766 |  | 
| 3525 | 
            -
              # arg: count(int), id(const char*),  | 
| 3767 | 
            +
              # arg: count(int), id(const char*), borders(bool)
         | 
| 3526 3768 | 
             
              # ret: void
         | 
| 3527 3769 | 
             
              #
         | 
| 3528 3770 | 
             
              # Legacy Columns API (prefer using Tables!)
         | 
| 3529 3771 | 
             
              # - You can also use SameLine(pos_x) to mimic simplified columns.
         | 
| 3530 | 
            -
              def self.Columns(count = 1, id = nil,  | 
| 3531 | 
            -
                igColumns(count, id,  | 
| 3772 | 
            +
              def self.Columns(count = 1, id = nil, borders = true)  # Implied count = 1, id = NULL, borders = true
         | 
| 3773 | 
            +
                igColumns(count, id, borders)
         | 
| 3532 3774 | 
             
              end
         | 
| 3533 3775 |  | 
| 3534 3776 | 
             
              # arg: label(const char*), current_item(int*), items(const char* const[]), items_count(int), popup_max_height_in_items(int)
         | 
| @@ -3574,7 +3816,7 @@ module ImGui | |
| 3574 3816 |  | 
| 3575 3817 | 
             
              # arg: fmt(const char*), ...(...)
         | 
| 3576 3818 | 
             
              # ret: void
         | 
| 3577 | 
            -
              def self.DebugLog(fmt, *varargs)
         | 
| 3819 | 
            +
              def self.DebugLog(fmt, *varargs)  # Call via IMGUI_DEBUG_LOG() for maximum stripping in caller code!
         | 
| 3578 3820 | 
             
                igDebugLog(fmt, *varargs)
         | 
| 3579 3821 | 
             
              end
         | 
| 3580 3822 |  | 
| @@ -3749,6 +3991,11 @@ module ImGui | |
| 3749 3991 | 
             
                igEndMenuBar()
         | 
| 3750 3992 | 
             
              end
         | 
| 3751 3993 |  | 
| 3994 | 
            +
              # ret: pointer
         | 
| 3995 | 
            +
              def self.EndMultiSelect()
         | 
| 3996 | 
            +
                igEndMultiSelect()
         | 
| 3997 | 
            +
              end
         | 
| 3998 | 
            +
             | 
| 3752 3999 | 
             
              # ret: void
         | 
| 3753 4000 | 
             
              def self.EndPopup()  # only call EndPopup() if BeginPopupXXX() returns true!
         | 
| 3754 4001 | 
             
                igEndPopup()
         | 
| @@ -3783,7 +4030,7 @@ module ImGui | |
| 3783 4030 | 
             
              # ret: pointer
         | 
| 3784 4031 | 
             
              #
         | 
| 3785 4032 | 
             
              # Background/Foreground Draw Lists
         | 
| 3786 | 
            -
              def self.GetBackgroundDrawList()  #  | 
| 4033 | 
            +
              def self.GetBackgroundDrawList()  # Implied viewport = NULL
         | 
| 3787 4034 | 
             
                igGetBackgroundDrawList()
         | 
| 3788 4035 | 
             
              end
         | 
| 3789 4036 |  | 
| @@ -3836,30 +4083,19 @@ module ImGui | |
| 3836 4083 | 
             
              end
         | 
| 3837 4084 |  | 
| 3838 4085 | 
             
              # ret: void
         | 
| 3839 | 
            -
              #
         | 
| 3840 | 
            -
              # Content region
         | 
| 3841 | 
            -
              # - Retrieve available space from a given point. GetContentRegionAvail() is frequently useful.
         | 
| 3842 | 
            -
              # - Those functions are bound to be redesigned (they are confusing, incomplete and the Min/Max return values are in local window coordinates which increases confusion)
         | 
| 3843 | 
            -
              def self.GetContentRegionAvail()  # == GetContentRegionMax() - GetCursorPos()
         | 
| 4086 | 
            +
              def self.GetContentRegionAvail()  # available space from current position. THIS IS YOUR BEST FRIEND.
         | 
| 3844 4087 | 
             
                pOut = ImVec2.new
         | 
| 3845 4088 | 
             
                igGetContentRegionAvail(pOut)
         | 
| 3846 4089 | 
             
                return pOut
         | 
| 3847 4090 | 
             
              end
         | 
| 3848 4091 |  | 
| 3849 | 
            -
              # ret: void
         | 
| 3850 | 
            -
              def self.GetContentRegionMax()  # current content boundaries (typically window boundaries including scrolling, or current column boundaries), in windows coordinates
         | 
| 3851 | 
            -
                pOut = ImVec2.new
         | 
| 3852 | 
            -
                igGetContentRegionMax(pOut)
         | 
| 3853 | 
            -
                return pOut
         | 
| 3854 | 
            -
              end
         | 
| 3855 | 
            -
             | 
| 3856 4092 | 
             
              # ret: pointer
         | 
| 3857 4093 | 
             
              def self.GetCurrentContext()
         | 
| 3858 4094 | 
             
                igGetCurrentContext()
         | 
| 3859 4095 | 
             
              end
         | 
| 3860 4096 |  | 
| 3861 4097 | 
             
              # ret: void
         | 
| 3862 | 
            -
              def self.GetCursorPos()  # [window-local] cursor position in window coordinates  | 
| 4098 | 
            +
              def self.GetCursorPos()  # [window-local] cursor position in window-local coordinates. This is not your best friend.
         | 
| 3863 4099 | 
             
                pOut = ImVec2.new
         | 
| 3864 4100 | 
             
                igGetCursorPos(pOut)
         | 
| 3865 4101 | 
             
                return pOut
         | 
| @@ -3881,18 +4117,20 @@ module ImGui | |
| 3881 4117 | 
             
              # - By "cursor" we mean the current output position.
         | 
| 3882 4118 | 
             
              # - The typical widget behavior is to output themselves at the current cursor position, then move the cursor one line down.
         | 
| 3883 4119 | 
             
              # - You can call SameLine() between widgets to undo the last carriage return and output at the right of the preceding widget.
         | 
| 4120 | 
            +
              # - YOU CAN DO 99% OF WHAT YOU NEED WITH ONLY GetCursorScreenPos() and GetContentRegionAvail().
         | 
| 3884 4121 | 
             
              # - Attention! We currently have inconsistencies between window-local and absolute positions we will aim to fix with future API:
         | 
| 3885 4122 | 
             
              #    - Absolute coordinate:        GetCursorScreenPos(), SetCursorScreenPos(), all ImDrawList:: functions. -> this is the preferred way forward.
         | 
| 3886 | 
            -
              #    - Window-local coordinates:   SameLine(), GetCursorPos(), SetCursorPos(), GetCursorStartPos(),  | 
| 3887 | 
            -
              # -  | 
| 3888 | 
            -
               | 
| 4123 | 
            +
              #    - Window-local coordinates:   SameLine(offset), GetCursorPos(), SetCursorPos(), GetCursorStartPos(), PushTextWrapPos()
         | 
| 4124 | 
            +
              #    - Window-local coordinates:   GetContentRegionMax(), GetWindowContentRegionMin(), GetWindowContentRegionMax() --> all obsoleted. YOU DON'T NEED THEM.
         | 
| 4125 | 
            +
              # - GetCursorScreenPos() = GetCursorPos() + GetWindowPos(). GetWindowPos() is almost only ever useful to convert from window-local to absolute coordinates. Try not to use it.
         | 
| 4126 | 
            +
              def self.GetCursorScreenPos()  # cursor position, absolute coordinates. THIS IS YOUR BEST FRIEND (prefer using this rather than GetCursorPos(), also more useful to work with ImDrawList API).
         | 
| 3889 4127 | 
             
                pOut = ImVec2.new
         | 
| 3890 4128 | 
             
                igGetCursorScreenPos(pOut)
         | 
| 3891 4129 | 
             
                return pOut
         | 
| 3892 4130 | 
             
              end
         | 
| 3893 4131 |  | 
| 3894 4132 | 
             
              # ret: void
         | 
| 3895 | 
            -
              def self.GetCursorStartPos()  # [window-local] initial cursor position, in window coordinates
         | 
| 4133 | 
            +
              def self.GetCursorStartPos()  # [window-local] initial cursor position, in window-local coordinates. Call GetCursorScreenPos() after Begin() to get the absolute coordinates version.
         | 
| 3896 4134 | 
             
                pOut = ImVec2.new
         | 
| 3897 4135 | 
             
                igGetCursorStartPos(pOut)
         | 
| 3898 4136 | 
             
                return pOut
         | 
| @@ -3927,14 +4165,14 @@ module ImGui | |
| 3927 4165 | 
             
              end
         | 
| 3928 4166 |  | 
| 3929 4167 | 
             
              # ret: void
         | 
| 3930 | 
            -
              def self.GetFontTexUvWhitePixel()  # get UV coordinate for a  | 
| 4168 | 
            +
              def self.GetFontTexUvWhitePixel()  # get UV coordinate for a white pixel, useful to draw custom shapes via the ImDrawList API
         | 
| 3931 4169 | 
             
                pOut = ImVec2.new
         | 
| 3932 4170 | 
             
                igGetFontTexUvWhitePixel(pOut)
         | 
| 3933 4171 | 
             
                return pOut
         | 
| 3934 4172 | 
             
              end
         | 
| 3935 4173 |  | 
| 3936 4174 | 
             
              # ret: pointer
         | 
| 3937 | 
            -
              def self.GetForegroundDrawList()  #  | 
| 4175 | 
            +
              def self.GetForegroundDrawList()  # Implied viewport = NULL
         | 
| 3938 4176 | 
             
                igGetForegroundDrawList()
         | 
| 3939 4177 | 
             
              end
         | 
| 3940 4178 |  | 
| @@ -3971,10 +4209,16 @@ module ImGui | |
| 3971 4209 | 
             
                igGetID_Ptr(ptr_id)
         | 
| 3972 4210 | 
             
              end
         | 
| 3973 4211 |  | 
| 4212 | 
            +
              # arg: int_id(int)
         | 
| 4213 | 
            +
              # ret: uint
         | 
| 4214 | 
            +
              def self.GetID_Int(int_id)
         | 
| 4215 | 
            +
                igGetID_Int(int_id)
         | 
| 4216 | 
            +
              end
         | 
| 4217 | 
            +
             | 
| 3974 4218 | 
             
              # ret: pointer
         | 
| 3975 4219 | 
             
              #
         | 
| 3976 4220 | 
             
              # Main
         | 
| 3977 | 
            -
              def self.GetIO()  # access the  | 
| 4221 | 
            +
              def self.GetIO()  # access the ImGuiIO structure (mouse/keyboard/gamepad inputs, time, various configuration options/flags)
         | 
| 3978 4222 | 
             
                igGetIO()
         | 
| 3979 4223 | 
             
              end
         | 
| 3980 4224 |  | 
| @@ -4039,7 +4283,7 @@ module ImGui | |
| 4039 4283 |  | 
| 4040 4284 | 
             
              # arg: button(ImGuiMouseButton), lock_threshold(float)
         | 
| 4041 4285 | 
             
              # ret: void
         | 
| 4042 | 
            -
              def self.GetMouseDragDelta(button = 0, lock_threshold = -1.0)  # return the delta from the initial clicking position while the mouse button is pressed or was just released. This is locked and return 0.0f until the mouse moves past a distance threshold at least once (if lock_threshold <  | 
| 4286 | 
            +
              def self.GetMouseDragDelta(button = 0, lock_threshold = -1.0)  # return the delta from the initial clicking position while the mouse button is pressed or was just released. This is locked and return 0.0f until the mouse moves past a distance threshold at least once (uses io.MouseDraggingThreshold if lock_threshold < 0.0f)
         | 
| 4043 4287 | 
             
                pOut = ImVec2.new
         | 
| 4044 4288 | 
             
                igGetMouseDragDelta(pOut, button, lock_threshold)
         | 
| 4045 4289 | 
             
                return pOut
         | 
| @@ -4059,6 +4303,11 @@ module ImGui | |
| 4059 4303 | 
             
                return pOut
         | 
| 4060 4304 | 
             
              end
         | 
| 4061 4305 |  | 
| 4306 | 
            +
              # ret: pointer
         | 
| 4307 | 
            +
              def self.GetPlatformIO()  # access the ImGuiPlatformIO structure (mostly hooks/functions to connect to platform/renderer and OS Clipboard, IME etc.)
         | 
| 4308 | 
            +
                igGetPlatformIO()
         | 
| 4309 | 
            +
              end
         | 
| 4310 | 
            +
             | 
| 4062 4311 | 
             
              # ret: float
         | 
| 4063 4312 | 
             
              def self.GetScrollMaxX()  # get maximum scrolling amount ~~ ContentSize.x - WindowSize.x - DecorationsSize.x
         | 
| 4064 4313 | 
             
                igGetScrollMaxX()
         | 
| @@ -4130,46 +4379,32 @@ module ImGui | |
| 4130 4379 | 
             
                igGetVersion()
         | 
| 4131 4380 | 
             
              end
         | 
| 4132 4381 |  | 
| 4133 | 
            -
              # ret: void
         | 
| 4134 | 
            -
              def self.GetWindowContentRegionMax()  # content boundaries max for the full window (roughly (0,0)+Size-Scroll) where Size can be overridden with SetNextWindowContentSize(), in window coordinates
         | 
| 4135 | 
            -
                pOut = ImVec2.new
         | 
| 4136 | 
            -
                igGetWindowContentRegionMax(pOut)
         | 
| 4137 | 
            -
                return pOut
         | 
| 4138 | 
            -
              end
         | 
| 4139 | 
            -
             | 
| 4140 | 
            -
              # ret: void
         | 
| 4141 | 
            -
              def self.GetWindowContentRegionMin()  # content boundaries min for the full window (roughly (0,0)-Scroll), in window coordinates
         | 
| 4142 | 
            -
                pOut = ImVec2.new
         | 
| 4143 | 
            -
                igGetWindowContentRegionMin(pOut)
         | 
| 4144 | 
            -
                return pOut
         | 
| 4145 | 
            -
              end
         | 
| 4146 | 
            -
             | 
| 4147 4382 | 
             
              # ret: pointer
         | 
| 4148 4383 | 
             
              def self.GetWindowDrawList()  # get draw list associated to the current window, to append your own drawing primitives
         | 
| 4149 4384 | 
             
                igGetWindowDrawList()
         | 
| 4150 4385 | 
             
              end
         | 
| 4151 4386 |  | 
| 4152 4387 | 
             
              # ret: float
         | 
| 4153 | 
            -
              def self.GetWindowHeight()  # get current window height ( | 
| 4388 | 
            +
              def self.GetWindowHeight()  # get current window height (IT IS UNLIKELY YOU EVER NEED TO USE THIS). Shortcut for GetWindowSize().y.
         | 
| 4154 4389 | 
             
                igGetWindowHeight()
         | 
| 4155 4390 | 
             
              end
         | 
| 4156 4391 |  | 
| 4157 4392 | 
             
              # ret: void
         | 
| 4158 | 
            -
              def self.GetWindowPos()  # get current window position in screen space ( | 
| 4393 | 
            +
              def self.GetWindowPos()  # get current window position in screen space (IT IS UNLIKELY YOU EVER NEED TO USE THIS. Consider always using GetCursorScreenPos() and GetContentRegionAvail() instead)
         | 
| 4159 4394 | 
             
                pOut = ImVec2.new
         | 
| 4160 4395 | 
             
                igGetWindowPos(pOut)
         | 
| 4161 4396 | 
             
                return pOut
         | 
| 4162 4397 | 
             
              end
         | 
| 4163 4398 |  | 
| 4164 4399 | 
             
              # ret: void
         | 
| 4165 | 
            -
              def self.GetWindowSize()  # get current window size ( | 
| 4400 | 
            +
              def self.GetWindowSize()  # get current window size (IT IS UNLIKELY YOU EVER NEED TO USE THIS. Consider always using GetCursorScreenPos() and GetContentRegionAvail() instead)
         | 
| 4166 4401 | 
             
                pOut = ImVec2.new
         | 
| 4167 4402 | 
             
                igGetWindowSize(pOut)
         | 
| 4168 4403 | 
             
                return pOut
         | 
| 4169 4404 | 
             
              end
         | 
| 4170 4405 |  | 
| 4171 4406 | 
             
              # ret: float
         | 
| 4172 | 
            -
              def self.GetWindowWidth()  # get current window width ( | 
| 4407 | 
            +
              def self.GetWindowWidth()  # get current window width (IT IS UNLIKELY YOU EVER NEED TO USE THIS). Shortcut for GetWindowSize().x.
         | 
| 4173 4408 | 
             
                igGetWindowWidth()
         | 
| 4174 4409 | 
             
              end
         | 
| 4175 4410 |  | 
| @@ -4361,6 +4596,11 @@ module ImGui | |
| 4361 4596 | 
             
                igIsItemToggledOpen()
         | 
| 4362 4597 | 
             
              end
         | 
| 4363 4598 |  | 
| 4599 | 
            +
              # ret: bool
         | 
| 4600 | 
            +
              def self.IsItemToggledSelection()  # Was the last item selection state toggled? Useful if you need the per-item information _before_ reaching EndMultiSelect(). We only returns toggle _event_ in order to handle clipping correctly.
         | 
| 4601 | 
            +
                igIsItemToggledSelection()
         | 
| 4602 | 
            +
              end
         | 
| 4603 | 
            +
             | 
| 4364 4604 | 
             
              # ret: bool
         | 
| 4365 4605 | 
             
              def self.IsItemVisible()  # is the last item visible? (items may be out of sight because of clipping/scrolling)
         | 
| 4366 4606 | 
             
                igIsItemVisible()
         | 
| @@ -4421,7 +4661,7 @@ module ImGui | |
| 4421 4661 |  | 
| 4422 4662 | 
             
              # arg: button(ImGuiMouseButton), lock_threshold(float)
         | 
| 4423 4663 | 
             
              # ret: bool
         | 
| 4424 | 
            -
              def self.IsMouseDragging(button, lock_threshold = -1.0)  # is mouse dragging? (if lock_threshold <  | 
| 4664 | 
            +
              def self.IsMouseDragging(button, lock_threshold = -1.0)  # is mouse dragging? (uses io.MouseDraggingThreshold if lock_threshold < 0.0f)
         | 
| 4425 4665 | 
             
                igIsMouseDragging(button, lock_threshold)
         | 
| 4426 4666 | 
             
              end
         | 
| 4427 4667 |  | 
| @@ -4644,11 +4884,6 @@ module ImGui | |
| 4644 4884 | 
             
                igPlotLines_FnFloatPtr(label, values_getter, data, values_count, values_offset, overlay_text, scale_min, scale_max, graph_size)
         | 
| 4645 4885 | 
             
              end
         | 
| 4646 4886 |  | 
| 4647 | 
            -
              # ret: void
         | 
| 4648 | 
            -
              def self.PopButtonRepeat()
         | 
| 4649 | 
            -
                igPopButtonRepeat()
         | 
| 4650 | 
            -
              end
         | 
| 4651 | 
            -
             | 
| 4652 4887 | 
             
              # ret: void
         | 
| 4653 4888 | 
             
              def self.PopClipRect()
         | 
| 4654 4889 | 
             
                igPopClipRect()
         | 
| @@ -4664,6 +4899,11 @@ module ImGui | |
| 4664 4899 | 
             
                igPopID()
         | 
| 4665 4900 | 
             
              end
         | 
| 4666 4901 |  | 
| 4902 | 
            +
              # ret: void
         | 
| 4903 | 
            +
              def self.PopItemFlag()
         | 
| 4904 | 
            +
                igPopItemFlag()
         | 
| 4905 | 
            +
              end
         | 
| 4906 | 
            +
             | 
| 4667 4907 | 
             
              # ret: void
         | 
| 4668 4908 | 
             
              def self.PopItemWidth()
         | 
| 4669 4909 | 
             
                igPopItemWidth()
         | 
| @@ -4681,11 +4921,6 @@ module ImGui | |
| 4681 4921 | 
             
                igPopStyleVar(count)
         | 
| 4682 4922 | 
             
              end
         | 
| 4683 4923 |  | 
| 4684 | 
            -
              # ret: void
         | 
| 4685 | 
            -
              def self.PopTabStop()
         | 
| 4686 | 
            -
                igPopTabStop()
         | 
| 4687 | 
            -
              end
         | 
| 4688 | 
            -
             | 
| 4689 4924 | 
             
              # ret: void
         | 
| 4690 4925 | 
             
              def self.PopTextWrapPos()
         | 
| 4691 4926 | 
             
                igPopTextWrapPos()
         | 
| @@ -4697,12 +4932,6 @@ module ImGui | |
| 4697 4932 | 
             
                igProgressBar(fraction, size_arg, overlay)
         | 
| 4698 4933 | 
             
              end
         | 
| 4699 4934 |  | 
| 4700 | 
            -
              # arg: repeat(bool)
         | 
| 4701 | 
            -
              # ret: void
         | 
| 4702 | 
            -
              def self.PushButtonRepeat(repeat)  # in 'repeat' mode, Button*() functions return repeated true in a typematic manner (using io.KeyRepeatDelay/io.KeyRepeatRate setting). Note that you can call IsItemActive() after any Button() to tell if the button is held in the current frame.
         | 
| 4703 | 
            -
                igPushButtonRepeat(repeat)
         | 
| 4704 | 
            -
              end
         | 
| 4705 | 
            -
             | 
| 4706 4935 | 
             
              # arg: clip_rect_min(ImVec2), clip_rect_max(ImVec2), intersect_with_current_clip_rect(bool)
         | 
| 4707 4936 | 
             
              # ret: void
         | 
| 4708 4937 | 
             
              #
         | 
| @@ -4744,6 +4973,12 @@ module ImGui | |
| 4744 4973 | 
             
                igPushID_Int(int_id)
         | 
| 4745 4974 | 
             
              end
         | 
| 4746 4975 |  | 
| 4976 | 
            +
              # arg: option(ImGuiItemFlags), enabled(bool)
         | 
| 4977 | 
            +
              # ret: void
         | 
| 4978 | 
            +
              def self.PushItemFlag(option, enabled)  # modify specified shared item flag, e.g. PushItemFlag(ImGuiItemFlags_NoTabStop, true)
         | 
| 4979 | 
            +
                igPushItemFlag(option, enabled)
         | 
| 4980 | 
            +
              end
         | 
| 4981 | 
            +
             | 
| 4747 4982 | 
             
              # arg: item_width(float)
         | 
| 4748 4983 | 
             
              # ret: void
         | 
| 4749 4984 | 
             
              #
         | 
| @@ -4776,10 +5011,16 @@ module ImGui | |
| 4776 5011 | 
             
                igPushStyleVar_Vec2(idx, val)
         | 
| 4777 5012 | 
             
              end
         | 
| 4778 5013 |  | 
| 4779 | 
            -
              # arg:  | 
| 5014 | 
            +
              # arg: idx(ImGuiStyleVar), val_x(float)
         | 
| 5015 | 
            +
              # ret: void
         | 
| 5016 | 
            +
              def self.PushStyleVarX(idx, val_x)  # modify X component of a style ImVec2 variable. "
         | 
| 5017 | 
            +
                igPushStyleVarX(idx, val_x)
         | 
| 5018 | 
            +
              end
         | 
| 5019 | 
            +
             | 
| 5020 | 
            +
              # arg: idx(ImGuiStyleVar), val_y(float)
         | 
| 4780 5021 | 
             
              # ret: void
         | 
| 4781 | 
            -
              def self. | 
| 4782 | 
            -
                 | 
| 5022 | 
            +
              def self.PushStyleVarY(idx, val_y)  # modify Y component of a style ImVec2 variable. "
         | 
| 5023 | 
            +
                igPushStyleVarY(idx, val_y)
         | 
| 4783 5024 | 
             
              end
         | 
| 4784 5025 |  | 
| 4785 5026 | 
             
              # arg: wrap_local_pos_x(float)
         | 
| @@ -4915,7 +5156,7 @@ module ImGui | |
| 4915 5156 |  | 
| 4916 5157 | 
             
              # arg: pos(ImVec2)
         | 
| 4917 5158 | 
             
              # ret: void
         | 
| 4918 | 
            -
              def self.SetCursorScreenPos(pos)  # cursor position  | 
| 5159 | 
            +
              def self.SetCursorScreenPos(pos)  # cursor position, absolute coordinates. THIS IS YOUR BEST FRIEND.
         | 
| 4919 5160 | 
             
                igSetCursorScreenPos(pos)
         | 
| 4920 5161 | 
             
              end
         | 
| 4921 5162 |  | 
| @@ -4933,9 +5174,22 @@ module ImGui | |
| 4933 5174 | 
             
                igSetItemDefaultFocus()
         | 
| 4934 5175 | 
             
              end
         | 
| 4935 5176 |  | 
| 5177 | 
            +
              # arg: key(ImGuiKey)
         | 
| 5178 | 
            +
              # ret: void
         | 
| 5179 | 
            +
              #
         | 
| 5180 | 
            +
              # Inputs Utilities: Key/Input Ownership [BETA]
         | 
| 5181 | 
            +
              # - One common use case would be to allow your items to disable standard inputs behaviors such
         | 
| 5182 | 
            +
              #   as Tab or Alt key handling, Mouse Wheel scrolling, etc.
         | 
| 5183 | 
            +
              #   e.g. Button(...); SetItemKeyOwner(ImGuiKey_MouseWheelY); to make hovering/activating a button disable wheel for scrolling.
         | 
| 5184 | 
            +
              # - Reminder ImGuiKey enum include access to mouse buttons and gamepad, so key ownership can apply to them.
         | 
| 5185 | 
            +
              # - Many related features are still in imgui_internal.h. For instance, most IsKeyXXX()/IsMouseXXX() functions have an owner-id-aware version.
         | 
| 5186 | 
            +
              def self.SetItemKeyOwner(key)  # Set key owner to last item ID if it is hovered or active. Equivalent to 'if (IsItemHovered() || IsItemActive()) { SetKeyOwner(key, GetItemID());'.
         | 
| 5187 | 
            +
                igSetItemKeyOwner(key)
         | 
| 5188 | 
            +
              end
         | 
| 5189 | 
            +
             | 
| 4936 5190 | 
             
              # arg: fmt(const char*), ...(...)
         | 
| 4937 5191 | 
             
              # ret: void
         | 
| 4938 | 
            -
              def self.SetItemTooltip(fmt, *varargs)  # set a text-only tooltip if  | 
| 5192 | 
            +
              def self.SetItemTooltip(fmt, *varargs)  # set a text-only tooltip if preceding item was hovered. override any previous call to SetTooltip().
         | 
| 4939 5193 | 
             
                igSetItemTooltip(fmt, *varargs)
         | 
| 4940 5194 | 
             
              end
         | 
| 4941 5195 |  | 
| @@ -4976,12 +5230,24 @@ module ImGui | |
| 4976 5230 | 
             
                igSetNextItemOpen(is_open, cond)
         | 
| 4977 5231 | 
             
              end
         | 
| 4978 5232 |  | 
| 5233 | 
            +
              # arg: selection_user_data(ImGuiSelectionUserData)
         | 
| 5234 | 
            +
              # ret: void
         | 
| 5235 | 
            +
              def self.SetNextItemSelectionUserData(selection_user_data)
         | 
| 5236 | 
            +
                igSetNextItemSelectionUserData(selection_user_data)
         | 
| 5237 | 
            +
              end
         | 
| 5238 | 
            +
             | 
| 4979 5239 | 
             
              # arg: key_chord(ImGuiKeyChord), flags(ImGuiInputFlags)
         | 
| 4980 5240 | 
             
              # ret: void
         | 
| 4981 5241 | 
             
              def self.SetNextItemShortcut(key_chord, flags = 0)
         | 
| 4982 5242 | 
             
                igSetNextItemShortcut(key_chord, flags)
         | 
| 4983 5243 | 
             
              end
         | 
| 4984 5244 |  | 
| 5245 | 
            +
              # arg: storage_id(ImGuiID)
         | 
| 5246 | 
            +
              # ret: void
         | 
| 5247 | 
            +
              def self.SetNextItemStorageID(storage_id)  # set id to use for open/close storage (default to same as item id).
         | 
| 5248 | 
            +
                igSetNextItemStorageID(storage_id)
         | 
| 5249 | 
            +
              end
         | 
| 5250 | 
            +
             | 
| 4985 5251 | 
             
              # arg: item_width(float)
         | 
| 4986 5252 | 
             
              # ret: void
         | 
| 4987 5253 | 
             
              def self.SetNextItemWidth(item_width)  # set width of the _next_ common large "item+label" widget. >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -FLT_MIN always align width to the right side)
         | 
| @@ -5147,6 +5413,22 @@ module ImGui | |
| 5147 5413 |  | 
| 5148 5414 | 
             
              # arg: key_chord(ImGuiKeyChord), flags(ImGuiInputFlags)
         | 
| 5149 5415 | 
             
              # ret: bool
         | 
| 5416 | 
            +
              #
         | 
| 5417 | 
            +
              # Inputs Utilities: Shortcut Testing & Routing [BETA]
         | 
| 5418 | 
            +
              # - ImGuiKeyChord = a ImGuiKey + optional ImGuiMod_Alt/ImGuiMod_Ctrl/ImGuiMod_Shift/ImGuiMod_Super.
         | 
| 5419 | 
            +
              #       ImGuiKey_C                          // Accepted by functions taking ImGuiKey or ImGuiKeyChord arguments)
         | 
| 5420 | 
            +
              #       ImGuiMod_Ctrl | ImGuiKey_C          // Accepted by functions taking ImGuiKeyChord arguments)
         | 
| 5421 | 
            +
              #   only ImGuiMod_XXX values are legal to combine with an ImGuiKey. You CANNOT combine two ImGuiKey values.
         | 
| 5422 | 
            +
              # - The general idea is that several callers may register interest in a shortcut, and only one owner gets it.
         | 
| 5423 | 
            +
              #      Parent   -> call Shortcut(Ctrl+S)    // When Parent is focused, Parent gets the shortcut.
         | 
| 5424 | 
            +
              #        Child1 -> call Shortcut(Ctrl+S)    // When Child1 is focused, Child1 gets the shortcut (Child1 overrides Parent shortcuts)
         | 
| 5425 | 
            +
              #        Child2 -> no call                  // When Child2 is focused, Parent gets the shortcut.
         | 
| 5426 | 
            +
              #   The whole system is order independent, so if Child1 makes its calls before Parent, results will be identical.
         | 
| 5427 | 
            +
              #   This is an important property as it facilitate working with foreign code or larger codebase.
         | 
| 5428 | 
            +
              # - To understand the difference:
         | 
| 5429 | 
            +
              #   - IsKeyChordPressed() compares mods and call IsKeyPressed() -> function has no side-effect.
         | 
| 5430 | 
            +
              #   - Shortcut() submits a route, routes are resolved, if it currently can be routed it calls IsKeyChordPressed() -> function has (desirable) side-effects as it can prevents another call from getting the route.
         | 
| 5431 | 
            +
              # - Visualize registered routes in 'Metrics/Debugger->Inputs'.
         | 
| 5150 5432 | 
             
              def self.Shortcut(key_chord, flags = 0)
         | 
| 5151 5433 | 
             
                igShortcut(key_chord, flags)
         | 
| 5152 5434 | 
             
              end
         | 
| @@ -5344,7 +5626,7 @@ module ImGui | |
| 5344 5626 | 
             
              end
         | 
| 5345 5627 |  | 
| 5346 5628 | 
             
              # ret: int
         | 
| 5347 | 
            -
              def self.TableGetHoveredColumn()
         | 
| 5629 | 
            +
              def self.TableGetHoveredColumn()  # return hovered column. return -1 when table is not hovered. return columns_count if the unused space at the right of visible columns is hovered. Can also use (TableGetColumnFlags() & ImGuiTableColumnFlags_IsHovered) instead.
         | 
| 5348 5630 | 
             
                igTableGetHoveredColumn()
         | 
| 5349 5631 | 
             
              end
         | 
| 5350 5632 |  | 
| @@ -5446,13 +5728,13 @@ module ImGui | |
| 5446 5728 |  | 
| 5447 5729 | 
             
              # arg: label(const char*)
         | 
| 5448 5730 | 
             
              # ret: bool
         | 
| 5449 | 
            -
              def self.TextLink(label)
         | 
| 5731 | 
            +
              def self.TextLink(label)  # hyperlink text button, return true when clicked
         | 
| 5450 5732 | 
             
                igTextLink(label)
         | 
| 5451 5733 | 
             
              end
         | 
| 5452 5734 |  | 
| 5453 5735 | 
             
              # arg: label(const char*), url(const char*)
         | 
| 5454 5736 | 
             
              # ret: void
         | 
| 5455 | 
            -
              def self.TextLinkOpenURL(label, url = nil)
         | 
| 5737 | 
            +
              def self.TextLinkOpenURL(label, url = nil)  # Implied url = NULL
         | 
| 5456 5738 | 
             
                igTextLinkOpenURL(label, url)
         | 
| 5457 5739 | 
             
              end
         | 
| 5458 5740 |  | 
| @@ -5577,10 +5859,10 @@ module ImGui | |
| 5577 5859 | 
             
              # Child Windows
         | 
| 5578 5860 | 
             
              # - Use child windows to begin into a self-contained independent scrolling/clipping regions within a host window. Child windows can embed their own child.
         | 
| 5579 5861 | 
             
              # - Before 1.90 (November 2023), the "ImGuiChildFlags child_flags = 0" parameter was "bool border = false".
         | 
| 5580 | 
            -
              #   This API is backward compatible with old code, as we guarantee that  | 
| 5862 | 
            +
              #   This API is backward compatible with old code, as we guarantee that ImGuiChildFlags_Borders == true.
         | 
| 5581 5863 | 
             
              #   Consider updating your old code:
         | 
| 5582 5864 | 
             
              #      BeginChild("Name", size, false)   -> Begin("Name", size, 0); or Begin("Name", size, ImGuiChildFlags_None);
         | 
| 5583 | 
            -
              #      BeginChild("Name", size, true)    -> Begin("Name", size,  | 
| 5865 | 
            +
              #      BeginChild("Name", size, true)    -> Begin("Name", size, ImGuiChildFlags_Borders);
         | 
| 5584 5866 | 
             
              # - Manual sizing (each axis can use a different setting e.g. ImVec2(0.0f, 400.0f)):
         | 
| 5585 5867 | 
             
              #     == 0.0f: use remaining parent window size for this axis.
         | 
| 5586 5868 | 
             
              #      > 0.0f: use specified size for this axis.
         | 
| @@ -5658,6 +5940,9 @@ module ImGui | |
| 5658 5940 | 
             
                # arg: 0:ptr_id(const void*)
         | 
| 5659 5941 | 
             
                # ret: uint
         | 
| 5660 5942 | 
             
                return igGetID_Ptr(arg[0]) if arg.length == 1 && (arg[0].kind_of?(FFI::Pointer))
         | 
| 5943 | 
            +
                # arg: 0:int_id(int)
         | 
| 5944 | 
            +
                # ret: uint
         | 
| 5945 | 
            +
                return igGetID_Int(arg[0]) if arg.length == 1 && (arg[0].kind_of?(Integer))
         | 
| 5661 5946 | 
             
                $stderr.puts("[Warning] GetID : No matching functions found (#{arg})")
         | 
| 5662 5947 | 
             
              end
         | 
| 5663 5948 |  | 
| @@ -5771,7 +6056,7 @@ module ImGui | |
| 5771 6056 | 
             
                $stderr.puts("[Warning] PushStyleColor : No matching functions found (#{arg})")
         | 
| 5772 6057 | 
             
              end
         | 
| 5773 6058 |  | 
| 5774 | 
            -
              def self.PushStyleVar(*arg)  # modify a style float variable. always use this if you modify the style after NewFrame() | 
| 6059 | 
            +
              def self.PushStyleVar(*arg)  # modify a style float variable. always use this if you modify the style after NewFrame()!
         | 
| 5775 6060 | 
             
                # arg: 0:idx(ImGuiStyleVar), 1:val(float)
         | 
| 5776 6061 | 
             
                # ret: void
         | 
| 5777 6062 | 
             
                return igPushStyleVar_Float(arg[0], arg[1]) if arg.length == 2 && (arg[0].kind_of?(Integer) && arg[1].kind_of?(Float))
         |