♻️ 重构窗体/缩放调整

This commit is contained in:
目棃
2024-08-01 22:09:54 +08:00
parent 49854367b1
commit db00765f7b

View File

@@ -11,7 +11,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { app, event, core, webviewWindow } from "@tauri-apps/api"; import { app, event, core, webviewWindow, window as TauriWindow } from "@tauri-apps/api";
import { PhysicalSize } from "@tauri-apps/api/dpi"; import { PhysicalSize } from "@tauri-apps/api/dpi";
import { UnlistenFn, Event } from "@tauri-apps/api/event"; import { UnlistenFn, Event } from "@tauri-apps/api/event";
import { mkdir } from "@tauri-apps/plugin-fs"; import { mkdir } from "@tauri-apps/plugin-fs";
@@ -52,24 +52,34 @@ onBeforeMount(async () => {
await core.invoke("init_app"); await core.invoke("init_app");
urlListener = await getDeepLink(); urlListener = await getDeepLink();
} }
await win.show();
await checkResize(); await checkResize();
await win.show();
}); });
async function checkResize(): Promise<void> { async function checkResize(): Promise<void> {
const windowCur = await webviewWindow.getCurrent(); const screen = await TauriWindow.currentMonitor();
const winScale = await windowCur.scaleFactor(); if (screen === null) {
if (winScale > 1) { showSnackbar({
const newSize = getSize(windowCur.label); text: "获取屏幕信息失败!",
await windowCur.setSize(newSize); color: "error",
await windowCur.setZoom(1 / winScale); timeout: 3000,
await windowCur.center(); });
} else if (winScale === 1) { return;
const newSize = getSize(windowCur.label);
await windowCur.setSize(newSize);
await windowCur.setZoom(1);
await windowCur.center();
} }
const windowCur = await webviewWindow.getCurrent();
if (await windowCur.isMaximized()) return;
const designSize = getSize(windowCur.label);
const widthScale = screen.size.width / 1920;
const heightScale = screen.size.height / 1080;
await windowCur.setSize(
new PhysicalSize(
Math.round(designSize.width * widthScale),
Math.round(designSize.height * heightScale),
),
);
await windowCur.setZoom((1 / screen.scaleFactor) * Math.min(widthScale, heightScale));
await windowCur.center();
return;
} }
function getSize(label: string): PhysicalSize { function getSize(label: string): PhysicalSize {