naughty: Add a `request::screen` handler.

This commit is contained in:
Emmanuel Lepage Vallee 2020-02-10 02:51:06 -05:00
parent 636cc2bf9c
commit f5b5e6d90d
1 changed files with 24 additions and 1 deletions

View File

@ -196,6 +196,16 @@ screen.connect_for_each_screen(function(s)
end)
capi.screen.connect_signal("removed", function(scr)
-- Allow the notifications to be moved to another screen.
for _, list in pairs(naughty.notifications[scr]) do
-- Clone the list to avoid having an iterator while mutating.
list = gtable.clone(list, false)
for _, n in ipairs(list) do
naughty.emit_signal("request::screen", n, "removed", {})
end
end
-- Destroy all notifications on this screen
naughty.destroy_all_notifications({scr})
naughty.notifications[scr] = nil
@ -231,7 +241,6 @@ local function update_index(n)
table.insert(naughty.notifications[s][n.position], n)
end
--- Notification state.
--
-- This function is deprecated, use `naughty.suspended`.
@ -500,6 +509,20 @@ function naughty.set_expiration_paused(p)
end
end
--- The default handler for `request::screen`.
--
-- It selects `awful.screen.focused()`.
--
-- @signalhandler naughty.default_screen_handler
function naughty.default_screen_handler(n)
if n.screen and n.screen.valid then return end
n.screen = screen.focused()
end
naughty.connect_signal("request::screen", naughty.default_screen_handler)
--- Emitted when an error occurred and requires attention.
-- @signal request::display_error
-- @tparam string message The error message.