aboutsummaryrefslogtreecommitdiff
path: root/tests/testcases/issue314_3.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testcases/issue314_3.py')
-rw-r--r--tests/testcases/issue314_3.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/testcases/issue314_3.py b/tests/testcases/issue314_3.py
new file mode 100644
index 0000000..9d4ee3a
--- /dev/null
+++ b/tests/testcases/issue314_3.py
@@ -0,0 +1,63 @@
+#!/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)
+
+opacity_100 = [0xffffffff, ]
+opacity_80 = [int(0xffffffff * 0.8), ]
+opacity_single = [int(0xffffffff * 0.002), ]
+opacity_0 = [0, ]
+
+# issue 314 is caused by changing a windows target opacity during its fade-in/-out transition
+wid1 = conn.generate_id()
+print("Window 1: ", hex(wid1))
+
+atom = "_NET_WM_WINDOW_OPACITY"
+opacity_atom = conn.core.InternAtom(False, len(atom), atom).reply().atom
+
+# Create windows
+conn.core.CreateWindowChecked(depth, wid1, root, 0, 0, 100, 100, 0, xproto.WindowClass.InputOutput, visual, 0, []).check()
+
+# Set Window names
+set_window_name(conn, wid1, "Test window 1")
+
+# Check updating opacity while FADING windows
+print("Mapping window")
+conn.core.MapWindowChecked(wid1).check()
+time.sleep(1.2)
+
+print("Update opacity while fading out")
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_single).check()
+time.sleep(0.2)
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_0).check()
+time.sleep(1)
+
+print("Change from fading in to fading out")
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_80).check()
+time.sleep(0.5)
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_0).check()
+time.sleep(1)
+
+print("Update opacity while fading in")
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_80).check()
+time.sleep(0.2)
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_100).check()
+time.sleep(1)
+
+print("Change from fading out to fading in")
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_0).check()
+time.sleep(0.5)
+conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid1, opacity_atom, xproto.Atom.CARDINAL, 32, 1, opacity_80).check()
+time.sleep(1)
+
+# Destroy the windows
+conn.core.DestroyWindowChecked(wid1).check()