shims: Prevent signals when setting the client geo to the same value.

This commit is contained in:
Emmanuel Lepage Vallee 2020-03-21 20:17:46 -04:00
parent 8bdabb234b
commit e5a84e2fda
1 changed files with 15 additions and 1 deletions

View File

@ -1,4 +1,5 @@
local gears_obj = require("gears.object") local gears_obj = require("gears.object")
local grect = require("gears.geometry").rectangle
local clients = {} local clients = {}
@ -98,7 +99,14 @@ function client.gen_fake(args)
-- Emulate capi.client.geometry -- Emulate capi.client.geometry
function ret:geometry(new) function ret:geometry(new)
if new then local new_full = new and {
x = new.x or ret.x,
y = new.y or ret.y,
width = new.width or ret.width,
height = new.height or ret.height,
} or nil
if new and not grect.are_equal(ret, new_full) then
for k,v in pairs(new) do for k,v in pairs(new) do
ret[k] = v ret[k] = v
ret:emit_signal("property::"..k, v) ret:emit_signal("property::"..k, v)
@ -130,6 +138,12 @@ function client.gen_fake(args)
ret._old_geo[#ret._old_geo]._hide = true ret._old_geo[#ret._old_geo]._hide = true
end end
function ret:_hide_all()
for _, geo in ipairs(ret._old_geo) do
geo._hide = true
end
end
function ret:get_xproperty() function ret:get_xproperty()
return nil return nil
end end