tests/stacking: Test always-on-top stacking and focus
Adds the command make_above to set and unset always-on-top behavior of a window and tests stacking and focus when activating other windows and switching workspaces. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2489>
This commit is contained in:
parent
ed7a9af62a
commit
7ac982d0d2
@ -442,6 +442,7 @@ stacking_tests = [
|
|||||||
'map-on-hotplug',
|
'map-on-hotplug',
|
||||||
'workspace-basic',
|
'workspace-basic',
|
||||||
'workspace-test',
|
'workspace-test',
|
||||||
|
'always-on-top',
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach stacking_test: stacking_tests
|
foreach stacking_test: stacking_tests
|
||||||
|
51
src/tests/stacking/always-on-top.metatest
Normal file
51
src/tests/stacking/always-on-top.metatest
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
num_workspaces 2
|
||||||
|
|
||||||
|
new_client 1 wayland
|
||||||
|
create 1/1
|
||||||
|
show 1/1
|
||||||
|
create 1/2
|
||||||
|
show 1/2
|
||||||
|
create 1/3
|
||||||
|
show 1/3
|
||||||
|
wait
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/1 1/2 1/3
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused 1/3
|
||||||
|
|
||||||
|
local_activate 1/1
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/2 1/3 1/1
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused 1/1
|
||||||
|
|
||||||
|
make_above 1/3 true
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/2 1/1 1/3
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused 1/1
|
||||||
|
|
||||||
|
local_activate 1/2
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/1 1/2 1/3
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused 1/2
|
||||||
|
|
||||||
|
activate_workspace 1
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/1 1/2 1/3
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused none
|
||||||
|
|
||||||
|
activate_workspace 0
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/1 1/2 1/3
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused 1/2
|
||||||
|
|
||||||
|
make_above 1/3 false
|
||||||
|
local_activate 1/1
|
||||||
|
|
||||||
|
assert_stacking_workspace 0 1/2 1/3 1/1
|
||||||
|
assert_stacking_workspace 1
|
||||||
|
assert_focused 1/1
|
@ -1148,6 +1148,29 @@ test_case_do (TestCase *test,
|
|||||||
|
|
||||||
meta_window_change_workspace (window, workspace);
|
meta_window_change_workspace (window, workspace);
|
||||||
}
|
}
|
||||||
|
else if (strcmp (argv[0], "make_above") == 0)
|
||||||
|
{
|
||||||
|
if (argc != 3 ||
|
||||||
|
(g_ascii_strcasecmp (argv[2], "true") != 0 &&
|
||||||
|
g_ascii_strcasecmp (argv[2], "false") != 0))
|
||||||
|
BAD_COMMAND("usage: %s <client-id>/<window-id> [true|false]",
|
||||||
|
argv[0]);
|
||||||
|
|
||||||
|
MetaTestClient *client;
|
||||||
|
const char *window_id;
|
||||||
|
if (!test_case_parse_window_id (test, argv[1], &client, &window_id, error))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
MetaWindow *window;
|
||||||
|
window = meta_test_client_find_window (client, window_id, error);
|
||||||
|
if (!window)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (g_ascii_strcasecmp (argv[2], "true") == 0)
|
||||||
|
meta_window_make_above (window);
|
||||||
|
else
|
||||||
|
meta_window_unmake_above (window);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BAD_COMMAND("Unknown command %s", argv[0]);
|
BAD_COMMAND("Unknown command %s", argv[0]);
|
||||||
|
Loading…
Reference in New Issue
Block a user