@@ -248,6 +248,19 @@ bool CreateDDWindow(SystemState *CWState)
248248 return TRUE ;
249249}
250250
251+ /* --------------------------------------------------------------------------*/
252+
253+
254+ bool IsMaximized (SystemState* DFState)
255+ {
256+ WINDOWPLACEMENT wp;
257+ memset (&wp, 0 , sizeof (wp));
258+ wp.length = sizeof (wp);
259+ GetWindowPlacement (DFState->WindowHandle , &wp);
260+ return wp.showCmd == SW_MAXIMIZE;
261+ }
262+
263+
251264void DisplayFlip (SystemState *DFState) // Double buffering flip
252265{
253266 if (g_Display)
@@ -284,18 +297,22 @@ void DisplayFlip(SystemState *DFState) // Double buffering flip
284297 int clientWidth = (int )CurScreen.right ;
285298 int clientHeight = (int )CurScreen.bottom ;
286299
300+ if (!IsMaximized (DFState) && !DFState->FullScreen && !DFState->Exiting )
301+ {
287302#if USE_DEFAULT_POSITIONING
288- // preserve default positioning (like older versions):
289- RememberWin.x = RememberWin.IsDefaultX () ? CW_USEDEFAULT : CurWindow.left ;
290- RememberWin.y = RememberWin.IsDefaultY () ? CW_USEDEFAULT : CurWindow.top ;
303+ // preserve default positioning (like older versions):
304+ RememberWin.x = RememberWin.IsDefaultX () ? CW_USEDEFAULT : CurWindow.left ;
305+ RememberWin.y = RememberWin.IsDefaultY () ? CW_USEDEFAULT : CurWindow.top ;
291306#else // !USE_DEFAULT_POSITIONING
292- // remember positioning:
293- RememberWin.x = CurWindow.left ;
294- RememberWin.y = CurWindow.top ;
307+ // remember positioning:
308+ RememberWin.x = CurWindow.left ;
309+ RememberWin.y = CurWindow.top ;
295310#endif // !USE_DEFAULT_POSITIONING
296- // remember size:
297- RememberWin.w = clientWidth; // Used for saving new window size to the ini file.
298- RememberWin.h = clientHeight-StatusBarHeight;
311+
312+ // remember size:
313+ RememberWin.w = clientWidth; // Used for saving new window size to the ini file.
314+ RememberWin.h = clientHeight - StatusBarHeight;
315+ }
299316 return ;
300317}
301318
0 commit comments