[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
This commit is contained in:
Katayama Hirofumi MZ 2023-02-20 21:59:16 +09:00 committed by GitHub
parent b2cac5cd6c
commit f7f2ed201a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 26 deletions

View file

@ -167,7 +167,6 @@ static VOID DIALOG_StatusBarUpdateEncoding(VOID)
static VOID DIALOG_StatusBarUpdateAll(VOID) static VOID DIALOG_StatusBarUpdateAll(VOID)
{ {
DIALOG_StatusBarAlignParts();
DIALOG_StatusBarUpdateCaretPos(); DIALOG_StatusBarUpdateCaretPos();
DIALOG_StatusBarUpdateLineEndings(); DIALOG_StatusBarUpdateLineEndings();
DIALOG_StatusBarUpdateEncoding(); DIALOG_StatusBarUpdateEncoding();
@ -405,8 +404,6 @@ BOOL DoCloseFile(VOID)
break; break;
case IDCANCEL: case IDCANCEL:
return FALSE;
default: default:
return FALSE; return FALSE;
} }
@ -463,24 +460,26 @@ VOID DoOpenFile(LPCTSTR szFileName)
SetFileName(szFileName); SetFileName(szFileName);
UpdateWindowCaption(TRUE); UpdateWindowCaption(TRUE);
NOTEPAD_EnableSearchMenu(); NOTEPAD_EnableSearchMenu();
DIALOG_StatusBarUpdateAll();
done: done:
if (hFile != INVALID_HANDLE_VALUE) if (hFile != INVALID_HANDLE_VALUE)
CloseHandle(hFile); CloseHandle(hFile);
DIALOG_StatusBarUpdateAll();
} }
VOID DIALOG_FileNew(VOID) VOID DIALOG_FileNew(VOID)
{ {
/* Close any files and prompt to save changes */ /* Close any files and prompt to save changes */
if (DoCloseFile()) { if (!DoCloseFile())
SetWindowText(Globals.hEdit, empty_str); return;
SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0);
SetFocus(Globals.hEdit); SetWindowText(Globals.hEdit, NULL);
NOTEPAD_EnableSearchMenu(); SendMessage(Globals.hEdit, EM_EMPTYUNDOBUFFER, 0, 0);
DIALOG_StatusBarUpdateAll(); Globals.iEoln = EOLN_CRLF;
} Globals.encFile = ENCODING_DEFAULT;
NOTEPAD_EnableSearchMenu();
DIALOG_StatusBarUpdateAll();
} }
VOID DIALOG_FileNewWindow(VOID) VOID DIALOG_FileNewWindow(VOID)
@ -930,7 +929,7 @@ VOID DoShowHideStatusBar(VOID)
} }
/* Update layout of controls */ /* Update layout of controls */
PostMessageW(Globals.hMainWnd, WM_SIZE, 0, 0); SendMessageW(Globals.hMainWnd, WM_SIZE, 0, 0);
if (Globals.hStatusBar == NULL) if (Globals.hStatusBar == NULL)
return; return;

View file

@ -580,6 +580,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE prev, LPTSTR cmdline, int sh
ZeroMemory(&Globals, sizeof(Globals)); ZeroMemory(&Globals, sizeof(Globals));
Globals.hInstance = hInstance; Globals.hInstance = hInstance;
Globals.encFile = ENCODING_DEFAULT;
NOTEPAD_LoadSettingsFromRegistry(); NOTEPAD_LoadSettingsFromRegistry();
ZeroMemory(&wndclass, sizeof(wndclass)); ZeroMemory(&wndclass, sizeof(wndclass));

View file

@ -44,8 +44,7 @@ typedef enum
ENCODING_UTF8BOM = 4 ENCODING_UTF8BOM = 4
} ENCODING; } ENCODING;
// #define MIN_ENCODING 0 #define ENCODING_DEFAULT ENCODING_UTF8 // ENCODING_ANSI
// #define MAX_ENCODING 3
typedef enum typedef enum
{ {

View file

@ -24,25 +24,25 @@
#include "notepad.h" #include "notepad.h"
#include <assert.h> #include <assert.h>
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) while (dwSize-- > 0)
{ {
if (*pBytes <= 0) if (*pch <= 0)
return FALSE; return FALSE;
++pBytes; ++pch;
} }
return TRUE; 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; INT flags = IS_TEXT_UNICODE_STATISTICS | IS_TEXT_UNICODE_REVERSE_STATISTICS;
if (dwSize <= 1 || IsTextNonZeroASCII(pBytes, dwSize)) if (IsTextNonZeroASCII(pBytes, dwSize))
return ENCODING_ANSI; return ENCODING_DEFAULT;
if (IsTextUnicode(pBytes, dwSize, &flags)) if (IsTextUnicode(pBytes, dwSize, &flags))
return ENCODING_UTF16LE; return ENCODING_UTF16LE;
@ -51,7 +51,7 @@ ENCODING AnalyzeEncoding(const char *pBytes, DWORD dwSize)
return ENCODING_UTF16BE; return ENCODING_UTF16BE;
/* is it UTF-8? */ /* 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_UTF8;
return ENCODING_ANSI; return ENCODING_ANSI;
@ -170,7 +170,7 @@ ReadText(HANDLE hFile, HLOCAL *phLocal, ENCODING *pencFile, EOLN *piEoln)
DWORD dwSize, dwPos; DWORD dwSize, dwPos;
SIZE_T i, cchText, cbContent; SIZE_T i, cchText, cbContent;
BOOL bSuccess = FALSE; BOOL bSuccess = FALSE;
ENCODING encFile = ENCODING_ANSI; ENCODING encFile;
UINT iCodePage; UINT iCodePage;
HANDLE hMapping = INVALID_HANDLE_VALUE; HANDLE hMapping = INVALID_HANDLE_VALUE;
HLOCAL hNewLocal; HLOCAL hNewLocal;
@ -191,7 +191,7 @@ ReadText(HANDLE hFile, HLOCAL *phLocal, ENCODING *pencFile, EOLN *piEoln)
*phLocal = hNewLocal; *phLocal = hNewLocal;
*piEoln = EOLN_CRLF; *piEoln = EOLN_CRLF;
*pencFile = ENCODING_UTF8; *pencFile = ENCODING_DEFAULT;
return TRUE; return TRUE;
} }
@ -222,7 +222,7 @@ ReadText(HANDLE hFile, HLOCAL *phLocal, ENCODING *pencFile, EOLN *piEoln)
} }
else else
{ {
encFile = AnalyzeEncoding((LPCSTR)pBytes, dwSize); encFile = AnalyzeEncoding(pBytes, dwSize);
} }
switch(encFile) switch(encFile)