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:
Nick Diego Yamane 2017-08-17 15:45:50 -04:00 committed by Luke Bonham
parent 252df73e57
commit c846e5e31a
1 changed files with 23 additions and 7 deletions

View File

@ -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 = {