awful.placement: Add a 'pretend' option

This commit is contained in:
Emmanuel Lepage Vallee 2016-04-21 04:07:35 -04:00
parent 75764108e1
commit 75af0a24c7
1 changed files with 11 additions and 2 deletions

View File

@ -18,6 +18,11 @@
--
-- ### Common arguments
--
-- **pretend** (*boolean*):
--
-- Do not apply the new geometry. This is useful if only the return values is
-- necessary.
--
-- **honor_workarea** (*boolean*):
--
-- Take workarea into account when placing the drawable (default: false)
@ -209,14 +214,17 @@ local function geometry_common(obj, args, new_geo, ignore_border_width)
-- It's a mouse
if obj.coords then
local coords = new_geo and obj.coords(new_geo) or obj.coords()
local coords = (not args.pretend and new_geo)
and obj.coords(new_geo) or obj.coords()
return {x=coords.x, y=coords.y, width=0, height=0}
elseif obj.geometry then
local geo = obj.geometry
-- It is either a drawable or something that implement its API
if type(geo) == "function" then
local dgeo = area_common(obj, new_geo, ignore_border_width)
local dgeo = area_common(
obj, (not args.pretend) and new_geo or nil, ignore_border_width
)
-- Apply the margins
if args.margins then
@ -680,6 +688,7 @@ function placement.resize_to_mouse(d, args)
-- Otherwise, the result will always be 1x1
local _, closest_corner = placement.closest_corner(capi.mouse, {
parent = d,
pretend = true,
include_sides = args.include_sides or false,
})