diff --git a/cursor.lua b/cursor.lua new file mode 100644 index 0000000..790ef34 --- /dev/null +++ b/cursor.lua @@ -0,0 +1,13 @@ +local cursor = {} + +function cursor.hand() + local c = love.mouse.getSystemCursor("hand") + love.mouse.setCursor(c) +end + +function cursor.default() + local c = love.mouse.getSystemCursor("arrow") + love.mouse.setCursor(c) +end + +return cursor \ No newline at end of file diff --git a/elements/basic.lua b/elements/basic.lua index 0c15281..1396f31 100644 --- a/elements/basic.lua +++ b/elements/basic.lua @@ -1,7 +1,7 @@ local ui = require("ui.main") local uie = require("ui.elements.main") local uiu = require("ui.utils") - +local cursor = require("ui.cursor") -- Basic panel with children elements. uie.add("panel", { @@ -557,6 +557,32 @@ uie.add("image", { end end end + end, +}) + +-- Clickable image. +uie.add("clickableImage", { + base = "image", + cb = nil, + interactive = 1, + + init = function(self, cb, ...) + uie.image.init(self, ...) + self.cb = cb + end, + + onClick = function(self) + if self.cb then + self.cb() + end + end, + + onEnter = function(self, _) + cursor.hand() + end, + + onLeave = function(self, _) + cursor.default() end })