From ed2f74b019a6552ca13114c730dc753a9d87f39c Mon Sep 17 00:00:00 2001 From: CarrieForle <53133715+CarrieForle@users.noreply.github.com> Date: Mon, 28 Jul 2025 12:23:26 +0800 Subject: [PATCH] add clickableImage UI element --- cursor.lua | 13 +++++++++++++ elements/basic.lua | 28 +++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 cursor.lua 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 })