From f4f04a17df7335ea36d2bf516f6b3c22dd211555 Mon Sep 17 00:00:00 2001 From: Insality Date: Sun, 24 May 2020 22:48:46 +0300 Subject: [PATCH] #65 Add hover set_enabled function, disabled button do not provide hover events --- druid/base/button.lua | 1 + druid/base/hover.lua | 31 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/druid/base/button.lua b/druid/base/button.lua index 08cb288..5ea8ad4 100644 --- a/druid/base/button.lua +++ b/druid/base/button.lua @@ -267,6 +267,7 @@ end -- @tparam bool state Enabled state function M.set_enabled(self, state) self.disabled = not state + self.hover:set_enabled(state) self.style.on_set_enabled(self, self.node, state) end diff --git a/druid/base/hover.lua b/druid/base/hover.lua index e4c9b8d..aabc0b3 100644 --- a/druid/base/hover.lua +++ b/druid/base/hover.lua @@ -24,6 +24,8 @@ function M.init(self, node, on_hover_callback) self._is_hovered = false self._is_mouse_hovered = false + self._is_enabled = true + self.on_hover = Event(on_hover_callback) self.on_mouse_hover = Event() end @@ -38,7 +40,7 @@ function M.on_input(self, action_id, action) return false end - if not helper.is_enabled(self.node) then + if not helper.is_enabled(self.node) or not self._is_enabled then return false end @@ -97,4 +99,31 @@ function M.set_click_zone(self, zone) end +--- Set enable state of hover component. +-- If hover is not enabled, it will not generate +-- any hover events +-- @function hover:set_enabled +-- @tparam bool state The hover enabled state +function M.set_enabled(self, state) + self._is_enabled = state + + if not state then + if self._is_hovered then + M.set_hover(false) + end + if self._is_mouse_hovered then + M.set_mouse_hover(false) + end + end +end + + +--- Return current hover enabled state +-- @function hover:is_enabled +-- @treturn bool The hover enabled state +function M.is_enabled(self) + return self._is_enabled +end + + return M