From 01cda622314ec178279e50dc2725974856d2fb68 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Mon, 29 Dec 2025 21:42:09 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=A4=84=E7=90=86=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E6=94=BE=E7=BC=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #192 --- src-tauri/src/client/utils.rs | 11 +++++---- src-tauri/src/plugins/text_scale.rs | 5 +--- src/App.vue | 6 +++++ src/pages/common/PageTest.vue | 37 +++++++++++++---------------- src/utils/TGWindow.ts | 8 ++++--- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/src-tauri/src/client/utils.rs b/src-tauri/src/client/utils.rs index e5108e46..8eea9e97 100644 --- a/src-tauri/src/client/utils.rs +++ b/src-tauri/src/client/utils.rs @@ -1,7 +1,7 @@ -//! @file src/client/utils.rs -//! @desc 结合屏幕分辨率获取窗口大小 -//! @since Beta v0.7.6 +// 结合屏幕分辨率获取窗口大小 +// @since Beta v0.9.1 +use crate::utils; use tauri::{AppHandle, Manager, Monitor}; pub fn get_window_size(app: AppHandle, width: f64, height: f64) -> (f64, f64) { @@ -17,12 +17,13 @@ pub fn get_window_size2(monitor: Monitor, width: f64, height: f64) -> (f64, f64) let monitor_scale = monitor.scale_factor(); let width_scale = monitor_width / 1920.0; let height_scale = monitor_height / 1080.0; + let mut text_scale = utils::read_text_scale_factor().unwrap_or(1.0); let mut get_width: f64 = 0.0; let mut get_height: f64 = 0.0; // 忽略未使用 println!("{} {}", get_width, get_height); - get_width = (width * width_scale / monitor_scale).round(); - get_height = (height * height_scale / monitor_scale).round(); + get_width = (width * width_scale / (monitor_scale * text_scale)).round(); + get_height = (height * height_scale / (monitor_scale * text_scale)).round(); #[cfg(target_os = "macos")] { get_width = (width * width_scale).round(); diff --git a/src-tauri/src/plugins/text_scale.rs b/src-tauri/src/plugins/text_scale.rs index 7dc8025c..370fa532 100644 --- a/src-tauri/src/plugins/text_scale.rs +++ b/src-tauri/src/plugins/text_scale.rs @@ -1,7 +1,6 @@ // 监听系统文本放缩 // @since Beta v0.9.1 -use crate::utils; use std::{thread, time::Duration}; use tauri::{AppHandle, Emitter}; use widestring::U16CString; @@ -29,9 +28,7 @@ pub fn init(app: AppHandle) { RegNotifyChangeKeyValue(hkey, 0, REG_NOTIFY_CHANGE_LAST_SET, std::ptr::null_mut(), 0); if notify_status == ERROR_SUCCESS { - if let Ok(scale) = utils::read_text_scale_factor() { - let _ = app.emit("text_scale_change", scale); - } + let _ = app.emit("text_scale_change", ""); } else { eprintln!("❌ 注册表监听失败: {}", notify_status); break; diff --git a/src/App.vue b/src/App.vue index dfa4b9f3..2c4e3ed0 100644 --- a/src/App.vue +++ b/src/App.vue @@ -48,6 +48,7 @@ let dpListener: UnlistenFn | null = null; let resizeListener: UnlistenFn | null = null; let yaeListener: UnlistenFn | null = null; let closeListener: UnlistenFn | null = null; +let textScaleListener: UnlistenFn | null = null; let yaeFlag: Array = []; onMounted(async () => { @@ -67,6 +68,7 @@ onMounted(async () => { document.documentElement.className = theme.value; themeListener = await event.listen("readTheme", handleThemeListen); resizeListener = await event.listen("needResize", handleResizeListen); + textScaleListener = await event.listen("text_scale_change", resizeWindow); const isShow = await win.isVisible(); if (!isShow) { await win.center(); @@ -95,6 +97,10 @@ onUnmounted(() => { closeListener(); closeListener = null; } + if (textScaleListener !== null) { + textScaleListener(); + textScaleListener = null; + } }); /** diff --git a/src/pages/common/PageTest.vue b/src/pages/common/PageTest.vue index bcf974e1..99c2abcb 100644 --- a/src/pages/common/PageTest.vue +++ b/src/pages/common/PageTest.vue @@ -19,29 +19,26 @@