X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/586c54a25750fd90d91c15ac8eb818b2613de582..12f0258dc82b8a1affa3a32549d3aabc62f6cada:/widget/calendar.lua

diff --git a/widget/calendar.lua b/widget/calendar.lua
index d3e8d4b..d289ebb 100644
--- a/widget/calendar.lua
+++ b/widget/calendar.lua
@@ -38,8 +38,8 @@ function calendar.show(t_out, inc_offset, scr)
 
     if current_month then -- today highlighted
         calendar.offset = 0
-        calendar.icon = string.format("%s%s.png", calendar.icons, tonumber(os.date("%d")))
-        f = calendar.cal
+        calendar.icon   = calendar.icons:len() > 0 and string.format("%s%s.png", calendar.icons, tonumber(os.date("%d")))
+        f               = calendar.cal
     else -- no current month showing, no day to highlight
        local month = tonumber(os.date("%m"))
        local year  = tonumber(os.date("%Y"))
@@ -67,7 +67,7 @@ function calendar.show(t_out, inc_offset, scr)
 
         local widget_focused = true
 
-        if t_out == 0 then
+        if t_out == 0 and mouse.current_widgets then
             widget_focused = false
             for i, widget in ipairs(calendar.attach_to) do
                 for _,v in ipairs(mouse.current_widgets) do
@@ -79,23 +79,31 @@ function calendar.show(t_out, inc_offset, scr)
             end
         end
 
-        calendar.hide()
-
-        calendar.notification = naughty.notify({
-            preset  = calendar.notification_preset,
-            icon    = calendar.icon,
-            timeout = (widget_focused and t_out) or calendar.notification_preset.timeout or 5
-        })
+        if widget_focused then
+            calendar.hide()
+            calendar.notification = naughty.notify({
+                preset  = calendar.notification_preset,
+                icon    = calendar.icon,
+                timeout = t_out or calendar.notification_preset.timeout or 5
+            })
+        end
     end)
 end
 
+function calendar.hover_on() calendar.show(0) end
+function calendar.hover_off() calendar.hide() end
+function calendar.prev() calendar.show(0, -1) end
+function calendar.next() calendar.show(0, 1) end
+
 function calendar.attach(widget)
-    widget:connect_signal("mouse::enter", function () calendar.show(0) end)
-    widget:connect_signal("mouse::leave", function () calendar.hide() end)
-    widget:buttons(awful.util.table.join(awful.button({ }, 1, function () calendar.show(0, -1) end),
-                                         awful.button({ }, 3, function () calendar.show(0,  1) end),
-                                         awful.button({ }, 4, function () calendar.show(0, -1) end),
-                                         awful.button({ }, 5, function () calendar.show(0,  1) end)))
+    widget:connect_signal("mouse::enter", calendar.hover_on)
+    widget:connect_signal("mouse::leave", calendar.hover_off)
+    widget:buttons(awful.util.table.join(
+                awful.button({}, 1, calendar.prev),
+                awful.button({}, 3, calendar.next),
+                awful.button({}, 2, calendar.hover_on),
+                awful.button({}, 4, calendar.prev),
+                awful.button({}, 5, calendar.next)))
 end
 
 local function factory(args)