tests: Test adding and removing key/mouse bindings on existing clients.
This commit is contained in:
parent
5713a19602
commit
38b5527825
|
@ -4,6 +4,8 @@ local runner = require( "_runner" )
|
||||||
local placement = require( "awful.placement" )
|
local placement = require( "awful.placement" )
|
||||||
local gtable = require( "gears.table" )
|
local gtable = require( "gears.table" )
|
||||||
local test_client = require( "_client" )
|
local test_client = require( "_client" )
|
||||||
|
local akeyboard = require( "awful.keyboard" )
|
||||||
|
local amouse = require( "awful.mouse" )
|
||||||
|
|
||||||
local module = {
|
local module = {
|
||||||
key = require( "awful.key" ),
|
key = require( "awful.key" ),
|
||||||
|
@ -249,6 +251,127 @@ for _, type_name in ipairs { "key", "button" } do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local exe1, exe2, exe3, exe4 = false, false, false, false
|
||||||
|
local new1, new2 = nil, nil
|
||||||
|
|
||||||
|
-- Check that you can add new default key/mousebindings at any time.
|
||||||
|
table.insert(steps, function()
|
||||||
|
assert(#mouse.screen.clients == 0)
|
||||||
|
|
||||||
|
new1 = module.key {
|
||||||
|
key = "a",
|
||||||
|
modifiers = {},
|
||||||
|
on_press = function() exe1 = true end
|
||||||
|
}
|
||||||
|
|
||||||
|
new2 = module.button {
|
||||||
|
button = 8,
|
||||||
|
modifiers = {},
|
||||||
|
on_press = function() exe2 = true end
|
||||||
|
}
|
||||||
|
|
||||||
|
akeyboard.append_client_keybinding(new1)
|
||||||
|
amouse.append_client_mousebinding(new2)
|
||||||
|
|
||||||
|
-- Spawn a client.
|
||||||
|
test_client("myclient")
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
|
table.insert(steps, function()
|
||||||
|
if #mouse.screen.clients == 0 then return end
|
||||||
|
|
||||||
|
client.focus = mouse.screen.clients[1]
|
||||||
|
|
||||||
|
-- That should trigger the newly added keybinding.
|
||||||
|
root.fake_input("key_press" , "a")
|
||||||
|
root.fake_input("key_release", "a")
|
||||||
|
|
||||||
|
-- Move the mouse over the client so mousebindings work.
|
||||||
|
placement.centered(mouse, {parent=client.focus})
|
||||||
|
awesome.sync()
|
||||||
|
|
||||||
|
-- Same thing for the mouse.
|
||||||
|
root.fake_input("button_press" , 8)
|
||||||
|
root.fake_input("button_release", 8)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
|
table.insert(steps, function()
|
||||||
|
if (not exe1) or (not exe2) then return end
|
||||||
|
|
||||||
|
akeyboard.remove_client_keybinding(new1)
|
||||||
|
amouse.remove_client_mousebinding(new2)
|
||||||
|
|
||||||
|
exe1, exe2 = false, false
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Removing is async, so wait until the next loop.
|
||||||
|
table.insert(steps, function()
|
||||||
|
root.fake_input("key_press" , "a")
|
||||||
|
root.fake_input("key_release", "a")
|
||||||
|
root.fake_input("button_press" , 8)
|
||||||
|
root.fake_input("button_release", 8)
|
||||||
|
awesome.sync()
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Try adding key/mousebindings to existing clients.
|
||||||
|
table.insert(steps, function(count)
|
||||||
|
if count ~= 3 then return end
|
||||||
|
|
||||||
|
assert(not exe1)
|
||||||
|
assert(not exe2)
|
||||||
|
|
||||||
|
-- Append both types at the same time to make sure nothing overwrite
|
||||||
|
-- the list.
|
||||||
|
akeyboard.append_client_keybinding(new1)
|
||||||
|
amouse.append_client_mousebinding(new2)
|
||||||
|
|
||||||
|
new1 = module.key {
|
||||||
|
key = "b",
|
||||||
|
modifiers = {},
|
||||||
|
on_press = function() exe3 = true end
|
||||||
|
}
|
||||||
|
|
||||||
|
new2 = module.button {
|
||||||
|
button = 7,
|
||||||
|
modifiers = {},
|
||||||
|
on_press = function() exe4 = true end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Append directly on the client.
|
||||||
|
client.focus:append_keybinding(new1)
|
||||||
|
client.focus:append_mousebinding(new2)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Removing is async, so wait until the next loop.
|
||||||
|
table.insert(steps, function()
|
||||||
|
|
||||||
|
root.fake_input("key_press" , "b")
|
||||||
|
root.fake_input("key_release", "b")
|
||||||
|
root.fake_input("button_press" , 7)
|
||||||
|
root.fake_input("button_release", 7)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
|
table.insert(steps, function()
|
||||||
|
if (not exe3) or (not exe4) then return end
|
||||||
|
|
||||||
|
-- Note, there is no point to try remove_keybinding, it was already called
|
||||||
|
-- (indirectly) 4 steps ago.
|
||||||
|
|
||||||
|
return true
|
||||||
|
end)
|
||||||
|
|
||||||
runner.run_steps(steps)
|
runner.run_steps(steps)
|
||||||
|
|
||||||
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||||
|
|
Loading…
Reference in New Issue