From f7f2ed201a2522ce255864f2f9f7ebdc0fda6000 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Mon, 20 Feb 2023 21:59:16 +0900 Subject: [PATCH] [NOTEPAD] Make "UTF-8 without BOM" default (#5081) - Define a constant ENCODING_DEFAULT that is equal to ENCODING_UTF8. - Initialize Globals.encFile as ENCODING_DEFAULT. - Reset encoding and line ending in DIALOG_FileNew. - AnalyzeEncoding returns ENCODING_DEFAULT for non-zero ASCII text. - Remove unnecessary DIALOG_StatusBarAlignParts calls. CORE-18837 --- base/applications/notepad/dialog.c | 25 ++++++++++++------------- base/applications/notepad/main.c | 1 + base/applications/notepad/main.h | 3 +-- base/applications/notepad/text.c | 22 +++++++++++----------- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/base/applications/notepad/dialog.c b/base/applications/notepad/dialog.c index 0b76b4711fd..12424dd30a9 100644 --- a/base/applications/notepad/dialog.c +++ b/base/applications/notepad/dialog.c @@ -167,7 +167,6 @@ static VOID DIALOG_StatusBarUpdateEncoding(VOID) static VOID DIALOG_StatusBarUpdateAll(VOID) { - DIALOG_StatusBarAlignParts(); DIALOG_StatusBarUpdateCaretPos(); DIALOG_StatusBarUpdateLineEndings(); DIALOG_StatusBarUpdateEncoding(); @@ -405,8 +404,6 @@ BOOL DoCloseFile(VOID) break; case IDCANCEL: - return FALSE; - default: return FALSE; } @@ -463,24 +460,26 @@ VOID DoOpenFile(LPCTSTR szFileName) SetFileName(szFileName); UpdateWindowCaption(TRUE); NOTEPAD_EnableSearchMenu(); + DIALOG_StatusBarUpdateAll(); done: if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile); - - DIALOG_StatusBarUpdateAll(); } VOID DIALOG_FileNew(VOID) { /* Close any files and prompt to save changes */ - if (DoCloseFile()) { - SetWindowText(Globals.hEdit, empty_str); - SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0); - SetFocus(Globals.hEdit); - NOTEPAD_EnableSearchMenu(); - DIALOG_StatusBarUpdateAll(); - } + if (!DoCloseFile()) + return; + + SetWindowText(Globals.hEdit, NULL); + SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0); + Globals.iEoln = EOLN_CRLF; + Globals.encFile = ENCODING_DEFAULT; + + NOTEPAD_EnableSearchMenu(); + DIALOG_StatusBarUpdateAll(); } VOID DIALOG_FileNewWindow(VOID) @@ -930,7 +929,7 @@ VOID DoShowHideStatusBar(VOID) } /* Update layout of controls */ - PostMessageW(Globals.hMainWnd, WM_SIZE, 0, 0); + SendMessageW(Globals.hMainWnd, WM_SIZE, 0, 0); if (Globals.hStatusBar == NULL) return; diff --git a/base/applications/notepad/main.c b/base/applications/notepad/main.c index 2768d87fa8d..f99fb40621a 100644 --- a/base/applications/notepad/main.c +++ b/base/applications/notepad/main.c @@ -580,6 +580,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh ZeroMemory(&Globals, sizeof(Globals)); Globals.hInstance = hInstance; + Globals.encFile = ENCODING_DEFAULT; NOTEPAD_LoadSettingsFromRegistry(); ZeroMemory(&wndclass, sizeof(wndclass)); diff --git a/base/applications/notepad/main.h b/base/applications/notepad/main.h index e2140c2b52b..34d7e542670 100644 --- a/base/applications/notepad/main.h +++ b/base/applications/notepad/main.h @@ -44,8 +44,7 @@ typedef enum ENCODING_UTF8BOM = 4 } ENCODING; -// #define MIN_ENCODING 0 -// #define MAX_ENCODING 3 +#define ENCODING_DEFAULT ENCODING_UTF8 // ENCODING_ANSI typedef enum { diff --git a/base/applications/notepad/text.c b/base/applications/notepad/text.c index 7f0511229a1..8b8de3c9c1a 100644 --- a/base/applications/notepad/text.c +++ b/base/applications/notepad/text.c @@ -24,25 +24,25 @@ #include "notepad.h" #include -BOOL IsTextNonZeroASCII(const void *pText, DWORD dwSize) +static BOOL IsTextNonZeroASCII(LPCVOID pText, DWORD dwSize) { - const signed char *pBytes = pText; + const signed char *pch = pText; while (dwSize-- > 0) { - if (*pBytes <= 0) + if (*pch <= 0) return FALSE; - ++pBytes; + ++pch; } return TRUE; } -ENCODING AnalyzeEncoding(const char *pBytes, DWORD dwSize) +static ENCODING AnalyzeEncoding(const BYTE *pBytes, DWORD dwSize) { INT flags = IS_TEXT_UNICODE_STATISTICS | IS_TEXT_UNICODE_REVERSE_STATISTICS; - if (dwSize <= 1 || IsTextNonZeroASCII(pBytes, dwSize)) - return ENCODING_ANSI; + if (IsTextNonZeroASCII(pBytes, dwSize)) + return ENCODING_DEFAULT; if (IsTextUnicode(pBytes, dwSize, &flags)) return ENCODING_UTF16LE; @@ -51,7 +51,7 @@ ENCODING AnalyzeEncoding(const char *pBytes, DWORD dwSize) return ENCODING_UTF16BE; /* is it UTF-8? */ - if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, pBytes, dwSize, NULL, 0)) + if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, (LPCSTR)pBytes, dwSize, NULL, 0)) return ENCODING_UTF8; return ENCODING_ANSI; @@ -170,7 +170,7 @@ ReadText(HANDLE hFile, HLOCAL *phLocal, ENCODING *pencFile, EOLN *piEoln) DWORD dwSize, dwPos; SIZE_T i, cchText, cbContent; BOOL bSuccess = FALSE; - ENCODING encFile = ENCODING_ANSI; + ENCODING encFile; UINT iCodePage; HANDLE hMapping = INVALID_HANDLE_VALUE; HLOCAL hNewLocal; @@ -191,7 +191,7 @@ ReadText(HANDLE hFile, HLOCAL *phLocal, ENCODING *pencFile, EOLN *piEoln) *phLocal = hNewLocal; *piEoln = EOLN_CRLF; - *pencFile = ENCODING_UTF8; + *pencFile = ENCODING_DEFAULT; return TRUE; } @@ -222,7 +222,7 @@ ReadText(HANDLE hFile, HLOCAL *phLocal, ENCODING *pencFile, EOLN *piEoln) } else { - encFile = AnalyzeEncoding((LPCSTR)pBytes, dwSize); + encFile = AnalyzeEncoding(pBytes, dwSize); } switch(encFile)