From 59096348375491ea6c578e4ab38d3820e8affe4d Mon Sep 17 00:00:00 2001 From: BenDol Date: Sun, 13 Jul 2014 01:46:47 +1200 Subject: [PATCH 1/5] Avoid ending mouse scroll chain when scroll bar is 'off'. Also added mouse-scroll style to UISpinBox. --- modules/corelib/ui/uiscrollarea.lua | 6 ++++++ modules/corelib/ui/uispinbox.lua | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/modules/corelib/ui/uiscrollarea.lua b/modules/corelib/ui/uiscrollarea.lua index b9732acf..f5be74e1 100644 --- a/modules/corelib/ui/uiscrollarea.lua +++ b/modules/corelib/ui/uiscrollarea.lua @@ -107,12 +107,18 @@ end function UIScrollArea:onMouseWheel(mousePos, mouseWheel) if self.verticalScrollBar then + if not self.verticalScrollBar:isOn() then + return false + end if mouseWheel == MouseWheelUp then self.verticalScrollBar:decrement() else self.verticalScrollBar:increment() end elseif self.horizontalScrollBar then + if not self.horizontalScrollBar:isOn() then + return false + end if mouseWheel == MouseWheelUp then self.horizontalScrollBar:increment() else diff --git a/modules/corelib/ui/uispinbox.lua b/modules/corelib/ui/uispinbox.lua index d3c1fca7..6586bb6a 100644 --- a/modules/corelib/ui/uispinbox.lua +++ b/modules/corelib/ui/uispinbox.lua @@ -11,6 +11,7 @@ function UISpinBox.create() spinbox.value = 0 spinbox.step = 1 spinbox.firstchange = true + spinbox.mouseScroll = true spinbox:setText("0") return spinbox end @@ -21,6 +22,9 @@ function UISpinBox:onSetup() end function UISpinBox:onMouseWheel(mousePos, direction) + if not self.mouseScroll then + return false + end if direction == MouseWheelUp then self:up() elseif direction == MouseWheelDown then @@ -70,6 +74,8 @@ function UISpinBox:onStyleApply(styleName, styleNode) addEvent(function() self:setMaximum(value) end) elseif name == 'minimum' then addEvent(function() self:setMinimum(value) end) + elseif name == 'mouse-scroll' then + addEvent(function() self:setMouseScroll(value) end) elseif name == 'buttons' then addEvent(function() if value then @@ -157,3 +163,11 @@ end function UISpinBox:setStep(step) self.step = step or 1 end + +function UISpinBox:setMouseScroll(mouseScroll) + self.mouseScroll = mouseScroll +end + +function UISpinBox:getMouseScroll() + return self.mouseScroll +end \ No newline at end of file From d070711409b15b672738b0fae8b4632c6892eb20 Mon Sep 17 00:00:00 2001 From: BenDol Date: Sun, 13 Jul 2014 02:06:36 +1200 Subject: [PATCH 2/5] When reaching max or min scroll allow other scroll areas to scroll. --- modules/corelib/ui/uiscrollarea.lua | 14 ++++++++++++++ modules/corelib/ui/uiscrollbar.lua | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/corelib/ui/uiscrollarea.lua b/modules/corelib/ui/uiscrollarea.lua index f5be74e1..b15125ca 100644 --- a/modules/corelib/ui/uiscrollarea.lua +++ b/modules/corelib/ui/uiscrollarea.lua @@ -111,8 +111,15 @@ function UIScrollArea:onMouseWheel(mousePos, mouseWheel) return false end if mouseWheel == MouseWheelUp then + if self.verticalScrollBar:getValue() < 1 then + return false + end self.verticalScrollBar:decrement() else + local maximum = self.verticalScrollBar:getMaximum() + if self.verticalScrollBar:getValue() >= maximum then + return false + end self.verticalScrollBar:increment() end elseif self.horizontalScrollBar then @@ -120,8 +127,15 @@ function UIScrollArea:onMouseWheel(mousePos, mouseWheel) return false end if mouseWheel == MouseWheelUp then + local maximum = self.horizontalScrollBar:getMaximum() + if self.horizontalScrollBar:getValue() >= maximum then + return false + end self.horizontalScrollBar:increment() else + if self.horizontalScrollBar:getValue() < 1 then + return false + end self.horizontalScrollBar:decrement() end end diff --git a/modules/corelib/ui/uiscrollbar.lua b/modules/corelib/ui/uiscrollbar.lua index 236ec95c..67695b7e 100644 --- a/modules/corelib/ui/uiscrollbar.lua +++ b/modules/corelib/ui/uiscrollbar.lua @@ -234,19 +234,23 @@ function UIScrollBar:onGeometryChange() end function UIScrollBar:onMouseWheel(mousePos, mouseWheel) - if not self.mouseScroll then + if not self.mouseScroll or not self:isOn() then return false end if mouseWheel == MouseWheelUp then if self.orientation == 'vertical' then + if self.value < 1 then return false end self:decrement() else + if self.value >= self.maximum then return false end self:increment() end else if self.orientation == 'vertical' then + if self.value >= self.maximum then return false end self:increment() else + if self.value < 1 then return false end self:decrement() end end From 2ada93db9c2201bd6b8b6f7f1621ff41ebb98aca Mon Sep 17 00:00:00 2001 From: BenDol Date: Sun, 13 Jul 2014 02:08:33 +1200 Subject: [PATCH 3/5] Should use the set minimum for these! --- modules/corelib/ui/uiscrollarea.lua | 6 ++++-- modules/corelib/ui/uiscrollbar.lua | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/corelib/ui/uiscrollarea.lua b/modules/corelib/ui/uiscrollarea.lua index b15125ca..2c27416a 100644 --- a/modules/corelib/ui/uiscrollarea.lua +++ b/modules/corelib/ui/uiscrollarea.lua @@ -111,7 +111,8 @@ function UIScrollArea:onMouseWheel(mousePos, mouseWheel) return false end if mouseWheel == MouseWheelUp then - if self.verticalScrollBar:getValue() < 1 then + local minimum = self.verticalScrollBar:getMinimum() + if self.verticalScrollBar:getValue() < minimum then return false end self.verticalScrollBar:decrement() @@ -133,7 +134,8 @@ function UIScrollArea:onMouseWheel(mousePos, mouseWheel) end self.horizontalScrollBar:increment() else - if self.horizontalScrollBar:getValue() < 1 then + local minimum = self.horizontalScrollBar:getMinimum() + if self.horizontalScrollBar:getValue() < minimum then return false end self.horizontalScrollBar:decrement() diff --git a/modules/corelib/ui/uiscrollbar.lua b/modules/corelib/ui/uiscrollbar.lua index 67695b7e..c7ada55f 100644 --- a/modules/corelib/ui/uiscrollbar.lua +++ b/modules/corelib/ui/uiscrollbar.lua @@ -239,7 +239,7 @@ function UIScrollBar:onMouseWheel(mousePos, mouseWheel) end if mouseWheel == MouseWheelUp then if self.orientation == 'vertical' then - if self.value < 1 then return false end + if self.value <= self.minimum then return false end self:decrement() else if self.value >= self.maximum then return false end @@ -250,7 +250,7 @@ function UIScrollBar:onMouseWheel(mousePos, mouseWheel) if self.value >= self.maximum then return false end self:increment() else - if self.value < 1 then return false end + if self.value <= self.minimum then return false end self:decrement() end end From 7724b8059d4e297c700a654e7d490bae373c7c94 Mon Sep 17 00:00:00 2001 From: BenDol Date: Sun, 13 Jul 2014 02:10:30 +1200 Subject: [PATCH 4/5] Forgot this from previous commit. --- modules/corelib/ui/uiscrollarea.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/corelib/ui/uiscrollarea.lua b/modules/corelib/ui/uiscrollarea.lua index 2c27416a..5f274ecb 100644 --- a/modules/corelib/ui/uiscrollarea.lua +++ b/modules/corelib/ui/uiscrollarea.lua @@ -112,7 +112,7 @@ function UIScrollArea:onMouseWheel(mousePos, mouseWheel) end if mouseWheel == MouseWheelUp then local minimum = self.verticalScrollBar:getMinimum() - if self.verticalScrollBar:getValue() < minimum then + if self.verticalScrollBar:getValue() <= minimum then return false end self.verticalScrollBar:decrement() @@ -135,7 +135,7 @@ function UIScrollArea:onMouseWheel(mousePos, mouseWheel) self.horizontalScrollBar:increment() else local minimum = self.horizontalScrollBar:getMinimum() - if self.horizontalScrollBar:getValue() < minimum then + if self.horizontalScrollBar:getValue() <= minimum then return false end self.horizontalScrollBar:decrement() From f7531383f33ea2841d8c768be67cd55ff85e39c3 Mon Sep 17 00:00:00 2001 From: BenDol Date: Sun, 13 Jul 2014 03:57:38 +1200 Subject: [PATCH 5/5] Fix an issue with the spinbox buttons. --- modules/corelib/ui/uispinbox.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/corelib/ui/uispinbox.lua b/modules/corelib/ui/uispinbox.lua index 6586bb6a..484d363c 100644 --- a/modules/corelib/ui/uispinbox.lua +++ b/modules/corelib/ui/uispinbox.lua @@ -7,12 +7,13 @@ function UISpinBox.create() spinbox:setValidCharacters('0123456789') spinbox.displayButtons = true spinbox.minimum = 0 - spinbox.maximum = 0 + spinbox.maximum = 1 spinbox.value = 0 spinbox.step = 1 spinbox.firstchange = true spinbox.mouseScroll = true spinbox:setText("0") + spinbox:setValue(1) return spinbox end