diff --git a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c index 2c48f7841b..a0e8274442 100644 --- a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c +++ b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.c @@ -448,7 +448,6 @@ ResizeConWnd(PGUI_CONSOLE_DATA GuiData, DWORD WidthUnit, DWORD HeightUnit) sInfo.nPage = Buff->ViewSize.X; sInfo.nPos = Buff->ViewOrigin.X; SetScrollInfo(GuiData->hWindow, SB_HORZ, &sInfo, TRUE); - Height += GetSystemMetrics(SM_CYHSCROLL); ShowScrollBar(GuiData->hWindow, SB_HORZ, TRUE); } else @@ -2030,8 +2029,10 @@ OnSize(PGUI_CONSOLE_DATA GuiData, WPARAM wParam, LPARAM lParam) { PCONSRV_CONSOLE Console = GuiData->Console; + if (IsIconic(GuiData->hWindow)) GuiData->HasBeenMinimized = 1; // Added to capture that window has been minimized + /* Do nothing if the window is hidden */ - if (!GuiData->IsWindowVisible) return; + if (!GuiData->IsWindowVisible || IsIconic(GuiData->hWindow)) return; if (!ConDrvValidateConsoleUnsafe((PCONSOLE)Console, CONSOLE_RUNNING, TRUE)) return; @@ -2061,8 +2062,14 @@ OnSize(PGUI_CONSOLE_DATA GuiData, WPARAM wParam, LPARAM lParam) if ((windy % HeightUnit) >= (HeightUnit / 2)) ++chary; /* Compensate for added scroll bars in window */ - if (charx < (DWORD)Buff->ScreenBufferSize.X) windy -= GetSystemMetrics(SM_CYHSCROLL); // Window will have a horizontal scroll bar - if (chary < (DWORD)Buff->ScreenBufferSize.Y) windx -= GetSystemMetrics(SM_CXVSCROLL); // Window will have a vertical scroll bar + /* (Buff->ScreenBufferSize.X <= Buff->ViewSize.X) is TRUE if there are No Horizontal Scollbars */ + if ((charx < (DWORD)Buff->ScreenBufferSize.X) && (Buff->ScreenBufferSize.X <= Buff->ViewSize.X)) + windy -= GetSystemMetrics(SM_CYHSCROLL); // Window will have a new horizontal scroll bar + /* (Buff->ScreenBufferSize.Y <= Buff->ViewSize.Y) is TRUE if there are No Vertical Scollbars */ + if ((chary < (DWORD)Buff->ScreenBufferSize.Y) && ((Buff->ScreenBufferSize.Y <= Buff->ViewSize.Y) || GuiData->HasBeenMinimized)) + windx -= GetSystemMetrics(SM_CXVSCROLL); // Window will have a new vertical scroll bar + + GuiData->HasBeenMinimized = 0; // Now reset charx = windx / (int)WidthUnit ; chary = windy / (int)HeightUnit; diff --git a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h index 1efc2103cb..6a8519d9b6 100644 --- a/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h +++ b/win32ss/user/winsrv/consrv/frontends/gui/conwnd.h @@ -91,6 +91,7 @@ typedef struct _GUI_CONSOLE_DATA CONSOLE_SELECTION_INFO Selection; /* Contains information about the selection */ COORD dwSelectionCursor; /* Selection cursor position, most of the time different from Selection.dwSelectionAnchor */ BOOL LineSelection; /* TRUE if line-oriented selection (a la *nix terminals), FALSE if block-oriented selection (default on Windows) */ + BOOL HasBeenMinimized; /* TRUE if the window was minimized previously */ GUI_CONSOLE_INFO GuiInfo; /* GUI terminal settings */ } GUI_CONSOLE_DATA, *PGUI_CONSOLE_DATA;