Fix a regression that only property::x and property::width are emitted when all {x,y,width,height} properties are changed. (#3537)

This commit is contained in:
Xinhao Yuan 2021-12-30 16:23:44 -05:00 committed by GitHub
parent b49a53f6dd
commit 21b908bef9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 102 additions and 2 deletions

View File

@ -2405,7 +2405,7 @@ client_resize_do(client_t *c, area_t geometry)
luaA_object_emit_signal(L, -1, "property::position", 0);
if (old_geometry.x != geometry.x)
luaA_object_emit_signal(L, -1, "property::x", 0);
else
if (old_geometry.y != geometry.y)
luaA_object_emit_signal(L, -1, "property::y", 0);
}
if (old_geometry.width != geometry.width || old_geometry.height != geometry.height)
@ -2413,7 +2413,7 @@ client_resize_do(client_t *c, area_t geometry)
luaA_object_emit_signal(L, -1, "property::size", 0);
if (old_geometry.width != geometry.width)
luaA_object_emit_signal(L, -1, "property::width", 0);
else
if (old_geometry.height != geometry.height)
luaA_object_emit_signal(L, -1, "property::height", 0);
}
lua_pop(L, 1);

View File

@ -0,0 +1,100 @@
local runner = require("_runner")
local test_client = require("_client")
local c = nil
local recorded_signals = {}
runner.run_steps {
-- Spawns the a client
function(count)
if count == 1 then
test_client()
end
c = client.get()[1]
return c
end,
-- Sets up initial geometry and callbacks
function()
c:geometry {x = 100, y = 100, width = 100, height = 100}
for _, property in ipairs {"x", "y", "width", "height"} do
local signal_name = "property::" .. property
c:connect_signal(
signal_name,
function ()
recorded_signals[signal_name] = true
end)
end
return true
end,
-- Change x only
function()
recorded_signals = {}
c:geometry {x = 0}
return true
end,
function()
assert(recorded_signals["property::x"])
assert(not recorded_signals["property::y"])
assert(not recorded_signals["property::width"])
assert(not recorded_signals["property::height"])
return true
end,
-- Change y only
function()
recorded_signals = {}
c:geometry {y = 0}
return true
end,
function()
assert(not recorded_signals["property::x"])
assert(recorded_signals["property::y"])
assert(not recorded_signals["property::width"])
assert(not recorded_signals["property::height"])
return true
end,
-- Change width only
function()
recorded_signals = {}
c:geometry {width = 200}
return true
end,
function()
assert(not recorded_signals["property::x"])
assert(not recorded_signals["property::y"])
assert(recorded_signals["property::width"])
assert(not recorded_signals["property::height"])
return true
end,
-- Change height only
function()
recorded_signals = {}
c:geometry {height = 200}
return true
end,
function()
assert(not recorded_signals["property::x"])
assert(not recorded_signals["property::y"])
assert(not recorded_signals["property::width"])
assert(recorded_signals["property::height"])
return true
end,
-- Check for regression when all x/y/width/height are changed.
function()
recorded_signals = {}
c:geometry {x = 100, y = 100, width = 100, height = 100}
return true
end,
function()
assert(recorded_signals["property::x"])
assert(recorded_signals["property::y"])
assert(recorded_signals["property::width"])
assert(recorded_signals["property::height"])
return true
end,
-- Clean up
function()
c:kill()
return true
end
}
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80