diff --git a/base/applications/notepad/dialog.c b/base/applications/notepad/dialog.c index 8233082be1b..3f863c19179 100644 --- a/base/applications/notepad/dialog.c +++ b/base/applications/notepad/dialog.c @@ -911,17 +911,13 @@ VOID DIALOG_EditTimeDate(VOID) SendMessage(Globals.hEdit, EM_REPLACESEL, TRUE, (LPARAM)szText); } -VOID DoCreateStatusBar(VOID) +VOID DoShowHideStatusBar(VOID) { - RECT rc; - RECT rcstatus; - BOOL bStatusBarVisible; - /* Check if status bar object already exists. */ - if (Globals.hStatusBar == NULL) + if (Globals.bShowStatusBar && Globals.hStatusBar == NULL) { /* Try to create the status bar */ - Globals.hStatusBar = CreateStatusWindow(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, + Globals.hStatusBar = CreateStatusWindow(WS_CHILD | CCS_BOTTOM | SBARS_SIZEGRIP, NULL, Globals.hMainWnd, CMD_STATUSBAR_WND_ID); @@ -936,59 +932,17 @@ VOID DoCreateStatusBar(VOID) LoadString(Globals.hInstance, STRING_LINE_COLUMN, Globals.szStatusBarLineCol, MAX_PATH - 1); } - /* Set status bar visiblity according to the settings. */ - if ((Globals.bWrapLongLines != FALSE) || (Globals.bShowStatusBar == FALSE)) - { - bStatusBarVisible = FALSE; - ShowWindow(Globals.hStatusBar, SW_HIDE); - } - else - { - bStatusBarVisible = TRUE; - ShowWindow(Globals.hStatusBar, SW_SHOW); - SendMessage(Globals.hStatusBar, WM_SIZE, 0, 0); - } + /* Update layout of controls */ + PostMessageW(Globals.hMainWnd, WM_SIZE, 0, 0); - /* Set check state in show status bar item. */ - if (bStatusBarVisible) - { - CheckMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_CHECKED); - } - else - { - CheckMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_UNCHECKED); - } + if (Globals.hStatusBar == NULL) + return; - /* Update menu mar with the previous changes */ - DrawMenuBar(Globals.hMainWnd); + /* Update visibility of status bar */ + ShowWindow(Globals.hStatusBar, (Globals.bShowStatusBar ? SW_SHOWNOACTIVATE : SW_HIDE)); - /* Sefety test is edit control exists */ - if (Globals.hEdit != NULL) - { - /* Retrieve the sizes of the controls */ - GetClientRect(Globals.hMainWnd, &rc); - GetClientRect(Globals.hStatusBar, &rcstatus); - - /* If status bar is currently visible, update dimensions of edit control */ - if (bStatusBarVisible) - rc.bottom -= (rcstatus.bottom - rcstatus.top); - - /* Resize edit control to right size. */ - MoveWindow(Globals.hEdit, - rc.left, - rc.top, - rc.right - rc.left, - rc.bottom - rc.top, - TRUE); - } - - /* Set the status bar for multiple-text output */ - DIALOG_StatusBarAlignParts(); - - /* Update content with current row/column text */ + /* Update status bar contents */ DIALOG_StatusBarUpdateCaretPos(); - - /* Update line endings and encoding on the status bar */ DIALOG_StatusBarUpdateLineEndings(); DIALOG_StatusBarUpdateEncoding(); } @@ -1032,17 +986,7 @@ VOID DoCreateEditWindow(VOID) } /* Update wrap status into the main menu and recover style flags */ - if (Globals.bWrapLongLines) - { - dwStyle = EDIT_STYLE_WRAP; - EnableMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); - } else { - dwStyle = EDIT_STYLE; - EnableMenuItem(Globals.hMenu, CMD_STATUSBAR, MF_BYCOMMAND | MF_ENABLED); - } - - /* Update previous changes */ - DrawMenuBar(Globals.hMainWnd); + dwStyle = (Globals.bWrapLongLines ? EDIT_STYLE_WRAP : EDIT_STYLE); /* Create the new edit control */ Globals.hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, @@ -1057,7 +1001,6 @@ VOID DoCreateEditWindow(VOID) NULL, Globals.hInstance, NULL); - if (Globals.hEdit == NULL) { if (pTemp) @@ -1087,28 +1030,22 @@ VOID DoCreateEditWindow(VOID) GWLP_WNDPROC, (LONG_PTR)EDIT_WndProc); - /* Create/update status bar */ - DoCreateStatusBar(); - /* Finally shows new edit control and set focus into it. */ ShowWindow(Globals.hEdit, SW_SHOW); SetFocus(Globals.hEdit); + + /* Re-arrange controls */ + PostMessageW(Globals.hMainWnd, WM_SIZE, 0, 0); } VOID DIALOG_EditWrap(VOID) { Globals.bWrapLongLines = !Globals.bWrapLongLines; - if (Globals.bWrapLongLines) - { - EnableMenuItem(Globals.hMenu, CMD_GOTO, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); - } - else - { - EnableMenuItem(Globals.hMenu, CMD_GOTO, MF_BYCOMMAND | MF_ENABLED); - } + EnableMenuItem(Globals.hMenu, CMD_GOTO, (Globals.bWrapLongLines ? MF_GRAYED : MF_ENABLED)); DoCreateEditWindow(); + DoShowHideStatusBar(); } VOID DIALOG_SelectFont(VOID) @@ -1274,8 +1211,7 @@ VOID DIALOG_StatusBarUpdateCaretPos(VOID) VOID DIALOG_ViewStatusBar(VOID) { Globals.bShowStatusBar = !Globals.bShowStatusBar; - - DoCreateStatusBar(); + DoShowHideStatusBar(); } VOID DIALOG_HelpContents(VOID) diff --git a/base/applications/notepad/dialog.h b/base/applications/notepad/dialog.h index 3d5572cfad7..5b9967af0ad 100644 --- a/base/applications/notepad/dialog.h +++ b/base/applications/notepad/dialog.h @@ -67,5 +67,5 @@ BOOL FileExists(LPCTSTR szFilename); BOOL HasFileExtension(LPCTSTR szFilename); BOOL DoCloseFile(VOID); VOID DoOpenFile(LPCTSTR szFileName); -VOID DoCreateStatusBar(VOID); +VOID DoShowHideStatusBar(VOID); VOID DoCreateEditWindow(VOID); diff --git a/base/applications/notepad/main.c b/base/applications/notepad/main.c index 81908e303f2..2768d87fa8d 100644 --- a/base/applications/notepad/main.c +++ b/base/applications/notepad/main.c @@ -285,13 +285,8 @@ static VOID NOTEPAD_InitMenuPopup(HMENU menu, LPARAM index) UNREFERENCED_PARAMETER(index); - CheckMenuItem(GetMenu(Globals.hMainWnd), CMD_WRAP, - MF_BYCOMMAND | (Globals.bWrapLongLines ? MF_CHECKED : MF_UNCHECKED)); - if (!Globals.bWrapLongLines) - { - CheckMenuItem(GetMenu(Globals.hMainWnd), CMD_STATUSBAR, - MF_BYCOMMAND | (Globals.bShowStatusBar ? MF_CHECKED : MF_UNCHECKED)); - } + CheckMenuItem(menu, CMD_WRAP, (Globals.bWrapLongLines ? MF_CHECKED : MF_UNCHECKED)); + CheckMenuItem(menu, CMD_STATUSBAR, (Globals.bShowStatusBar ? MF_CHECKED : MF_UNCHECKED)); EnableMenuItem(menu, CMD_UNDO, SendMessage(Globals.hEdit, EM_CANUNDO, 0, 0) ? MF_ENABLED : MF_GRAYED); EnableMenuItem(menu, CMD_PASTE, @@ -304,7 +299,6 @@ static VOID NOTEPAD_InitMenuPopup(HMENU menu, LPARAM index) EnableMenuItem(menu, CMD_SELECT_ALL, GetWindowTextLength(Globals.hEdit) ? MF_ENABLED : MF_GRAYED); - DrawMenuBar(Globals.hMainWnd); } LRESULT CALLBACK EDIT_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -394,56 +388,24 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_SIZE: { - if ((Globals.bShowStatusBar != FALSE) && (Globals.bWrapLongLines == FALSE)) + RECT rc; + GetClientRect(hWnd, &rc); + + if (Globals.bShowStatusBar) { - RECT rcStatusBar; - HDWP hdwp; + RECT rcStatus; + SendMessageW(Globals.hStatusBar, WM_SIZE, 0, 0); + GetWindowRect(Globals.hStatusBar, &rcStatus); + rc.bottom -= rcStatus.bottom - rcStatus.top; + } - if (!GetWindowRect(Globals.hStatusBar, &rcStatusBar)) - break; - - hdwp = BeginDeferWindowPos(2); - if (hdwp == NULL) - break; - - hdwp = DeferWindowPos(hdwp, - Globals.hEdit, - NULL, - 0, - 0, - LOWORD(lParam), - HIWORD(lParam) - (rcStatusBar.bottom - rcStatusBar.top), - SWP_NOZORDER | SWP_NOMOVE); - - if (hdwp == NULL) - break; - - hdwp = DeferWindowPos(hdwp, - Globals.hStatusBar, - NULL, - 0, - 0, - LOWORD(lParam), - LOWORD(wParam), - SWP_NOZORDER); - - if (hdwp == NULL) - break; - - EndDeferWindowPos(hdwp); + MoveWindow(Globals.hEdit, 0, 0, rc.right, rc.bottom, TRUE); + if (Globals.bShowStatusBar) + { /* Align status bar parts, only if the status bar resize operation succeeds */ DIALOG_StatusBarAlignParts(); } - else - SetWindowPos(Globals.hEdit, - NULL, - 0, - 0, - LOWORD(lParam), - HIWORD(lParam), - SWP_NOZORDER | SWP_NOMOVE); - break; } @@ -467,10 +429,11 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) DoOpenFile(szFileName); break; } - case WM_CHAR: + case WM_INITMENUPOPUP: NOTEPAD_InitMenuPopup((HMENU)wParam, lParam); break; + default: if (msg == aFINDMSGSTRING) { @@ -669,6 +632,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh } DoCreateEditWindow(); + DoShowHideStatusBar(); NOTEPAD_InitData(); DIALOG_FileNew(); @@ -677,8 +641,6 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh UpdateWindow(Globals.hMainWnd); DragAcceptFiles(Globals.hMainWnd, TRUE); - DIALOG_ViewStatusBar(); - if (!HandleCommandLine(cmdline)) { return 0; diff --git a/base/applications/notepad/settings.c b/base/applications/notepad/settings.c index d0295937b43..0031e14f9b0 100644 --- a/base/applications/notepad/settings.c +++ b/base/applications/notepad/settings.c @@ -157,9 +157,6 @@ void NOTEPAD_LoadSettingsFromRegistry(void) Globals.main_rect.right = Globals.main_rect.left + dx; Globals.main_rect.bottom = Globals.main_rect.top + dy; - /* invert value because DIALOG_ViewStatusBar will be called to show it */ - Globals.bShowStatusBar = !Globals.bShowStatusBar; - if (dwPointSize != 0) Globals.lfFont.lfHeight = HeightFromPointSize(dwPointSize); else @@ -170,7 +167,7 @@ void NOTEPAD_LoadSettingsFromRegistry(void) else { /* If no settings are found in the registry, then use default values */ - Globals.bShowStatusBar = FALSE; + Globals.bShowStatusBar = TRUE; Globals.bWrapLongLines = FALSE; SetRect(&Globals.lMargins, 750, 1000, 750, 1000);