diff --git a/lib/awful/widget/button.lua.in b/lib/awful/widget/button.lua.in index 61b7f7857..c81f2132b 100644 --- a/lib/awful/widget/button.lua.in +++ b/lib/awful/widget/button.lua.in @@ -7,16 +7,15 @@ local setmetatable = setmetatable local type = type local button = require("awful.button") -local capi = { widget = widget, - mouse = mouse, +local imagebox = require("wibox.widget.imagebox") +local capi = { mouse = mouse, oocairo = oocairo } module("awful.widget.button") --- Create a button widget. When clicked, the image is deplaced to make it like -- a real button. --- @param args Standard widget table arguments, plus image for the image path or --- the image object. +-- @param args Widget arguments. "image" is the image to display. -- @return A textbox widget configured as a button. function new(args) if not args or not args.image then return end @@ -25,22 +24,15 @@ function new(args) img_release = capi.oocairo.image_surface_create_from_png(args.image) elseif type(args.image) == "userdata" and args.image.type and args.image:type() == "cairo_surface_t" then img_release = args.image - else - return end local img_press = capi.oocairo.image_surface_create("argb32", img_release:get_width(), img_release:get_height()) local cr = capi.oocairo.context_create(img_press) cr:set_source(img_release, 2, 2) cr:paint() - args.type = "imagebox" - local w = capi.widget(args) - w.image = img_release - w:buttons(button({}, 1, function () w.image = img_press end, function () w.image = img_release end)) - w:connect_signal("mouse::leave", function () w.image = img_release end) - w:connect_signal("mouse::enter", function () - if capi.mouse.coords().buttons[1] then w.image = img_press end - end) + local w = imagebox() + w:set_image(img_release) + w:buttons(button({}, 1, function () w:set_image(img_press) end, function () w:set_image(img_release) end)) return w end