위젯 추가팝업 수정

This commit is contained in:
Macbook
2026-06-15 16:00:41 +09:00
parent e655725ce8
commit 4d7ad65cd1
5 changed files with 73 additions and 6 deletions
+24 -1
View File
@@ -1,5 +1,5 @@
import './forceServerApi';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import ReactDOM from 'react-dom/client';
import { getCurrentWindow } from '@tauri-apps/api/window';
import { LogicalSize } from '@tauri-apps/api/dpi';
@@ -8,6 +8,7 @@ import { ensureDesktopApiBase } from './ensureDesktopApiBase';
import FloatingWidgetWindow from '@frontend/components/floatingWidgets/FloatingWidgetWindow';
import {
defaultGridFr,
NATIVE_WIDGET_PICKER_WINDOW,
type FloatingWidgetInstance,
} from '@frontend/types/floatingWidget';
import type { Theme } from '@frontend/types';
@@ -134,6 +135,27 @@ const WidgetApp: React.FC = () => {
void getCurrentWindow().close();
}, []);
const sizeBeforePickerRef = useRef<{ width: number; height: number } | null>(null);
const handlePickerOpenChange = useCallback(async (open: boolean) => {
const win = getCurrentWindow();
if (open) {
const size = await win.innerSize();
sizeBeforePickerRef.current = { width: size.width, height: size.height };
const maxW = Math.max(480, window.screen.availWidth - 48);
const maxH = Math.max(520, window.screen.availHeight - 48);
const w = Math.min(NATIVE_WIDGET_PICKER_WINDOW.width, maxW);
const h = Math.min(NATIVE_WIDGET_PICKER_WINDOW.height, maxH);
await win.setSize(new LogicalSize(w, h));
await win.center();
return;
}
const prev = sizeBeforePickerRef.current;
if (!prev) return;
sizeBeforePickerRef.current = null;
await win.setSize(new LogicalSize(prev.width, prev.height));
}, []);
if (!instance) {
return <p className="wd-widget-empty"> .</p>;
}
@@ -161,6 +183,7 @@ const WidgetApp: React.FC = () => {
nativeShell
onClose={handleClose}
onFocus={() => {}}
onPickerOpenChange={open => { void handlePickerOpenChange(open); }}
onUpdateSlots={slots => setInstance(prev => (prev ? { ...prev, slots } : prev))}
onUpdateSize={(width, height) => {
setInstance(prev => (prev ? { ...prev, width, height } : prev));