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
1 changed files with 23 additions and 7 deletions
|
@ -10,6 +10,7 @@ local helpers = require("lain.helpers")
|
||||||
local markup = require("lain.util").markup
|
local markup = require("lain.util").markup
|
||||||
local awful = require("awful")
|
local awful = require("awful")
|
||||||
local naughty = require("naughty")
|
local naughty = require("naughty")
|
||||||
|
local mouse = mouse
|
||||||
local string = { format = string.format, gsub = string.gsub }
|
local string = { format = string.format, gsub = string.gsub }
|
||||||
|
|
||||||
-- Taskwarrior notification
|
-- Taskwarrior notification
|
||||||
|
@ -23,7 +24,6 @@ function task.hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
function task.show(scr)
|
function task.show(scr)
|
||||||
task.hide()
|
|
||||||
|
|
||||||
if task.followtag then
|
if task.followtag then
|
||||||
task.notification_preset.screen = awful.screen.focused()
|
task.notification_preset.screen = awful.screen.focused()
|
||||||
|
@ -32,12 +32,27 @@ function task.show(scr)
|
||||||
end
|
end
|
||||||
|
|
||||||
helpers.async({ awful.util.shell, "-c", task.show_cmd }, function(f)
|
helpers.async({ awful.util.shell, "-c", task.show_cmd }, function(f)
|
||||||
task.notification = naughty.notify({
|
local widget_focused = true
|
||||||
preset = task.notification_preset,
|
|
||||||
title = "task next",
|
if mouse.current_widgets then
|
||||||
text = markup.font(task.notification_preset.font,
|
widget_focused = false
|
||||||
awful.util.escape(f:gsub("\n*$", "")))
|
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)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -65,6 +80,7 @@ function task.attach(widget, args)
|
||||||
task.prompt_text = args.prompt_text or "Enter task command: "
|
task.prompt_text = args.prompt_text or "Enter task command: "
|
||||||
task.followtag = args.followtag or false
|
task.followtag = args.followtag or false
|
||||||
task.notification_preset = args.notification_preset
|
task.notification_preset = args.notification_preset
|
||||||
|
task.widget = widget
|
||||||
|
|
||||||
if not task.notification_preset then
|
if not task.notification_preset then
|
||||||
task.notification_preset = {
|
task.notification_preset = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue