From 63c31aed16480126aef387255d2035aa942aa9d6 Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Sat, 6 Dec 2025 11:15:08 -0500 Subject: [PATCH] fixed regression --- modules/ScrollManager.lua | 7 ++++++- testing/__tests__/scroll_manager_test.lua | 15 ++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/modules/ScrollManager.lua b/modules/ScrollManager.lua index 646abde..f1322af 100644 --- a/modules/ScrollManager.lua +++ b/modules/ScrollManager.lua @@ -86,7 +86,12 @@ function ScrollManager.new(config, deps) self.scrollBarStyle = config.scrollBarStyle -- Theme scrollbar style name (nil = use default) -- scrollbarKnobOffset can be number or table {x, y} or {horizontal, vertical} - self.scrollbarKnobOffset = self._utils.normalizeOffsetTable(config.scrollbarKnobOffset, 0) + -- Only normalize if actually provided (nil means use theme default) + if config.scrollbarKnobOffset ~= nil then + self.scrollbarKnobOffset = self._utils.normalizeOffsetTable(config.scrollbarKnobOffset, 0) + else + self.scrollbarKnobOffset = nil + end -- hideScrollbars can be boolean or table {vertical: boolean, horizontal: boolean} self.hideScrollbars = self._utils.normalizeBooleanTable(config.hideScrollbars, false) diff --git a/testing/__tests__/scroll_manager_test.lua b/testing/__tests__/scroll_manager_test.lua index ef61136..3b34653 100644 --- a/testing/__tests__/scroll_manager_test.lua +++ b/testing/__tests__/scroll_manager_test.lua @@ -1056,12 +1056,17 @@ function TestScrollManagerEdgeCases:testScrollbarKnobOffsetTableHorizontalVertic end function TestScrollManagerEdgeCases:testScrollbarKnobOffsetDefault() + -- When not provided, scrollbarKnobOffset should be nil (use theme default) local sm = createScrollManager({}) - luaunit.assertNotNil(sm.scrollbarKnobOffset) - luaunit.assertEquals(sm.scrollbarKnobOffset.x, 0) - luaunit.assertEquals(sm.scrollbarKnobOffset.y, 0) - luaunit.assertEquals(sm.scrollbarKnobOffset.horizontal, 0) - luaunit.assertEquals(sm.scrollbarKnobOffset.vertical, 0) + luaunit.assertNil(sm.scrollbarKnobOffset) + + -- When explicitly set to 0, it should be normalized + local sm2 = createScrollManager({ scrollbarKnobOffset = 0 }) + luaunit.assertNotNil(sm2.scrollbarKnobOffset) + luaunit.assertEquals(sm2.scrollbarKnobOffset.x, 0) + luaunit.assertEquals(sm2.scrollbarKnobOffset.y, 0) + luaunit.assertEquals(sm2.scrollbarKnobOffset.horizontal, 0) + luaunit.assertEquals(sm2.scrollbarKnobOffset.vertical, 0) end function TestScrollManagerEdgeCases:testScrollbarKnobOffsetStatePersistence()