Lua: Remove calls to add_signal()
The requirement to call add_signal() was added to catch typos. However, this requirement became increasingly annoying with property::<name> signals and e.g. gears.object allowing arbitrary properties to be changed. All of this ended up in a single commit because tests/examples fails if I first let add_signal() emit a deprecation warning. Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
parent
231436d9e3
commit
0857f6f1b5
|
@ -2,7 +2,6 @@
|
|||
--- Disonnect to a signal.
|
||||
-- @tparam string name The name of the signal
|
||||
-- @tparam function func The callback that should be disconnected
|
||||
-- @see add_signal
|
||||
-- @function disconnect_signal
|
||||
|
||||
--- Emit a signal.
|
||||
|
@ -13,15 +12,9 @@
|
|||
-- that are given to emit_signal()
|
||||
-- @function emit_signal
|
||||
|
||||
--- Add a signal to an object. All signals must be added before they can be used.
|
||||
--
|
||||
-- @tparam string name The name of the new signal.
|
||||
-- @function add_signal
|
||||
|
||||
--- Connect to a signal.
|
||||
-- @tparam string name The name of the signal
|
||||
-- @tparam function func The callback to call when the signal is emitted
|
||||
-- @see add_signal
|
||||
-- @function connect_signal
|
||||
|
||||
--- Connect to a signal weakly. This allows the callback function to be garbage
|
||||
|
|
|
@ -1159,25 +1159,17 @@ end
|
|||
|
||||
--- The last geometry when client was floating.
|
||||
-- @signal property::floating_geometry
|
||||
capi.client.add_signal("property::floating_geometry")
|
||||
|
||||
capi.client.add_signal("property::floating")
|
||||
|
||||
capi.client.add_signal("property::dockable")
|
||||
|
||||
--- Emited when a client need to get a titlebar.
|
||||
-- @signal request::titlebars
|
||||
-- @tparam[opt=nil] string content The context (like "rules")
|
||||
-- @tparam[opt=nil] table hints Some hints.
|
||||
capi.client.add_signal("request::titlebars")
|
||||
|
||||
--- The client marked signal (deprecated).
|
||||
-- @signal .marked
|
||||
capi.client.add_signal("marked")
|
||||
|
||||
--- The client unmarked signal (deprecated).
|
||||
-- @signal unmarked
|
||||
capi.client.add_signal("unmarked")
|
||||
|
||||
-- Add clients during startup to focus history.
|
||||
-- This used to happen through ewmh.activate, but that only handles visible
|
||||
|
|
|
@ -222,8 +222,6 @@ local function arrange_tag(t)
|
|||
layout.arrange(t.screen)
|
||||
end
|
||||
|
||||
capi.screen.add_signal("arrange")
|
||||
|
||||
capi.tag.connect_signal("property::master_width_factor", arrange_tag)
|
||||
capi.tag.connect_signal("property::master_count", arrange_tag)
|
||||
capi.tag.connect_signal("property::column_count", arrange_tag)
|
||||
|
|
|
@ -558,7 +558,6 @@ attach = function(d, position_f, args)
|
|||
end
|
||||
|
||||
-- Create a way to detach a placement function
|
||||
d:add_signal("property::detach_callback")
|
||||
function d.detach_callback()
|
||||
d:disconnect_signal("property::width" , tracker)
|
||||
d:disconnect_signal("property::height" , tracker)
|
||||
|
|
|
@ -465,8 +465,6 @@ function screen.object.set_selected_tag() end
|
|||
--- When the tag history changed.
|
||||
-- @signal tag::history::update
|
||||
|
||||
capi.screen.add_signal("padding")
|
||||
|
||||
-- Extend the luaobject
|
||||
object.properties(capi.screen, {
|
||||
getter_class = screen.object,
|
||||
|
|
|
@ -297,7 +297,5 @@ capi.awesome.connect_signal("spawn::canceled" , spawn.on_snid_cancel )
|
|||
capi.awesome.connect_signal("spawn::timeout" , spawn.on_snid_cancel )
|
||||
capi.client.connect_signal ("manage" , spawn.on_snid_callback )
|
||||
|
||||
capi.client.add_signal ("spawn::completed_with_payload" )
|
||||
|
||||
return setmetatable(spawn, { __call = function(_, ...) return spawn.spawn(...) end })
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
|
@ -1323,22 +1323,6 @@ capi.client.connect_signal("untagged", client_untagged)
|
|||
capi.client.connect_signal("tagged", client_tagged)
|
||||
capi.tag.connect_signal("request::select", tag.object.view_only)
|
||||
|
||||
capi.tag.add_signal("property::hide")
|
||||
capi.tag.add_signal("property::icon")
|
||||
capi.tag.add_signal("property::icon_only")
|
||||
capi.tag.add_signal("property::layout")
|
||||
capi.tag.add_signal("property::mwfact")
|
||||
capi.tag.add_signal("property::master_width_factor")
|
||||
capi.tag.add_signal("property::useless_gap")
|
||||
capi.tag.add_signal("property::master_fill_policy")
|
||||
capi.tag.add_signal("property::ncol")
|
||||
capi.tag.add_signal("property::column_count")
|
||||
capi.tag.add_signal("property::nmaster")
|
||||
capi.tag.add_signal("property::master_count")
|
||||
capi.tag.add_signal("property::windowfact")
|
||||
capi.tag.add_signal("property::screen")
|
||||
capi.tag.add_signal("property::index")
|
||||
|
||||
--- True when a tagged client is urgent
|
||||
-- @signal property::urgent
|
||||
-- @see client.urgent
|
||||
|
@ -1347,15 +1331,6 @@ capi.tag.add_signal("property::index")
|
|||
-- @signal property::urgent_count
|
||||
-- @see client.urgent
|
||||
|
||||
capi.tag.add_signal("property::urgent")
|
||||
|
||||
capi.tag.add_signal("property::urgent_count")
|
||||
capi.tag.add_signal("property::volatile")
|
||||
capi.tag.add_signal("request::screen")
|
||||
capi.tag.add_signal("removal-pending")
|
||||
|
||||
capi.screen.add_signal("tag::history::update")
|
||||
|
||||
capi.screen.connect_signal("tag::history::update", tag.history.update)
|
||||
|
||||
capi.screen.connect_signal("removed", function(s)
|
||||
|
|
|
@ -196,7 +196,6 @@ end
|
|||
-- @see set_markup
|
||||
tooltip.new = function(args)
|
||||
local self = setmetatable(object(), instance_mt)
|
||||
self:add_signal("property::visible")
|
||||
self.visible = false
|
||||
|
||||
-- private data
|
||||
|
|
|
@ -341,11 +341,9 @@ function awfulwibar.new(arg)
|
|||
w._screen = screen --HACK When a screen is removed, then getbycoords wont work
|
||||
w._stretch = arg.stretch == nil and has_to_stretch or arg.stretch
|
||||
|
||||
w:add_signal("property::position")
|
||||
w.get_position = get_position
|
||||
w.set_position = set_position
|
||||
|
||||
w:add_signal("property::stretch")
|
||||
w.get_stretch = get_stretch
|
||||
w.set_stretch = set_stretch
|
||||
w.remove = remove
|
||||
|
|
|
@ -21,45 +21,36 @@ local object = { properties = properties, mt = {} }
|
|||
--- Verify that obj is indeed a valid object as returned by new()
|
||||
local function check(obj)
|
||||
if type(obj) ~= "table" or type(obj._signals) ~= "table" then
|
||||
error("add_signal() called on non-object")
|
||||
error("called on non-object")
|
||||
end
|
||||
end
|
||||
|
||||
--- Find a given signal
|
||||
-- @tparam table obj The object to search in
|
||||
-- @tparam string name The signal to find
|
||||
-- @tparam string error_msg Error message for if the signal is not found
|
||||
-- @treturn table The signal table
|
||||
local function find_signal(obj, name, error_msg)
|
||||
local function find_signal(obj, name)
|
||||
check(obj)
|
||||
if not obj._signals[name] then
|
||||
error("Trying to " .. error_msg .. " non-existent signal '" .. name .. "'")
|
||||
end
|
||||
return obj._signals[name]
|
||||
end
|
||||
|
||||
--- Add a signal to an object. All signals must be added before they can be used.
|
||||
--
|
||||
--@DOC_text_gears_object_signal_EXAMPLE@
|
||||
-- @tparam string name The name of the new signal.
|
||||
function object:add_signal(name)
|
||||
check(self)
|
||||
assert(type(name) == "string", "name must be a string, got: " .. type(name))
|
||||
if not self._signals[name] then
|
||||
self._signals[name] = {
|
||||
assert(type(name) == "string", "name must be a string, got: " .. type(name))
|
||||
obj._signals[name] = {
|
||||
strong = {},
|
||||
weak = setmetatable({}, { __mode = "kv" })
|
||||
}
|
||||
end
|
||||
return obj._signals[name]
|
||||
end
|
||||
|
||||
function object.add_signal()
|
||||
require("awful.util").deprecate("Use signals without explicitly adding them. This is now done implicitly.")
|
||||
end
|
||||
|
||||
--- Connect to a signal.
|
||||
-- @tparam string name The name of the signal
|
||||
-- @tparam function func The callback to call when the signal is emitted
|
||||
-- @see add_signal
|
||||
function object:connect_signal(name, func)
|
||||
assert(type(func) == "function", "callback must be a function, got: " .. type(func))
|
||||
local sig = find_signal(self, name, "connect to")
|
||||
local sig = find_signal(self, name)
|
||||
assert(sig.weak[func] == nil, "Trying to connect a strong callback which is already connected weakly")
|
||||
sig.strong[func] = true
|
||||
end
|
||||
|
@ -100,7 +91,7 @@ end
|
|||
-- @tparam function func The callback to call when the signal is emitted
|
||||
function object:weak_connect_signal(name, func)
|
||||
assert(type(func) == "function", "callback must be a function, got: " .. type(func))
|
||||
local sig = find_signal(self, name, "connect to")
|
||||
local sig = find_signal(self, name)
|
||||
assert(sig.strong[func] == nil, "Trying to connect a weak callback which is already connected strongly")
|
||||
sig.weak[func] = make_the_gc_obey(func)
|
||||
end
|
||||
|
@ -108,9 +99,8 @@ end
|
|||
--- Disonnect to a signal.
|
||||
-- @tparam string name The name of the signal
|
||||
-- @tparam function func The callback that should be disconnected
|
||||
-- @see add_signal
|
||||
function object:disconnect_signal(name, func)
|
||||
local sig = find_signal(self, name, "disconnect from")
|
||||
local sig = find_signal(self, name)
|
||||
sig.weak[func] = nil
|
||||
sig.strong[func] = nil
|
||||
end
|
||||
|
@ -122,7 +112,7 @@ end
|
|||
-- function receives the object as first argument and then any extra arguments
|
||||
-- that are given to emit_signal()
|
||||
function object:emit_signal(name, ...)
|
||||
local sig = find_signal(self, name, "emit")
|
||||
local sig = find_signal(self, name)
|
||||
for func in pairs(sig.strong) do
|
||||
func(self, ...)
|
||||
end
|
||||
|
@ -163,8 +153,8 @@ local function set_miss(self, key, value)
|
|||
end
|
||||
end
|
||||
|
||||
--- Returns a new object. You can call `:emit_signal()`, `:disconnect_signal()`,
|
||||
-- `:connect_signal()` and `:add_signal()` on the resulting object.
|
||||
--- Returns a new object. You can call `:emit_signal()`, `:disconnect_signal()`
|
||||
-- and `:connect_signal()` on the resulting object.
|
||||
--
|
||||
-- Note that `args.enable_auto_signals` is only supported when
|
||||
-- `args.enable_properties` is true.
|
||||
|
|
|
@ -97,11 +97,6 @@ local timer_instance_mt = {
|
|||
timer.new = function(args)
|
||||
local ret = object()
|
||||
|
||||
ret:add_signal("property::timeout")
|
||||
ret:add_signal("timeout")
|
||||
ret:add_signal("start")
|
||||
ret:add_signal("stop")
|
||||
|
||||
ret.data = { timeout = 0 }
|
||||
setmetatable(ret, timer_instance_mt)
|
||||
|
||||
|
|
|
@ -298,7 +298,6 @@ local function setup_signals(_drawable)
|
|||
local d = _drawable.drawable
|
||||
|
||||
local function clone_signal(name)
|
||||
_drawable:add_signal(name)
|
||||
-- When "name" is emitted on wibox.drawin, also emit it on wibox
|
||||
d:connect_signal(name, function(_, ...)
|
||||
_drawable:emit_signal(name, ...)
|
||||
|
|
|
@ -89,7 +89,6 @@ end
|
|||
local function setup_signals(_wibox)
|
||||
local obj
|
||||
local function clone_signal(name)
|
||||
_wibox:add_signal(name)
|
||||
-- When "name" is emitted on wibox.drawin, also emit it on wibox
|
||||
obj:connect_signal(name, function(_, ...)
|
||||
_wibox:emit_signal(name, ...)
|
||||
|
@ -225,8 +224,6 @@ local function new(args)
|
|||
return ret
|
||||
end
|
||||
|
||||
capi.drawin.add_signal("property::get_wibox")
|
||||
|
||||
--- Redraw a wibox. You should never have to call this explicitely because it is
|
||||
-- automatically called when needed.
|
||||
-- @param wibox
|
||||
|
|
|
@ -556,18 +556,8 @@ function base.make_widget(proxy, widget_name, args)
|
|||
class = args.class,
|
||||
}
|
||||
|
||||
-- This signal is used by layouts to find out when they have to update.
|
||||
ret:add_signal("widget::layout_changed")
|
||||
ret:add_signal("widget::redraw_needed")
|
||||
-- Mouse input, oh noes!
|
||||
ret:add_signal("button::press")
|
||||
ret:add_signal("button::release")
|
||||
ret:add_signal("mouse::enter")
|
||||
ret:add_signal("mouse::leave")
|
||||
|
||||
-- Backwards compatibility
|
||||
-- TODO: Remove this
|
||||
ret:add_signal("widget::updated")
|
||||
ret:connect_signal("widget::updated", function()
|
||||
ret:emit_signal("widget::layout_changed")
|
||||
ret:emit_signal("widget::redraw_needed")
|
||||
|
@ -648,7 +638,7 @@ end
|
|||
function base.check_widget(widget)
|
||||
assert(type(widget) == "table", "Type should be table, but is " .. tostring(type(widget)))
|
||||
assert(widget.is_widget, "Argument is not a widget!")
|
||||
for _, func in pairs({ "add_signal", "connect_signal", "disconnect_signal" }) do
|
||||
for _, func in pairs({ "connect_signal", "disconnect_signal" }) do
|
||||
assert(type(widget[func]) == "function", func .. " is not a function")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
local fake_screens = {}
|
||||
|
||||
_G.screen = setmetatable({
|
||||
add_signal = function() end,
|
||||
set_index_miss_handler = function() end,
|
||||
set_newindex_miss_handler = function() end,
|
||||
}, {
|
||||
|
|
|
@ -9,31 +9,6 @@ describe("gears.object", function()
|
|||
local obj
|
||||
before_each(function()
|
||||
obj = object()
|
||||
obj:add_signal("signal")
|
||||
end)
|
||||
|
||||
it("strong connect non-existent signal", function()
|
||||
assert.has.errors(function()
|
||||
obj:connect_signal("foo", function() end)
|
||||
end)
|
||||
end)
|
||||
|
||||
it("weak connect non-existent signal", function()
|
||||
assert.has.errors(function()
|
||||
obj:weak_connect_signal("foo", function() end)
|
||||
end)
|
||||
end)
|
||||
|
||||
it("strong disconnect non-existent signal", function()
|
||||
assert.has.errors(function()
|
||||
obj:disconnect_signal("foo", function() end)
|
||||
end)
|
||||
end)
|
||||
|
||||
it("emitting non-existent signal", function()
|
||||
assert.has.errors(function()
|
||||
obj:emit_signal("foo")
|
||||
end)
|
||||
end)
|
||||
|
||||
it("strong connecting and emitting signal", function()
|
||||
|
@ -188,7 +163,6 @@ describe("gears.object", function()
|
|||
|
||||
it("auto emit disabled", function()
|
||||
local got_it = false
|
||||
obj:add_signal("property::foo")
|
||||
obj:connect_signal("property::foo", function() got_it=true end)
|
||||
|
||||
obj.foo = 42
|
||||
|
@ -199,7 +173,6 @@ describe("gears.object", function()
|
|||
it("auto emit enabled", function()
|
||||
local got_it = false
|
||||
local obj2 = object{enable_auto_signals=true, enable_properties=true}
|
||||
obj2:add_signal("property::foo")
|
||||
obj2:connect_signal("property::foo", function() got_it=true end)
|
||||
|
||||
obj2.foo = 42
|
||||
|
@ -207,13 +180,6 @@ describe("gears.object", function()
|
|||
assert.is_true(got_it)
|
||||
end)
|
||||
|
||||
it("auto emit enabled", function()
|
||||
assert.has.errors(function()
|
||||
local obj2 = object{enable_auto_signals=true, enable_properties=true}
|
||||
obj2.foo = "bar"
|
||||
end)
|
||||
end)
|
||||
|
||||
it("auto emit without dynamic properties", function()
|
||||
assert.has.errors(function()
|
||||
object{enable_auto_signals=true, enable_properties=false}
|
||||
|
|
|
@ -83,8 +83,6 @@ return {
|
|||
widget_stub = function(width, height)
|
||||
local w = object()
|
||||
w._private = {}
|
||||
w:add_signal("widget::redraw_needed")
|
||||
w:add_signal("widget::layout_changed")
|
||||
w.is_widget = true
|
||||
w._private.visible = true
|
||||
w._private.opacity = 1
|
||||
|
|
|
@ -17,12 +17,6 @@ local function _shim_fake_class()
|
|||
return obj._connect_signal(obj, name, func)
|
||||
end
|
||||
|
||||
obj._add_signal = obj.add_signal
|
||||
|
||||
function obj.add_signal(name)
|
||||
return obj._add_signal(obj, name)
|
||||
end
|
||||
|
||||
function obj.set_index_miss_handler(handler)
|
||||
meta.__index = handler
|
||||
end
|
||||
|
@ -50,11 +44,6 @@ awesome.startup = true
|
|||
function awesome.register_xproperty()
|
||||
end
|
||||
|
||||
awesome.add_signal("refresh")
|
||||
awesome.add_signal("wallpaper_changed")
|
||||
awesome.add_signal("spawn::canceled")
|
||||
awesome.add_signal("spawn::timeout")
|
||||
|
||||
return awesome
|
||||
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
|
@ -4,20 +4,6 @@ local clients = {}
|
|||
|
||||
local client, meta = awesome._shim_fake_class()
|
||||
|
||||
local function add_signals(c)
|
||||
c:add_signal("property::width")
|
||||
c:add_signal("property::height")
|
||||
c:add_signal("property::x")
|
||||
c:add_signal("property::y")
|
||||
c:add_signal("property::screen")
|
||||
c:add_signal("property::geometry")
|
||||
c:add_signal("request::geometry")
|
||||
c:add_signal("request::tag")
|
||||
c:add_signal("swapped")
|
||||
c:add_signal("raised")
|
||||
c:add_signal("property::_label") --Used internally
|
||||
end
|
||||
|
||||
-- Keep an history of the geometry for validation and images
|
||||
local function push_geometry(c)
|
||||
table.insert(c._old_geo, c:geometry())
|
||||
|
@ -46,9 +32,6 @@ function client.gen_fake(args)
|
|||
ret[v] = ret[v] or 1
|
||||
end
|
||||
|
||||
|
||||
add_signals(ret)
|
||||
|
||||
-- Emulate capi.client.geometry
|
||||
function ret:geometry(new)
|
||||
if new then
|
||||
|
@ -142,37 +125,6 @@ function client.get(s)
|
|||
return ret
|
||||
end
|
||||
|
||||
client:_add_signal("manage")
|
||||
client:_add_signal("unmanage")
|
||||
client:_add_signal("property::urgent")
|
||||
client:_add_signal("untagged")
|
||||
client:_add_signal("tagged")
|
||||
client:_add_signal("property::shape_client_bounding")
|
||||
client:_add_signal("property::shape_client_clip")
|
||||
client:_add_signal("property::width")
|
||||
client:_add_signal("property::height")
|
||||
client:_add_signal("property::x")
|
||||
client:_add_signal("property::y")
|
||||
client:_add_signal("property::geometry")
|
||||
client:_add_signal("focus")
|
||||
client:_add_signal("new")
|
||||
client:_add_signal("property::size_hints_honor")
|
||||
client:_add_signal("property::struts")
|
||||
client:_add_signal("property::minimized")
|
||||
client:_add_signal("property::maximized_horizontal")
|
||||
client:_add_signal("property::maximized_vertical")
|
||||
client:_add_signal("property::sticky")
|
||||
client:_add_signal("property::fullscreen")
|
||||
client:_add_signal("property::border_width")
|
||||
client:_add_signal("property::hidden")
|
||||
client:_add_signal("property::screen")
|
||||
client:_add_signal("request::tag")
|
||||
client:_add_signal("request::geometry")
|
||||
client:_add_signal("request::activate")
|
||||
client:_add_signal("raised")
|
||||
client:_add_signal("lowered")
|
||||
client:_add_signal("list")
|
||||
|
||||
return client
|
||||
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
|
@ -7,10 +7,6 @@ screen.count = 1
|
|||
local function create_screen(args)
|
||||
local s = gears_obj()
|
||||
|
||||
s:add_signal("property::workarea")
|
||||
s:add_signal("property::index")
|
||||
s:add_signal("padding")
|
||||
|
||||
-- Copy the geo in case the args are mutated
|
||||
local geo = {
|
||||
x = args.x ,
|
||||
|
@ -99,10 +95,6 @@ end
|
|||
|
||||
screen._add_screen {width=320, height=240}
|
||||
|
||||
screen.add_signal("property::workarea")
|
||||
screen.add_signal("added")
|
||||
screen.add_signal("removed")
|
||||
|
||||
return screen
|
||||
|
||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||
|
|
|
@ -5,20 +5,6 @@ local tag, meta = awesome._shim_fake_class()
|
|||
local function new_tag(_, args)
|
||||
local ret = gears_obj()
|
||||
|
||||
ret:add_signal("property::layout")
|
||||
ret:add_signal("property::name")
|
||||
ret:add_signal("property::geometry")
|
||||
ret:add_signal("property::screen")
|
||||
ret:add_signal("property::master_width_factor")
|
||||
ret:add_signal("property::mwfact")
|
||||
ret:add_signal("property::ncol")
|
||||
ret:add_signal("property::column_count")
|
||||
ret:add_signal("property::master_count")
|
||||
ret:add_signal("property::nmaster")
|
||||
ret:add_signal("property::index")
|
||||
ret:add_signal("property::useless_gap")
|
||||
ret:add_signal("property::_wa_tracker")
|
||||
|
||||
ret.name = args.name or "test"
|
||||
ret.activated = true
|
||||
ret.selected = true
|
||||
|
@ -42,12 +28,6 @@ local function new_tag(_, args)
|
|||
})
|
||||
end
|
||||
|
||||
tag:_add_signal("request::select")
|
||||
tag:_add_signal("property::selected")
|
||||
tag:_add_signal("property::activated")
|
||||
tag:_add_signal("tagged")
|
||||
tag:_add_signal("untagged")
|
||||
|
||||
return setmetatable(tag, {
|
||||
__call = new_tag,
|
||||
})
|
||||
|
|
|
@ -31,8 +31,6 @@ local o = gears.object {
|
|||
enable_auto_signals = true,
|
||||
}
|
||||
|
||||
o:add_signal "property::foo"
|
||||
|
||||
print(o.foo)
|
||||
|
||||
o.foo = 42
|
||||
|
@ -42,7 +40,6 @@ print(o.foo)
|
|||
o:method(1, 2, 3)
|
||||
|
||||
-- Random properties can also be added, the signal will be emited automatically.
|
||||
o:add_signal "property::something"
|
||||
|
||||
o:connect_signal("property::something", function(obj, value)
|
||||
print("In the connection handler!", obj, value)
|
||||
|
|
|
@ -2,9 +2,6 @@ local gears = require("gears") --DOC_HIDE
|
|||
|
||||
local o = gears.object{}
|
||||
|
||||
-- Add a new signals to the object. This is used to catch typos
|
||||
o:add_signal "my_signal"
|
||||
|
||||
-- Function can be attached to signals
|
||||
local function slot(obj, a, b, c)
|
||||
print("In slot", obj, a, b, c)
|
||||
|
|
|
@ -18,7 +18,6 @@ client.focus = client.get()[1]
|
|||
local c = client.focus
|
||||
-- local c2 = client.get()[2]
|
||||
|
||||
client.add_signal("property::foo")
|
||||
c.foo = "bar"
|
||||
|
||||
-- Check if the property system works
|
||||
|
|
Loading…
Reference in New Issue