diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2015-09-24 13:39:58 +0800 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2015-12-23 14:59:36 +0800 |
commit | 75b992c7d06d1b54a8dfef28c2e7420162ef675a (patch) | |
tree | ebc2ea5fb3e4a83a5ee3ea35da6cdfbbfac402c8 /src | |
parent | 213f0fa160f1d9407e46cc36816132043a9369dc (diff) | |
download | mutter-75b992c7d06d1b54a8dfef28c2e7420162ef675a.tar.gz |
tests: Add test for testing that setting a parent affects the stack
A new test is added that tests that xdg_surface.set_parent (referred to
as "transient for" in X11 terminology) affects the stack immediately.
https://bugzilla.gnome.org/show_bug.cgi?id=755606
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile-tests.am | 1 | ||||
-rw-r--r-- | src/tests/stacking/set-parent.metatest | 14 | ||||
-rw-r--r-- | src/tests/test-client.c | 25 | ||||
-rw-r--r-- | src/tests/test-runner.c | 17 |
4 files changed, 57 insertions, 0 deletions
diff --git a/src/Makefile-tests.am b/src/Makefile-tests.am index a9554a0e0..05c842850 100644 --- a/src/Makefile-tests.am +++ b/src/Makefile-tests.am @@ -9,6 +9,7 @@ dist_stacking_DATA = \ tests/stacking/basic-wayland.metatest \ tests/stacking/minimized.metatest \ tests/stacking/mixed-windows.metatest \ + tests/stacking/set-parent.metatest \ tests/stacking/override-redirect.metatest mutter-all.test: tests/mutter-all.test.in diff --git a/src/tests/stacking/set-parent.metatest b/src/tests/stacking/set-parent.metatest new file mode 100644 index 000000000..e95eaca29 --- /dev/null +++ b/src/tests/stacking/set-parent.metatest @@ -0,0 +1,14 @@ +new_client 1 wayland +create 1/1 +show 1/1 +create 1/2 +show 1/2 +wait +assert_stacking 1/1 1/2 + +set_parent 1/1 2 +wait +assert_stacking 1/2 1/1 + +local_activate 1/2 +assert_stacking 1/2 1/1 diff --git a/src/tests/test-client.c b/src/tests/test-client.c index 7e24ab2ea..583608300 100644 --- a/src/tests/test-client.c +++ b/src/tests/test-client.c @@ -136,6 +136,31 @@ process_line (const char *line) } } + else if (strcmp (argv[0], "set_parent") == 0) + { + if (argc != 3) + { + g_print ("usage: menu <window-id> <parent-id>"); + goto out; + } + + GtkWidget *window = lookup_window (argv[1]); + if (!window) + { + g_print ("unknown window %s", argv[1]); + goto out; + } + + GtkWidget *parent_window = lookup_window (argv[2]); + if (!parent_window) + { + g_print ("unknown parent window %s", argv[2]); + goto out; + } + + gtk_window_set_transient_for (GTK_WINDOW (window), + GTK_WINDOW (parent_window)); + } else if (strcmp (argv[0], "show") == 0) { if (argc != 2) diff --git a/src/tests/test-runner.c b/src/tests/test-runner.c index 842944d97..4f1f446af 100644 --- a/src/tests/test-runner.c +++ b/src/tests/test-runner.c @@ -767,6 +767,23 @@ test_case_do (TestCase *test, NULL)) return FALSE; } + else if (strcmp (argv[0], "set_parent") == 0) + { + if (argc != 3) + BAD_COMMAND("usage: %s <client-id>/<window-id> <parent-window-id>", + argv[0]); + + TestClient *client; + const char *window_id; + if (!test_case_parse_window_id (test, argv[1], &client, &window_id, error)) + return FALSE; + + if (!test_client_do (client, error, + "set_parent", window_id, + argv[2], + NULL)) + return FALSE; + } else if (strcmp (argv[0], "show") == 0 || strcmp (argv[0], "hide") == 0 || strcmp (argv[0], "activate") == 0 || |