mirror of
https://github.com/awesomeWM/awesome
synced 2024-11-17 07:47:41 +01:00
7830cf076b
There was a race with autofocus. To overcome this, add another step that tests that moving the client back to a visible tag and focusing it updates _NET_CURRENT_DESKTOP. Afterwards, we kill the client so that it can no longer interfere. Signed-off-by: Uli Schlachter <psychon@znc.in>
94 lines
2.1 KiB
Lua
94 lines
2.1 KiB
Lua
--- Tests for _NET_CURRENT_DESKTOP
|
|
|
|
local runner = require("_runner")
|
|
local test_client = require("_client")
|
|
local awful = require("awful")
|
|
|
|
local c
|
|
local s = screen[1]
|
|
local tags = s.tags
|
|
|
|
local function wait_for_current_desktop(tag)
|
|
-- The X property has 0-based indicies
|
|
local idx = awful.util.table.hasitem(tags, tag) - 1
|
|
return function()
|
|
local file = io.popen("xprop -notype -root _NET_CURRENT_DESKTOP")
|
|
local result = file:read("*all")
|
|
file:close()
|
|
|
|
-- Extract the value
|
|
local value = string.sub(result, 24, -2)
|
|
|
|
if tostring(idx) == value then
|
|
return true
|
|
end
|
|
print(string.format("Got _NET_CURRENT_DESKTOP = '%s', expected %d", value, idx))
|
|
end
|
|
end
|
|
|
|
local steps = {
|
|
|
|
-- Set up the state we want
|
|
function(count)
|
|
if count == 1 then
|
|
test_client()
|
|
awful.tag.viewmore({ tags[3], tags[4], tags[5] }, s)
|
|
end
|
|
|
|
c = awful.client.visible()[1]
|
|
|
|
if c then
|
|
c:move_to_tag(tags[4])
|
|
client.focus = c
|
|
return true
|
|
end
|
|
end,
|
|
wait_for_current_desktop(tags[4]),
|
|
|
|
-- Move the client around
|
|
function()
|
|
c:move_to_tag(tags[5])
|
|
return true
|
|
end,
|
|
wait_for_current_desktop(tags[5]),
|
|
|
|
-- Move the client to a non-selected tag
|
|
function()
|
|
c:move_to_tag(tags[6])
|
|
assert(client.focus == nil)
|
|
return true
|
|
end,
|
|
wait_for_current_desktop(tags[3]),
|
|
|
|
-- Move the client back
|
|
function(count)
|
|
if count == 1 then
|
|
c:move_to_tag(tags[4])
|
|
return
|
|
end
|
|
client.focus = c
|
|
return true
|
|
end,
|
|
wait_for_current_desktop(tags[4]),
|
|
|
|
-- Killing the client means the first selected tag counts
|
|
function()
|
|
assert(client.focus == c)
|
|
c:kill()
|
|
c = nil
|
|
return true
|
|
end,
|
|
wait_for_current_desktop(tags[3]),
|
|
|
|
-- Change tag selection
|
|
function()
|
|
tags[3].selected = false
|
|
return true
|
|
end,
|
|
wait_for_current_desktop(tags[4]),
|
|
|
|
}
|
|
|
|
runner.run_steps(steps)
|
|
|
|
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|