maximized/fullscreen: Use relative coords when restoring size.
Also apply a copy of the memento instead of mutating the original. Fixes #1320
This commit is contained in:
parent
6da20bb301
commit
477df4a35b
|
@ -291,6 +291,7 @@ local function store_geometry(d, reqtype)
|
||||||
if not data[d][reqtype] then data[d][reqtype] = {} end
|
if not data[d][reqtype] then data[d][reqtype] = {} end
|
||||||
data[d][reqtype] = d:geometry()
|
data[d][reqtype] = d:geometry()
|
||||||
data[d][reqtype].screen = d.screen
|
data[d][reqtype].screen = d.screen
|
||||||
|
data[d][reqtype].sgeo = d.screen and d.screen.geometry or nil
|
||||||
data[d][reqtype].border_width = d.border_width
|
data[d][reqtype].border_width = d.border_width
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1422,11 +1423,32 @@ function placement.restore(d, args)
|
||||||
|
|
||||||
if not memento then return false end
|
if not memento then return false end
|
||||||
|
|
||||||
memento.screen = nil --TODO use it
|
local x, y = memento.x, memento.y
|
||||||
|
|
||||||
|
-- Some people consider that once moved to another screen, then
|
||||||
|
-- the memento needs to be upgraded. For now this is only true for
|
||||||
|
-- maximization until someone complains.
|
||||||
|
if memento.sgeo and memento.screen and args.context == "maximize"
|
||||||
|
and d.screen and get_screen(memento.screen) ~= get_screen(d.screen) then
|
||||||
|
-- Use the absolute geometry as the memento also does
|
||||||
|
local sgeo = get_screen(d.screen).geometry
|
||||||
|
|
||||||
|
x = sgeo.x + (memento.x - memento.sgeo.x)
|
||||||
|
y = sgeo.y + (memento.y - memento.sgeo.y)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
d.border_width = memento.border_width
|
d.border_width = memento.border_width
|
||||||
|
|
||||||
d:geometry(memento)
|
-- Don't use the memento as it would be "destructive", since `x`, `y`
|
||||||
|
-- and `screen` have to be modified.
|
||||||
|
d:geometry {
|
||||||
|
x = x,
|
||||||
|
y = y,
|
||||||
|
width = memento.width,
|
||||||
|
height = memento.height,
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue