mirror of https://github.com/lcpz/lain.git
task widget: Check if mouse is still over attached widget in aync show
This fixes issue #356. Using an approach similar to what is implemented in other lain widgets (e.g: calendar). That is, checking the mouse is still over the target widget inside the `helpers.async` function call in `task.show()`. Signed-off-by: Nick Diego Yamane <nick.diego@gmail.com>
This commit is contained in:
parent
252df73e57
commit
c846e5e31a
|
@ -10,6 +10,7 @@ local helpers = require("lain.helpers")
|
|||
local markup = require("lain.util").markup
|
||||
local awful = require("awful")
|
||||
local naughty = require("naughty")
|
||||
local mouse = mouse
|
||||
local string = { format = string.format, gsub = string.gsub }
|
||||
|
||||
-- Taskwarrior notification
|
||||
|
@ -23,7 +24,6 @@ function task.hide()
|
|||
end
|
||||
|
||||
function task.show(scr)
|
||||
task.hide()
|
||||
|
||||
if task.followtag then
|
||||
task.notification_preset.screen = awful.screen.focused()
|
||||
|
@ -32,12 +32,27 @@ function task.show(scr)
|
|||
end
|
||||
|
||||
helpers.async({ awful.util.shell, "-c", task.show_cmd }, function(f)
|
||||
task.notification = naughty.notify({
|
||||
preset = task.notification_preset,
|
||||
title = "task next",
|
||||
text = markup.font(task.notification_preset.font,
|
||||
awful.util.escape(f:gsub("\n*$", "")))
|
||||
})
|
||||
local widget_focused = true
|
||||
|
||||
if mouse.current_widgets then
|
||||
widget_focused = false
|
||||
for _,v in ipairs(mouse.current_widgets) do
|
||||
if task.widget == v then
|
||||
widget_focused = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if widget_focused then
|
||||
task.hide()
|
||||
task.notification = naughty.notify({
|
||||
preset = task.notification_preset,
|
||||
title = "task next",
|
||||
text = markup.font(task.notification_preset.font,
|
||||
awful.util.escape(f:gsub("\n*$", "")))
|
||||
})
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
|
@ -65,6 +80,7 @@ function task.attach(widget, args)
|
|||
task.prompt_text = args.prompt_text or "Enter task command: "
|
||||
task.followtag = args.followtag or false
|
||||
task.notification_preset = args.notification_preset
|
||||
task.widget = widget
|
||||
|
||||
if not task.notification_preset then
|
||||
task.notification_preset = {
|
||||
|
|
Loading…
Reference in New Issue