Try to reduce size changes when arranging clients, but allow clipping in switcher.

This commit is contained in:
Xinhao Yuan 2022-06-06 22:12:29 -04:00
parent 2e78636124
commit 7b472770ee
2 changed files with 39 additions and 0 deletions

View File

@ -132,6 +132,38 @@ local function get_machi_tag_string(tag)
return tag.machi_tag_string
end
local function sanitize_geometry(geo, parent_area)
local x = geo.x
local width = geo.width
if x + width > parent_area.x + parent_area.width then
x = parent_area.x + parent_area.width - width
end
if x < parent_area.x then
x = parent_area.x
end
if x + width > parent_area.x + parent_area.width then
width = parent_area.x + parent_area.width - x
end
geo.x = x
geo.width = width
local y = geo.y
local height = geo.height
if y + height > parent_area.y + parent_area.height then
y = parent_area.y + parent_area.height - height
end
if y < parent_area.y then
y = parent_area.y
end
if y + height > parent_area.y + parent_area.height then
height = parent_area.y + parent_area.height - y
end
geo.y = y
geo.height = height
end
function module.create(args_or_name, editor, default_cmd)
local args
if type(args_or_name) == "string" then
@ -284,6 +316,12 @@ function module.create(args_or_name, editor, default_cmd)
height = c.height + c.border_width * 2,
}
if not c.machi_no_sanitize_geometry then
sanitize_geometry(geo, screen.workarea)
else
c.machi_no_sanitize_geometry = nil
end
if not cd[c].placement and new_placement_cb then
cd[c].placement = true
new_placement_cb(c, instance, areas, geo)

View File

@ -478,6 +478,7 @@ function module.start(c, exit_keys)
end
c:emit_signal("request::activate", "mouse.move", {raise=false})
c:raise()
c.machi_no_sanitize_geometry = true
awful.layout.arrange(screen)
tablist = nil