aboutsummaryrefslogtreecommitdiff
path: root/tests/testcases/issue465.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testcases/issue465.py')
-rw-r--r--tests/testcases/issue465.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/testcases/issue465.py b/tests/testcases/issue465.py
new file mode 100644
index 0000000..588be91
--- /dev/null
+++ b/tests/testcases/issue465.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+import xcffib.xproto as xproto
+import xcffib
+import time
+from common import set_window_name
+
+conn = xcffib.connect()
+setup = conn.get_setup()
+root = setup.roots[0].root
+visual = setup.roots[0].root_visual
+depth = setup.roots[0].root_depth
+x = xproto.xprotoExtension(conn)
+
+# issue 465 is triggered when focusing a new window with a shadow-exclude rule for unfocused windows.
+wid1 = conn.generate_id()
+print("Window 1: ", hex(wid1))
+wid2 = conn.generate_id()
+print("Window 2: ", hex(wid2))
+
+# Create a window
+conn.core.CreateWindowChecked(depth, wid1, root, 0, 0, 100, 100, 0, xproto.WindowClass.InputOutput, visual, 0, []).check()
+conn.core.CreateWindowChecked(depth, wid2, root, 0, 0, 100, 100, 0, xproto.WindowClass.InputOutput, visual, 0, []).check()
+
+# Set Window name
+set_window_name(conn, wid1, "Test window 1")
+set_window_name(conn, wid2, "Test window 2")
+
+print("mapping 1")
+conn.core.MapWindowChecked(wid1).check()
+print("mapping 2")
+conn.core.MapWindowChecked(wid2).check()
+time.sleep(0.5)
+
+x.SetInputFocusChecked(0, wid1, xproto.Time.CurrentTime).check()
+time.sleep(0.5)
+
+# Destroy the windows
+conn.core.DestroyWindowChecked(wid1).check()
+time.sleep(1)