diff --git a/bindings/odin/clay-odin/clay.odin b/bindings/odin/clay-odin/clay.odin index 9d7a73a..461a454 100644 --- a/bindings/odin/clay-odin/clay.odin +++ b/bindings/odin/clay-odin/clay.odin @@ -103,7 +103,7 @@ TextAlignment :: enum EnumBackingType { } TextElementConfig :: struct { - userData: rawptr, + userData: rawptr, textColor: Color, fontId: u16, fontSize: u16, @@ -135,9 +135,10 @@ BorderElementConfig :: struct { width: BorderWidth, } -ScrollElementConfig :: struct { - horizontal: bool, - vertical: bool, +ClipElementConfig :: struct { + horizontal: bool, // clip overflowing elements on the "X" axis + vertical: bool, // clip overflowing elements on the "Y" axis + childOffset: Vector2, // offsets the [X,Y] positions of all child elements, primarily for scrolling containers } FloatingAttachPointType :: enum EnumBackingType { @@ -235,7 +236,7 @@ ScrollContainerData :: struct { scrollPosition: ^Vector2, scrollContainerDimensions: Dimensions, contentDimensions: Dimensions, - config: ScrollElementConfig, + config: ClipElementConfig, // Indicates whether an actual scroll container matched the provided ID or if the default struct was returned. found: bool, } @@ -329,16 +330,16 @@ ClayArray :: struct($type: typeid) { } ElementDeclaration :: struct { - id: ElementId, - layout: LayoutConfig, + id: ElementId, + layout: LayoutConfig, backgroundColor: Color, - cornerRadius: CornerRadius, - image: ImageElementConfig, - floating: FloatingElementConfig, - custom: CustomElementConfig, - scroll: ScrollElementConfig, - border: BorderElementConfig, - userData: rawptr, + cornerRadius: CornerRadius, + image: ImageElementConfig, + floating: FloatingElementConfig, + custom: CustomElementConfig, + clip: ClipElementConfig, + border: BorderElementConfig, + userData: rawptr, } ErrorType :: enum EnumBackingType { @@ -385,6 +386,7 @@ foreign Clay { Hovered :: proc() -> bool --- OnHover :: proc(onHoverFunction: proc "c" (id: ElementId, pointerData: PointerData, userData: rawptr), userData: rawptr) --- PointerOver :: proc(id: ElementId) -> bool --- + GetScrollOffset :: proc() -> Vector2 --- GetScrollContainerData :: proc(id: ElementId) -> ScrollContainerData --- SetMeasureTextFunction :: proc(measureTextFunction: proc "c" (text: StringSlice, config: ^TextElementConfig, userData: rawptr) -> Dimensions, userData: rawptr) --- SetQueryScrollOffsetFunction :: proc(queryScrollOffsetFunction: proc "c" (elementId: u32, userData: rawptr) -> Vector2, userData: rawptr) --- diff --git a/bindings/odin/clay-odin/linux/clay.a b/bindings/odin/clay-odin/linux/clay.a index 8352290..1c94a68 100644 Binary files a/bindings/odin/clay-odin/linux/clay.a and b/bindings/odin/clay-odin/linux/clay.a differ diff --git a/bindings/odin/clay-odin/macos-arm64/clay.a b/bindings/odin/clay-odin/macos-arm64/clay.a index 8c91161..63d5b46 100644 Binary files a/bindings/odin/clay-odin/macos-arm64/clay.a and b/bindings/odin/clay-odin/macos-arm64/clay.a differ diff --git a/bindings/odin/clay-odin/macos/clay.a b/bindings/odin/clay-odin/macos/clay.a index e56ff15..1534a84 100644 Binary files a/bindings/odin/clay-odin/macos/clay.a and b/bindings/odin/clay-odin/macos/clay.a differ diff --git a/bindings/odin/clay-odin/wasm/clay.o b/bindings/odin/clay-odin/wasm/clay.o index fc3cf41..09186b4 100644 Binary files a/bindings/odin/clay-odin/wasm/clay.o and b/bindings/odin/clay-odin/wasm/clay.o differ diff --git a/bindings/odin/clay-odin/windows/clay.lib b/bindings/odin/clay-odin/windows/clay.lib index 8bc2215..e49ae9e 100644 Binary files a/bindings/odin/clay-odin/windows/clay.lib and b/bindings/odin/clay-odin/windows/clay.lib differ diff --git a/bindings/odin/examples/clay-official-website/clay-official-website.odin b/bindings/odin/examples/clay-official-website/clay-official-website.odin index 07566e0..1b7c7f0 100644 --- a/bindings/odin/examples/clay-official-website/clay-official-website.odin +++ b/bindings/odin/examples/clay-official-website/clay-official-website.odin @@ -451,7 +451,7 @@ createLayout :: proc(lerpValue: f32) -> clay.ClayArray(clay.RenderCommand) { if clay.UI()({ id = clay.ID("TopBorder5"), layout = { sizing = { clay.SizingGrow({ }), clay.SizingFixed(4) } }, backgroundColor = COLOR_TOP_BORDER_1 } ) {} if clay.UI()({ id = clay.ID("ScrollContainerBackgroundRectangle"), - scroll = { vertical = true }, + clip = { vertical = true, childOffset = clay.GetScrollOffset() }, layout = { sizing = { clay.SizingGrow({ }), clay.SizingGrow({ }) }, layoutDirection = clay.LayoutDirection.TopToBottom }, backgroundColor = COLOR_LIGHT, border = { COLOR_RED, { betweenChildren = 2} },