diff --git a/lib/naughty.lua.in b/lib/naughty.lua.in index c8a049ca..ce17024a 100644 --- a/lib/naughty.lua.in +++ b/lib/naughty.lua.in @@ -20,6 +20,7 @@ local button = require("awful.button") local util = require("awful.util") local wibox = require("awful.wibox") local bt = require("beautiful") +local layout = require("awful.widget.layout") --- Notification library module("naughty") @@ -378,18 +379,32 @@ function notify(args) notification.width = width + 2 * (border_width or 0) -- position the wibox - local offset = get_offset(screen, notification.position, nil, notification.width, notification.height) - notification.box:geometry({ width = width, - height = height, + if iconbox and iconbox.image.height > textbox:extents()["height"] then + notification.height = iconbox.image.height + (2 * config.border_width) + else + notification.height = textbox:extents()["height"] + (2 * config.border_width) + end + notification.width = (iconbox and iconbox:extents()["width"] or 0) + textbox:extents()["width"] + (2 * config.border_width) + + if capi.screen[screen].workarea.width < notification.width then + notification.width = capi.screen[screen].workarea.width - (2 * config.border_width) - (2 * config.padding) + end + if capi.screen[screen].workarea.height < notification.height then + notification.height = capi.screen[screen].workarea.height - (2 * config.border_width) - (2 * config.padding) + end + + local offset = get_offset(screen, notification.position, notification.idx, notification.width, notification.height) + notification.box.ontop = ontop + notification.box:geometry({ width = notification.width, + height = notification.height, x = offset.x, y = offset.y }) - notification.box.ontop = ontop notification.box.opacity = opacity notification.box.screen = screen notification.idx = offset.idx -- populate widgets - notification.box.widgets = { iconbox, textbox } + notification.box.widgets = { iconbox, textbox, ["layout"] = layout.horizontal.leftright } -- insert the notification to the table table.insert(notifications[screen][notification.position], notification)