summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2015-09-24 13:39:58 +0800
committerJonas Ådahl <jadahl@gmail.com>2015-12-23 14:59:36 +0800
commit75b992c7d06d1b54a8dfef28c2e7420162ef675a (patch)
treeebc2ea5fb3e4a83a5ee3ea35da6cdfbbfac402c8 /src
parent213f0fa160f1d9407e46cc36816132043a9369dc (diff)
downloadmutter-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.am1
-rw-r--r--src/tests/stacking/set-parent.metatest14
-rw-r--r--src/tests/test-client.c25
-rw-r--r--src/tests/test-runner.c17
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 ||