fix(explorer): 焦点/层级切换时把可见窗口整体置脏
现象:窗口层级切换后内容不刷新,要等鼠标经过才覆盖。原因:focus() 只调 mark_titles()(标题栏 + 任务栏),没有标记内容区;被抬起的窗口内容区因此不会重画,原来压在上面的窗口仍留在屏幕。改为层级变化时对所有可见窗口调 mark_win(含阴影带),随后按新 z 序整体重画。
This commit is contained in:
1 parent
a19c5d1a53
commit
fbbb10099d
1 file changed
+6
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user