Skip to content

[Bug] 多显示器Windows 端经 RDP 远程连接后,Kelivo 窗口可能因坐标超出屏幕范围而不可见 #432

@zzl221000

Description

@zzl221000

Describe the bug

问题描述

在 Windows 系统上使用 Kelivo 时,如果通过微软远程桌面(mstsc/RDP)连接该电脑,在远程会话结束并解锁本地电脑后,Kelivo 的主窗口有概率不会显示在屏幕上。

复现步骤

  1. 在本地电脑上打开 Kelivo 应用程序。
  2. 使用 mstsc 从另一台电脑远程连接到此电脑。
  3. 结束远程会话,回到本地电脑并解锁屏幕。
  4. 观察任务栏或屏幕,发现 Kelivo 窗口不可见(无法点击或看到界面)。

预期行为

无论是否经过 RDP 远程连接,Kelivo 窗口应始终显示在屏幕可见区域内。

实际行为

窗口似乎“消失”了。经排查 shared_preferences.json 配置文件,发现 window_pos 记录的两个坐标变量(X, Y)数值超出了当前屏幕的分辨率范围,导致窗口渲染在屏幕可视区域之外。

Environment

操作系统: Windows 11
软件版本: 任意版本

Screenshots or Video

No response

Additional context

原因分析

RDP 远程会话可能会改变屏幕分辨率或坐标系。当会话结束恢复本地环境时,程序读取了旧的窗口位置配置,但该坐标在当前本地分辨率下已失效(超出边界),且程序缺乏边界校验机制。

建议修复方案

建议在程序启动加载窗口位置信息时,增加边界检查逻辑:

  1. 读取 window_pos 坐标。
  2. 判断坐标是否超出当前屏幕的有效分辨率范围。
  3. 如果超出,则忽略配置值,将窗口重置为默认位置(如屏幕中心或左上角),防止窗口不可见。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions