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:
parent
b49a53f6dd
commit
21b908bef9
|
@ -2405,7 +2405,7 @@ client_resize_do(client_t *c, area_t geometry)
|
||||||
luaA_object_emit_signal(L, -1, "property::position", 0);
|
luaA_object_emit_signal(L, -1, "property::position", 0);
|
||||||
if (old_geometry.x != geometry.x)
|
if (old_geometry.x != geometry.x)
|
||||||
luaA_object_emit_signal(L, -1, "property::x", 0);
|
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);
|
luaA_object_emit_signal(L, -1, "property::y", 0);
|
||||||
}
|
}
|
||||||
if (old_geometry.width != geometry.width || old_geometry.height != geometry.height)
|
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);
|
luaA_object_emit_signal(L, -1, "property::size", 0);
|
||||||
if (old_geometry.width != geometry.width)
|
if (old_geometry.width != geometry.width)
|
||||||
luaA_object_emit_signal(L, -1, "property::width", 0);
|
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);
|
luaA_object_emit_signal(L, -1, "property::height", 0);
|
||||||
}
|
}
|
||||||
lua_pop(L, 1);
|
lua_pop(L, 1);
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue