From e3dacd93709688036624fa50a28ffa51824236e1 Mon Sep 17 00:00:00 2001 From: Nic Barker Date: Sat, 28 Sep 2024 15:35:26 +1200 Subject: [PATCH] Fix issue with multiple translation units and add a test --- clay.h | 2 +- examples/raylib-sidebar-scrolling-container/CMakeLists.txt | 2 +- examples/raylib-sidebar-scrolling-container/main.c | 2 +- .../multi-compilation-unit.c | 7 +++++++ 4 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 examples/raylib-sidebar-scrolling-container/multi-compilation-unit.c diff --git a/clay.h b/clay.h index 5a3fe0a..ac9e1c6 100644 --- a/clay.h +++ b/clay.h @@ -76,7 +76,7 @@ #define CLAY_STRING(string) (Clay_String) { .length = CLAY__STRING_LENGTH(string), .chars = (string) } -int CLAY__ELEMENT_DEFINITION_LATCH = 0; +static int CLAY__ELEMENT_DEFINITION_LATCH = 0; #define CLAY__ELEMENT_INTERNAL(open, close, ...) \ for (\ diff --git a/examples/raylib-sidebar-scrolling-container/CMakeLists.txt b/examples/raylib-sidebar-scrolling-container/CMakeLists.txt index eabc9c6..7fe58fd 100644 --- a/examples/raylib-sidebar-scrolling-container/CMakeLists.txt +++ b/examples/raylib-sidebar-scrolling-container/CMakeLists.txt @@ -19,7 +19,7 @@ FetchContent_MakeAvailable(raylib) set(CMAKE_C_STANDARD 99) -add_executable(clay_examples_raylib_sidebar_scrolling_container main.c) +add_executable(clay_examples_raylib_sidebar_scrolling_container main.c multi-compilation-unit.c) target_compile_options(clay_examples_raylib_sidebar_scrolling_container PUBLIC -Wall -Werror -Wno-unknown-pragmas) target_include_directories(clay_examples_raylib_sidebar_scrolling_container PUBLIC .) diff --git a/examples/raylib-sidebar-scrolling-container/main.c b/examples/raylib-sidebar-scrolling-container/main.c index cca40c1..b2df1fe 100644 --- a/examples/raylib-sidebar-scrolling-container/main.c +++ b/examples/raylib-sidebar-scrolling-container/main.c @@ -111,7 +111,7 @@ Clay_RenderCommandArray CreateLayout() { } Clay_ScrollContainerData scrollData = Clay_GetScrollContainerData(CLAY_ID("MainContent")); CLAY_FLOATING_CONTAINER(CLAY_ID("ScrollBar"), &CLAY_LAYOUT_DEFAULT, CLAY_FLOATING_CONFIG(.offset = { .y = -(scrollData.scrollPosition->y / scrollData.contentDimensions.height) * scrollData.scrollContainerDimensions.height }, .zIndex = 1, .parentId = CLAY_ID("MainContent").id, .attachment = {.element = CLAY_ATTACH_POINT_RIGHT_TOP, .parent = CLAY_ATTACH_POINT_RIGHT_TOP})) { - CLAY_RECTANGLE(CLAY_ID("ScrollBarButton"), CLAY_LAYOUT(.sizing = {CLAY_SIZING_FIXED(12), CLAY_SIZING_FIXED((scrollData.scrollContainerDimensions.height / scrollData.contentDimensions.height) * scrollData.scrollContainerDimensions.height)}), CLAY_RECTANGLE_CONFIG(.cornerRadius = 6, .color = Clay_PointerOver(CLAY_ID("ScrollBar")) ? (Clay_Color){100, 100, 140, 150} : (Clay_Color){120, 120, 160, 150})) {} + CLAY_RECTANGLE(CLAY_ID("ScrollBarButton"), CLAY_LAYOUT(.sizing = {CLAY_SIZING_FIXED(12), CLAY_SIZING_FIXED((scrollData.scrollContainerDimensions.height / scrollData.contentDimensions.height) * scrollData.scrollContainerDimensions.height)}), CLAY_RECTANGLE_CONFIG(.cornerRadius = {6}, .color = Clay_PointerOver(CLAY_ID("ScrollBar")) ? (Clay_Color){100, 100, 140, 150} : (Clay_Color){120, 120, 160, 150})) {} }; }; return Clay_EndLayout(); diff --git a/examples/raylib-sidebar-scrolling-container/multi-compilation-unit.c b/examples/raylib-sidebar-scrolling-container/multi-compilation-unit.c new file mode 100644 index 0000000..8d246be --- /dev/null +++ b/examples/raylib-sidebar-scrolling-container/multi-compilation-unit.c @@ -0,0 +1,7 @@ +#include "../../clay.h" + +// NOTE: This file only exists to make sure that clay works when included in multiple translation units. + +void SatisfyCompiler() { + CLAY_CONTAINER(CLAY_ID("SatisfyCompiler"), CLAY_LAYOUT()) {} +} \ No newline at end of file