fix: enable window dragging outside interactive controls
Use background-only native drag gestures so scroll content and overlays remain draggable without stealing control, text, or queue-row input. Compact mode uses the same explicit drag surfaces rather than broad native background movement.
This commit is contained in:
+22
-5
@@ -36,6 +36,21 @@ class StartupStreamingServer(StreamingServer):
|
||||
super()._get(request)
|
||||
|
||||
|
||||
def check_window_drag(root, app, fixtures):
|
||||
result_path = root / "window-drag.json"
|
||||
diagnostics = root / "window-drag.log"
|
||||
result = subprocess.run(
|
||||
["open", "-n", "-W", "--stderr", str(diagnostics), "-a", str(app),
|
||||
str(fixtures / "cache.mp4"), "--args", "--no-config", "--check-window-drag", str(result_path), str(fixtures)],
|
||||
capture_output=True, text=True, timeout=30,
|
||||
)
|
||||
report = json.loads(result_path.read_text()) if result_path.exists() else {}
|
||||
if result.returncode != 0 or not report.get("passed"):
|
||||
log = diagnostics.read_text(errors="replace") if diagnostics.exists() else ""
|
||||
raise RuntimeError(f"native window drag failed: {report}; {result.stdout}{result.stderr}{log}")
|
||||
print("PASS native window dragging: " + str(report))
|
||||
|
||||
|
||||
def check_queue_drag(root, app, fixtures):
|
||||
result_path = root / "queue-drag.json"
|
||||
diagnostics = root / "queue-drag.log"
|
||||
@@ -671,11 +686,13 @@ with tempfile.TemporaryDirectory(prefix="terebi-startup-") as directory:
|
||||
if launch.returncode != 0 or not result["passed"] or result["bundleIdentifier"] != identifier:
|
||||
raise RuntimeError(f"packaged startup failed: {result}; {stdout}{stderr}")
|
||||
print("PASS packaged bootstrap: registered app PID/identity, in-process player load, actual playback and Now Playing")
|
||||
check_queue_drag(root, app, fixtures)
|
||||
if os.environ.get("TEREBI_CHECK_QUEUE_ONLY") != "1":
|
||||
check_window_layout(root, app, fixtures)
|
||||
if os.environ.get("TEREBI_CHECK_LAYOUT_ONLY") != "1":
|
||||
check_cli_instances(root, app, fixtures)
|
||||
check_window_drag(root, app, fixtures)
|
||||
if os.environ.get("TEREBI_CHECK_DRAG_ONLY") != "1":
|
||||
check_queue_drag(root, app, fixtures)
|
||||
if os.environ.get("TEREBI_CHECK_QUEUE_ONLY") != "1":
|
||||
check_window_layout(root, app, fixtures)
|
||||
if os.environ.get("TEREBI_CHECK_LAYOUT_ONLY") != "1":
|
||||
check_cli_instances(root, app, fixtures)
|
||||
finally:
|
||||
os.close(descriptor)
|
||||
subprocess.run(
|
||||
|
||||
Reference in New Issue
Block a user