fix(explorer): 焦点/层级切换时把可见窗口整体置脏

现象:窗口层级切换后内容不刷新,要等鼠标经过才覆盖。原因:focus() 只调 mark_titles()(标题栏 + 任务栏),没有标记内容区;被抬起的窗口内容区因此不会重画,原来压在上面的窗口仍留在屏幕。改为层级变化时对所有可见窗口调 mark_win(含阴影带),随后按新 z 序整体重画。
This commit is contained in:
TermiNexus committed 2026-10-17 11:52:17 +08:00
1 parent a19c5d1a53
commit fbbb10099d
1 file changed
+6
+6
View File
@@ -1150,6 +1150,12 @@ class DeskServer:
self.next_z += 1
s.z_order = self.next_z
self.focused = win
# 层级变化会改变窗口互相覆盖的关系:把所有可见窗口整体置脏重画,
# 否则被抬起的窗口只重画标题栏,内容区仍露出原来压在上面的窗口,直到鼠标经过。
for i in range(desk.DESK_MAX_WIN):
w: desk.WinSlot* = self.slot(i)
if w.used != 0 and w.active != 0 and w.minimized == 0:
self.mark_win(w.uy, w.h)
self.mark_titles()
def _move_cursor(self, dx: int, dy: int) -> int: