Skip to content

Commit d8d8f63

Browse files
committed
修复无法恢复正常窗口大小
1 parent fbb0721 commit d8d8f63

2 files changed

Lines changed: 27 additions & 12 deletions

File tree

src/components/draggable-window/draggable-window.jsx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,20 @@ const DraggableWindow = props => {
3535
const savedState = windowStateStorage.getValidWindowState(windowId, {
3636
position: defaultPosition,
3737
size: defaultSize,
38-
isMinimized: false
38+
isMinimized: false,
39+
isFullScreen: false,
40+
originalPosition: defaultPosition,
41+
originalSize: defaultSize
3942
});
4043
return savedState;
4144
}
4245
return {
4346
position: defaultPosition,
4447
size: defaultSize,
45-
isMinimized: false
48+
isMinimized: false,
49+
isFullScreen: false,
50+
originalPosition: defaultPosition,
51+
originalSize: defaultSize
4652
};
4753
};
4854

@@ -54,9 +60,9 @@ const DraggableWindow = props => {
5460
const [dragOffset, setDragOffset] = React.useState({x: 0, y: 0});
5561
const [resizeHandle, setResizeHandle] = React.useState(null);
5662
const [isMinimized, setIsMinimized] = React.useState(initialState.isMinimized);
57-
const [isFullScreen, setIsFullScreen] = React.useState(false);
58-
const [originalPosition, setOriginalPosition] = React.useState(initialState.position);
59-
const [originalSize, setOriginalSize] = React.useState(initialState.size);
63+
const [isFullScreen, setIsFullScreen] = React.useState(initialState.isFullScreen);
64+
const [originalPosition, setOriginalPosition] = React.useState(initialState.originalPosition);
65+
const [originalSize, setOriginalSize] = React.useState(initialState.originalSize);
6066
const [isDraggingMinimized, setIsDraggingMinimized] = React.useState(false);
6167
const [dragStartPosition, setDragStartPosition] = React.useState({x: 0, y: 0});
6268

@@ -66,18 +72,24 @@ const DraggableWindow = props => {
6672
// 保存窗口状态到本地存储
6773
const saveWindowState = React.useCallback(() => {
6874
if (enableStatePersistence && windowId) {
69-
windowStateStorage.saveWindowState(windowId, {
75+
const stateToSave = {
7076
position,
7177
size,
72-
isMinimized
73-
});
78+
isMinimized,
79+
isFullScreen
80+
};
81+
if (isFullScreen) {
82+
stateToSave.originalPosition = originalPosition;
83+
stateToSave.originalSize = originalSize;
84+
}
85+
windowStateStorage.saveWindowState(windowId, stateToSave);
7486
}
75-
}, [enableStatePersistence, windowId, position, size, isMinimized]);
87+
}, [enableStatePersistence, windowId, position, size, isMinimized, isFullScreen, originalPosition, originalSize]);
7688

7789
// 当状态变化时自动保存
7890
React.useEffect(() => {
7991
saveWindowState();
80-
}, [position, size, isMinimized, saveWindowState]);
92+
}, [position, size, isMinimized, isFullScreen, saveWindowState]);
8193

8294
const handleMouseDown = React.useCallback(e => {
8395
if (!isDraggable) return;

src/lib/window-state-storage.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,13 @@ class WindowStateStorage {
106106
return {
107107
position: state.position || defaultState.position,
108108
size: state.size || defaultState.size,
109-
isMinimized: state.isMinimized || false
109+
isMinimized: state.isMinimized || false,
110+
isFullScreen: state.isFullScreen || false,
111+
originalPosition: state.originalPosition || defaultState.position,
112+
originalSize: state.originalSize || defaultState.size
110113
};
111114
}
112115
}
113116

114117
// 导出单例实例
115-
export default new WindowStateStorage();
118+
export default new WindowStateStorage();

0 commit comments

Comments
 (0)