From ab18afd26e8b75e09d40e63f8aac12a6c4f6dd3d Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 27 Oct 2026 14:40:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(window):=20WIN7=20=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=BA=A2=E5=BA=95=E6=94=B9=E4=B8=BA=E5=9C=86?= =?UTF-8?q?=E5=BD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WIN7 样式的关闭按钮仍保留 28×20 的命中区,但红色背景改为 区域内居中的 20×20 圆,圆心与 X 图标中心重合; hover / 按下时的颜色变化规则不变。 --- Apps/Explorer/desk_server.vp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Apps/Explorer/desk_server.vp b/Apps/Explorer/desk_server.vp index 55fa932..dee693e 100644 --- a/Apps/Explorer/desk_server.vp +++ b/Apps/Explorer/desk_server.vp @@ -1086,11 +1086,20 @@ class DeskServer: if pressed != 0: base_col = self.rgb(uint32(140), uint32(25), uint32(25)) self.row_fill(bx, yy, bw, base_col) if active != 0: x_col = self.rgb(uint32(255), uint32(255), uint32(255)) - elif style == STYLE_WIN7 or style == STYLE_WINXP: + elif style == STYLE_WIN7: base_col2: uint32 = self.rgb(uint32(200), uint32(50), uint32(50)) if hovered != 0: base_col2 = self.rgb(uint32(220), uint32(60), uint32(60)) if pressed != 0: base_col2 = self.rgb(uint32(140), uint32(25), uint32(25)) - self._close_fill_row(s, bx, by, bw, bh, yy, base_col2, 0) + # WIN7 特判:红底画成圆(不是圆角矩形)。在 bw×bh 的命中区内 + # 居中一个 bh×bh 的圆,圆心与 X 图标中心重合。 + circle_x: int = bx + (bw - bh) / 2 + self._close_fill_row(s, circle_x, by, bh, bh, yy, base_col2, bh / 2) + x_col = self.rgb(uint32(255), uint32(255), uint32(255)) + elif style == STYLE_WINXP: + base_col3: uint32 = self.rgb(uint32(200), uint32(50), uint32(50)) + if hovered != 0: base_col3 = self.rgb(uint32(220), uint32(60), uint32(60)) + if pressed != 0: base_col3 = self.rgb(uint32(140), uint32(25), uint32(25)) + self._close_fill_row(s, bx, by, bw, bh, yy, base_col3, 0) x_col = self.rgb(uint32(255), uint32(255), uint32(255)) else: x_col = self.rgb(uint32(150), uint32(150), uint32(150))