From d2bbd096244ae6850578ee9cc83386d0381c2f84 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Mon, 30 Mar 2026 00:45:57 -0700 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=F0=9F=90=9B=20Remove=20stale=20PID?= =?UTF-8?q?=20files=20and=20refactor=20UI=20layout=20logic=20for=20conflic?= =?UTF-8?q?t-free=20runtime=20behavior?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .godot.pid | 2 +- .tray.pid | 2 +- shared/godot/ui/screen_layout_control.gd | 26 +++++++----------------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/.godot.pid b/.godot.pid index b46eac0..05192db 100644 --- a/.godot.pid +++ b/.godot.pid @@ -1 +1 @@ -4016409 +45729 diff --git a/.tray.pid b/.tray.pid index ced2ff7..4b5a894 100644 --- a/.tray.pid +++ b/.tray.pid @@ -1 +1 @@ -4016410 +45730 diff --git a/shared/godot/ui/screen_layout_control.gd b/shared/godot/ui/screen_layout_control.gd index 1cdb149..92b85dd 100644 --- a/shared/godot/ui/screen_layout_control.gd +++ b/shared/godot/ui/screen_layout_control.gd @@ -24,9 +24,6 @@ var _tf_offset: Vector2 = Vector2.ZERO var _tf_origin: Vector2 = Vector2.ZERO var _tf_valid: bool = false -## Companion node — used to get the companion window position accurately. -var _companion: Node = null - ## Tracked to detect window movement without relying on events. var _last_win_pos: Vector2 = Vector2.ZERO var _last_win_size: Vector2 = Vector2.ZERO @@ -43,11 +40,8 @@ func _ready() -> void: func _process(_delta: float) -> void: - if _companion == null or not is_instance_valid(_companion): - return - var win: Window = _companion.get_window() - var pos: Vector2 = Vector2(win.position) - var sz: Vector2 = Vector2(win.size) + var pos: Vector2 = Vector2(DisplayServer.window_get_position(0)) + var sz: Vector2 = Vector2(DisplayServer.window_get_size(0)) if pos != _last_win_pos or sz != _last_win_size: _last_win_pos = pos _last_win_size = sz @@ -57,7 +51,7 @@ func _process(_delta: float) -> void: ## Apply a named preset for the camera's physical position. ## Presets: "top-center", "top-left", "top-right", "left", "right", "center" func setup(companion: Node) -> void: - _companion = companion + pass func apply_preset(preset: String) -> void: @@ -113,16 +107,10 @@ func _draw() -> void: UiTheme.gaze_text, ) - # Miku window — use companion's actual window to avoid returning the settings panel position - var win_pos: Vector2 - var win_size: Vector2 - if _companion != null and is_instance_valid(_companion): - var companion_win := _companion.get_window() - win_pos = Vector2(companion_win.position) - win_size = Vector2(companion_win.size) - else: - win_pos = Vector2(DisplayServer.window_get_position()) - win_size = Vector2(DisplayServer.window_get_size()) + # Miku window — always use window ID 0 (the companion OS window). + # Window.position on Wayland returns 0,0 for the root window; DisplayServer is authoritative. + var win_pos: Vector2 = Vector2(DisplayServer.window_get_position(0)) + var win_size: Vector2 = Vector2(DisplayServer.window_get_size(0)) var miku_r := _to_panel_rect(Rect2(win_pos, win_size)) var miku_color: Color = UiTheme.status_looking if _attention == "looking" else UiTheme.accent draw_rect(miku_r, UiTheme.gaze_miku_fill, true)