diff --git a/docs/common/object.ldoc b/docs/common/object.ldoc index 19dfbd03b..24285299d 100644 --- a/docs/common/object.ldoc +++ b/docs/common/object.ldoc @@ -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 diff --git a/lib/awful/client.lua b/lib/awful/client.lua index e4fed3cd4..fcf17a4e8 100644 --- a/lib/awful/client.lua +++ b/lib/awful/client.lua @@ -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 diff --git a/lib/awful/layout/init.lua b/lib/awful/layout/init.lua index 114b12b3e..085702573 100644 --- a/lib/awful/layout/init.lua +++ b/lib/awful/layout/init.lua @@ -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) diff --git a/lib/awful/placement.lua b/lib/awful/placement.lua index 5d2c59ae4..c003d3f1f 100644 --- a/lib/awful/placement.lua +++ b/lib/awful/placement.lua @@ -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) diff --git a/lib/awful/screen.lua b/lib/awful/screen.lua index cc384f91a..9073dd9f7 100644 --- a/lib/awful/screen.lua +++ b/lib/awful/screen.lua @@ -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, diff --git a/lib/awful/spawn.lua b/lib/awful/spawn.lua index e34998155..c9d203cb0 100644 --- a/lib/awful/spawn.lua +++ b/lib/awful/spawn.lua @@ -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 diff --git a/lib/awful/tag.lua b/lib/awful/tag.lua index 94edb3300..8ff168bd9 100644 --- a/lib/awful/tag.lua +++ b/lib/awful/tag.lua @@ -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) diff --git a/lib/awful/tooltip.lua b/lib/awful/tooltip.lua index 2e1ba4df9..3a2fec5e2 100644 --- a/lib/awful/tooltip.lua +++ b/lib/awful/tooltip.lua @@ -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 diff --git a/lib/awful/wibar.lua b/lib/awful/wibar.lua index af0950308..9c52a261b 100644 --- a/lib/awful/wibar.lua +++ b/lib/awful/wibar.lua @@ -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 diff --git a/lib/gears/object.lua b/lib/gears/object.lua index c65582ed8..25e4ae63c 100644 --- a/lib/gears/object.lua +++ b/lib/gears/object.lua @@ -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. diff --git a/lib/gears/timer.lua b/lib/gears/timer.lua index 7c320ef2f..fbd69bcf5 100644 --- a/lib/gears/timer.lua +++ b/lib/gears/timer.lua @@ -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) diff --git a/lib/wibox/drawable.lua b/lib/wibox/drawable.lua index 1f2c038e3..75cce527d 100644 --- a/lib/wibox/drawable.lua +++ b/lib/wibox/drawable.lua @@ -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, ...) diff --git a/lib/wibox/init.lua b/lib/wibox/init.lua index e4f4fdf1f..23de6ee2d 100644 --- a/lib/wibox/init.lua +++ b/lib/wibox/init.lua @@ -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 diff --git a/lib/wibox/widget/base.lua b/lib/wibox/widget/base.lua index 54a04cb9d..e498875b7 100644 --- a/lib/wibox/widget/base.lua +++ b/lib/wibox/widget/base.lua @@ -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 diff --git a/spec/awful/screen_spec.lua b/spec/awful/screen_spec.lua index 6c36daad6..7a9a31ee2 100644 --- a/spec/awful/screen_spec.lua +++ b/spec/awful/screen_spec.lua @@ -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, }, { diff --git a/spec/gears/object_spec.lua b/spec/gears/object_spec.lua index e73bc43ed..4bb0b7d84 100644 --- a/spec/gears/object_spec.lua +++ b/spec/gears/object_spec.lua @@ -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} diff --git a/spec/wibox/test_utils.lua b/spec/wibox/test_utils.lua index dd895e747..756f2dc13 100644 --- a/spec/wibox/test_utils.lua +++ b/spec/wibox/test_utils.lua @@ -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 diff --git a/tests/examples/shims/awesome.lua b/tests/examples/shims/awesome.lua index 41c458a9f..7dd586c5b 100644 --- a/tests/examples/shims/awesome.lua +++ b/tests/examples/shims/awesome.lua @@ -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 diff --git a/tests/examples/shims/client.lua b/tests/examples/shims/client.lua index 5fcc64866..9b735e3d6 100644 --- a/tests/examples/shims/client.lua +++ b/tests/examples/shims/client.lua @@ -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 diff --git a/tests/examples/shims/screen.lua b/tests/examples/shims/screen.lua index ca36a0639..98de3e7ae 100644 --- a/tests/examples/shims/screen.lua +++ b/tests/examples/shims/screen.lua @@ -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 diff --git a/tests/examples/shims/tag.lua b/tests/examples/shims/tag.lua index e8fd463e4..ff2ab4a7f 100644 --- a/tests/examples/shims/tag.lua +++ b/tests/examples/shims/tag.lua @@ -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, }) diff --git a/tests/examples/text/gears/object/properties.lua b/tests/examples/text/gears/object/properties.lua index 032ff9cce..5d69e1162 100644 --- a/tests/examples/text/gears/object/properties.lua +++ b/tests/examples/text/gears/object/properties.lua @@ -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) diff --git a/tests/examples/text/gears/object/signal.lua b/tests/examples/text/gears/object/signal.lua index 50f9c1986..090aa2143 100644 --- a/tests/examples/text/gears/object/signal.lua +++ b/tests/examples/text/gears/object/signal.lua @@ -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) diff --git a/tests/test-awful-client.lua b/tests/test-awful-client.lua index ea72f031f..ca36318ca 100644 --- a/tests/test-awful-client.lua +++ b/tests/test-awful-client.lua @@ -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