naughty: Suspend existing notifications.
Previously, it would just suspend new notification, but do nothing about the existing ones.
This commit is contained in:
parent
075935fd37
commit
3458c89040
|
@ -292,14 +292,20 @@ local conns = gobject._setup_class_signals(
|
||||||
|
|
||||||
local function resume()
|
local function resume()
|
||||||
properties.suspended = false
|
properties.suspended = false
|
||||||
for _, v in pairs(naughty.notifications.suspended) do
|
for _, v in ipairs(naughty.notifications.suspended) do
|
||||||
local args = v._private.args
|
local args = v._private.args
|
||||||
assert(args)
|
assert(args)
|
||||||
v._private.args = nil
|
v._private.args = nil
|
||||||
|
|
||||||
|
v:emit_signal("property::suspended", false)
|
||||||
|
|
||||||
naughty.emit_signal("added", v, args)
|
naughty.emit_signal("added", v, args)
|
||||||
naughty.emit_signal("request::display", v, "resume", args)
|
naughty.emit_signal("request::display", v, "resume", args)
|
||||||
if v.timer then v.timer:start() end
|
if v.timer then v.timer:start() end
|
||||||
|
|
||||||
|
if not v._private.args then
|
||||||
|
v._private.args = args
|
||||||
|
end
|
||||||
end
|
end
|
||||||
naughty.notifications.suspended = { }
|
naughty.notifications.suspended = { }
|
||||||
end
|
end
|
||||||
|
@ -465,7 +471,7 @@ local function cleanup(self, reason)
|
||||||
assert(reason, "Use n:destroy() instead of emitting the signal directly")
|
assert(reason, "Use n:destroy() instead of emitting the signal directly")
|
||||||
|
|
||||||
if properties.suspended then
|
if properties.suspended then
|
||||||
for k, v in pairs(naughty.notifications.suspended) do
|
for k, v in ipairs(naughty.notifications.suspended) do
|
||||||
if v == self then
|
if v == self then
|
||||||
table.remove(naughty.notifications.suspended, k)
|
table.remove(naughty.notifications.suspended, k)
|
||||||
break
|
break
|
||||||
|
@ -507,6 +513,25 @@ local function get_suspended(self)
|
||||||
return properties.suspended and not self.ignore_suspend
|
return properties.suspended and not self.ignore_suspend
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function naughty.set_suspended(value)
|
||||||
|
if properties["suspended"] == value then return end
|
||||||
|
|
||||||
|
properties["suspended"] = value
|
||||||
|
|
||||||
|
if value then
|
||||||
|
for _, n in pairs(naughty._active) do
|
||||||
|
if n.timer and n.timer.started then
|
||||||
|
n.timer:stop()
|
||||||
|
end
|
||||||
|
|
||||||
|
n:emit_signal("property::suspended", true)
|
||||||
|
table.insert(naughty.notifications.suspended, n)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
resume()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function naughty.set_expiration_paused(p)
|
function naughty.set_expiration_paused(p)
|
||||||
properties.expiration_paused = p
|
properties.expiration_paused = p
|
||||||
|
|
||||||
|
@ -669,8 +694,9 @@ local function register(notification, args)
|
||||||
|
|
||||||
notification._private.registered = true
|
notification._private.registered = true
|
||||||
|
|
||||||
|
notification._private.args = args
|
||||||
|
|
||||||
if properties.suspended and not args.ignore_suspend then
|
if properties.suspended and not args.ignore_suspend then
|
||||||
notification._private.args = args
|
|
||||||
table.insert(naughty.notifications.suspended, notification)
|
table.insert(naughty.notifications.suspended, notification)
|
||||||
else
|
else
|
||||||
naughty.emit_signal("added", notification, args)
|
naughty.emit_signal("added", notification, args)
|
||||||
|
@ -702,9 +728,6 @@ local function set_index_miss(_, key, value)
|
||||||
elseif properties[key] ~= nil then
|
elseif properties[key] ~= nil then
|
||||||
assert(type(value) == "boolean")
|
assert(type(value) == "boolean")
|
||||||
properties[key] = value
|
properties[key] = value
|
||||||
if not value then
|
|
||||||
resume()
|
|
||||||
end
|
|
||||||
|
|
||||||
naughty.emit_signal("property::"..key, value)
|
naughty.emit_signal("property::"..key, value)
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue