https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d73b6cedf2482b68afc62…
commit d73b6cedf2482b68afc625aad2fae6451d47763d
Author: Thamatip Chitpong <tangaming123456(a)outlook.com>
AuthorDate: Mon Sep 5 23:21:27 2022 +0700
Commit: GitHub <noreply(a)github.com>
CommitDate: Mon Sep 5 18:21:27 2022 +0200
[NOTEPAD] Improve UTF-8 encoding support and improve status bar (#4649)
- Add write support for UTF-8 without BOM.
- Add "UTF-8 with BOM" encoding to the "Save As" dialog.
- Show line endings and encoding on the status bar (like Notepad in Windows 10).
- Remove ignored WS_EX_STATICEDGE
- Add grip to the status window.
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito(a)reactos.org>
---
base/applications/notepad/dialog.c | 87 +++++++++++++++++++++++++++++++--
base/applications/notepad/dialog.h | 1 +
base/applications/notepad/lang/bg-BG.rc | 1 +
base/applications/notepad/lang/cs-CZ.rc | 1 +
base/applications/notepad/lang/da-DK.rc | 1 +
base/applications/notepad/lang/de-DE.rc | 1 +
base/applications/notepad/lang/el-GR.rc | 1 +
base/applications/notepad/lang/en-US.rc | 1 +
base/applications/notepad/lang/es-ES.rc | 1 +
base/applications/notepad/lang/et-EE.rc | 1 +
base/applications/notepad/lang/eu-ES.rc | 1 +
base/applications/notepad/lang/fi-FI.rc | 1 +
base/applications/notepad/lang/fr-FR.rc | 1 +
base/applications/notepad/lang/he-IL.rc | 1 +
base/applications/notepad/lang/hi-IN.rc | 1 +
base/applications/notepad/lang/hr-HR.rc | 1 +
base/applications/notepad/lang/hu-HU.rc | 1 +
base/applications/notepad/lang/hy-AM.rc | 1 +
base/applications/notepad/lang/id-ID.rc | 1 +
base/applications/notepad/lang/it-IT.rc | 1 +
base/applications/notepad/lang/ja-JP.rc | 1 +
base/applications/notepad/lang/lt-LT.rc | 1 +
base/applications/notepad/lang/ms-MY.rc | 1 +
base/applications/notepad/lang/nl-NL.rc | 1 +
base/applications/notepad/lang/no-NO.rc | 1 +
base/applications/notepad/lang/pl-PL.rc | 1 +
base/applications/notepad/lang/pt-BR.rc | 1 +
base/applications/notepad/lang/pt-PT.rc | 1 +
base/applications/notepad/lang/ro-RO.rc | 1 +
base/applications/notepad/lang/ru-RU.rc | 1 +
base/applications/notepad/lang/sk-SK.rc | 1 +
base/applications/notepad/lang/sl-SI.rc | 1 +
base/applications/notepad/lang/sq-AL.rc | 1 +
base/applications/notepad/lang/sv-SE.rc | 1 +
base/applications/notepad/lang/th-TH.rc | 1 +
base/applications/notepad/lang/tr-TR.rc | 1 +
base/applications/notepad/lang/uk-UA.rc | 1 +
base/applications/notepad/lang/uz-UZ.rc | 1 +
base/applications/notepad/lang/zh-CN.rc | 1 +
base/applications/notepad/lang/zh-HK.rc | 1 +
base/applications/notepad/lang/zh-TW.rc | 1 +
base/applications/notepad/main.c | 9 +++-
base/applications/notepad/main.h | 3 +-
base/applications/notepad/notepad_res.h | 23 ++++-----
base/applications/notepad/text.c | 20 ++++----
45 files changed, 154 insertions(+), 28 deletions(-)
diff --git a/base/applications/notepad/dialog.c b/base/applications/notepad/dialog.c
index 1b10084e99b..6e45d05798e 100644
--- a/base/applications/notepad/dialog.c
+++ b/base/applications/notepad/dialog.c
@@ -33,6 +33,27 @@ static const TCHAR empty_str[] = _T("");
static const TCHAR szDefaultExt[] = _T("txt");
static const TCHAR txt_files[] = _T("*.txt");
+/* Status bar parts index */
+#define SBPART_CURPOS 0
+#define SBPART_EOLN 1
+#define SBPART_ENCODING 2
+
+/* Line endings - string resource ID mapping table */
+static UINT EolnToStrId[] = {
+ STRING_CRLF,
+ STRING_LF,
+ STRING_CR
+};
+
+/* Encoding - string resource ID mapping table */
+static UINT EncToStrId[] = {
+ STRING_ANSI,
+ STRING_UNICODE,
+ STRING_UNICODE_BE,
+ STRING_UTF8,
+ STRING_UTF8_BOM
+};
+
static UINT_PTR CALLBACK DIALOG_PAGESETUP_Hook(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
lParam);
VOID ShowLastError(VOID)
@@ -104,6 +125,45 @@ void UpdateWindowCaption(BOOL clearModifyAlert)
SetWindowText(Globals.hMainWnd, szCaption);
}
+VOID DIALOG_StatusBarAlignParts(VOID)
+{
+ static const int defaultWidths[] = {120, 120, 120};
+ RECT rcStatusBar;
+ int parts[3];
+
+ GetClientRect(Globals.hStatusBar, &rcStatusBar);
+
+ parts[0] = rcStatusBar.right - (defaultWidths[1] + defaultWidths[2]);
+ parts[1] = rcStatusBar.right - defaultWidths[2];
+ parts[2] = -1; // the right edge of the status bar
+
+ parts[0] = max(parts[0], defaultWidths[0]);
+ parts[1] = max(parts[1], defaultWidths[0] + defaultWidths[1]);
+
+ SendMessageW(Globals.hStatusBar, SB_SETPARTS, (WPARAM)ARRAY_SIZE(parts),
(LPARAM)parts);
+}
+
+static VOID DIALOG_StatusBarUpdateLineEndings(VOID)
+{
+ WCHAR szText[128];
+
+ LoadStringW(Globals.hInstance, EolnToStrId[Globals.iEoln], szText,
ARRAY_SIZE(szText));
+
+ SendMessageW(Globals.hStatusBar, SB_SETTEXTW, SBPART_EOLN, (LPARAM)szText);
+}
+
+static VOID DIALOG_StatusBarUpdateEncoding(VOID)
+{
+ WCHAR szText[128] = L"";
+
+ if (Globals.encFile != ENCODING_AUTO)
+ {
+ LoadStringW(Globals.hInstance, EncToStrId[Globals.encFile], szText,
ARRAY_SIZE(szText));
+ }
+
+ SendMessageW(Globals.hStatusBar, SB_SETTEXTW, SBPART_ENCODING, (LPARAM)szText);
+}
+
int DIALOG_StringMsgBox(HWND hParent, int formatId, LPCTSTR szString, DWORD dwFlags)
{
TCHAR szMessage[MAX_STRING_LEN];
@@ -403,6 +463,11 @@ VOID DoOpenFile(LPCTSTR szFileName)
SetFileName(szFileName);
UpdateWindowCaption(TRUE);
NOTEPAD_EnableSearchMenu();
+
+ /* Update line endings and encoding on the status bar */
+ DIALOG_StatusBarUpdateLineEndings();
+ DIALOG_StatusBarUpdateEncoding();
+
done:
if (hFile != INVALID_HANDLE_VALUE)
CloseHandle(hFile);
@@ -497,6 +562,9 @@ DIALOG_FileSaveAs_Hook(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
lParam)
LoadString(Globals.hInstance, STRING_UTF8, szText, ARRAY_SIZE(szText));
SendMessage(hCombo, CB_ADDSTRING, 0, (LPARAM) szText);
+ LoadString(Globals.hInstance, STRING_UTF8_BOM, szText, ARRAY_SIZE(szText));
+ SendMessage(hCombo, CB_ADDSTRING, 0, (LPARAM) szText);
+
SendMessage(hCombo, CB_SETCURSEL, Globals.encFile, 0);
hCombo = GetDlgItem(hDlg, ID_EOLN);
@@ -562,6 +630,11 @@ BOOL DIALOG_FileSaveAs(VOID)
if (DoSaveFile())
{
UpdateWindowCaption(TRUE);
+
+ /* Update line endings and encoding on the status bar */
+ DIALOG_StatusBarUpdateLineEndings();
+ DIALOG_StatusBarUpdateEncoding();
+
return TRUE;
}
else
@@ -852,7 +925,7 @@ VOID DoCreateStatusBar(VOID)
if (Globals.hStatusBar == NULL)
{
/* Try to create the status bar */
- Globals.hStatusBar = CreateStatusWindow(WS_CHILD | WS_VISIBLE |
WS_EX_STATICEDGE,
+ Globals.hStatusBar = CreateStatusWindow(WS_CHILD | WS_VISIBLE | CCS_BOTTOM |
SBARS_SIZEGRIP,
NULL,
Globals.hMainWnd,
CMD_STATUSBAR_WND_ID);
@@ -865,9 +938,6 @@ VOID DoCreateStatusBar(VOID)
/* Load the string for formatting column/row text output */
LoadString(Globals.hInstance, STRING_LINE_COLUMN, Globals.szStatusBarLineCol,
MAX_PATH - 1);
-
- /* Set the status bar for single-text output */
- SendMessage(Globals.hStatusBar, SB_SIMPLE, (WPARAM)TRUE, (LPARAM)0);
}
/* Set status bar visiblity according to the settings. */
@@ -916,8 +986,15 @@ VOID DoCreateStatusBar(VOID)
TRUE);
}
+ /* Set the status bar for multiple-text output */
+ DIALOG_StatusBarAlignParts();
+
/* Update content with current row/column text */
DIALOG_StatusBarUpdateCaretPos();
+
+ /* Update line endings and encoding on the status bar */
+ DIALOG_StatusBarUpdateLineEndings();
+ DIALOG_StatusBarUpdateEncoding();
}
VOID DoCreateEditWindow(VOID)
@@ -1195,7 +1272,7 @@ VOID DIALOG_StatusBarUpdateCaretPos(VOID)
col = dwStart - SendMessage(Globals.hEdit, EM_LINEINDEX, (WPARAM)line, 0);
_stprintf(buff, Globals.szStatusBarLineCol, line + 1, col + 1);
- SendMessage(Globals.hStatusBar, SB_SETTEXT, SB_SIMPLEID, (LPARAM)buff);
+ SendMessage(Globals.hStatusBar, SB_SETTEXT, SBPART_CURPOS, (LPARAM)buff);
}
VOID DIALOG_ViewStatusBar(VOID)
diff --git a/base/applications/notepad/dialog.h b/base/applications/notepad/dialog.h
index 98104dcc6e5..3d5572cfad7 100644
--- a/base/applications/notepad/dialog.h
+++ b/base/applications/notepad/dialog.h
@@ -46,6 +46,7 @@ VOID DIALOG_GoTo(VOID);
VOID DIALOG_SelectFont(VOID);
VOID DIALOG_ViewStatusBar(VOID);
+VOID DIALOG_StatusBarAlignParts(VOID);
VOID DIALOG_StatusBarUpdateCaretPos(VOID);
VOID DIALOG_HelpContents(VOID);
diff --git a/base/applications/notepad/lang/bg-BG.rc
b/base/applications/notepad/lang/bg-BG.rc
index d17e24ab300..5b900b511f3 100644
--- a/base/applications/notepad/lang/bg-BG.rc
+++ b/base/applications/notepad/lang/bg-BG.rc
@@ -160,6 +160,7 @@ BEGIN
STRING_UNICODE "Уникод"
STRING_UNICODE_BE "Уникод (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Уьиндоуьс (CR + LF)"
STRING_LF "Юникс (LF)"
STRING_CR "Мак (CR)"
diff --git a/base/applications/notepad/lang/cs-CZ.rc
b/base/applications/notepad/lang/cs-CZ.rc
index 1338063e8e9..36fd1d28b52 100644
--- a/base/applications/notepad/lang/cs-CZ.rc
+++ b/base/applications/notepad/lang/cs-CZ.rc
@@ -161,6 +161,7 @@ paměti."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/da-DK.rc
b/base/applications/notepad/lang/da-DK.rc
index f24b93562cb..8ab2d8f4c07 100644
--- a/base/applications/notepad/lang/da-DK.rc
+++ b/base/applications/notepad/lang/da-DK.rc
@@ -161,6 +161,7 @@ hukommelse, og prøv så igen."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/de-DE.rc
b/base/applications/notepad/lang/de-DE.rc
index 12304456c6f..c1c491f3e03 100644
--- a/base/applications/notepad/lang/de-DE.rc
+++ b/base/applications/notepad/lang/de-DE.rc
@@ -162,6 +162,7 @@ um diese Funktion\nabzuschließen. Beenden Sie eine oder mehrere \
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (Big-Endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/el-GR.rc
b/base/applications/notepad/lang/el-GR.rc
index c27cb97636a..32e23f3f00a 100644
--- a/base/applications/notepad/lang/el-GR.rc
+++ b/base/applications/notepad/lang/el-GR.rc
@@ -161,6 +161,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/en-US.rc
b/base/applications/notepad/lang/en-US.rc
index 6f284bdbf21..242fb18c426 100644
--- a/base/applications/notepad/lang/en-US.rc
+++ b/base/applications/notepad/lang/en-US.rc
@@ -160,6 +160,7 @@ task.\nClose one or more applications to increase the amount of\nfree
memory."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/es-ES.rc
b/base/applications/notepad/lang/es-ES.rc
index a22083ca956..3700fe740cd 100644
--- a/base/applications/notepad/lang/es-ES.rc
+++ b/base/applications/notepad/lang/es-ES.rc
@@ -163,6 +163,7 @@ aumentar la cantidad\nde memoria libre."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/et-EE.rc
b/base/applications/notepad/lang/et-EE.rc
index 3df808c417e..f5b3afa982b 100644
--- a/base/applications/notepad/lang/et-EE.rc
+++ b/base/applications/notepad/lang/et-EE.rc
@@ -168,6 +168,7 @@ käsu lõpetamiseks.\nSulge üks või enam rakendust, et suurendada\nvaba
mälu
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/eu-ES.rc
b/base/applications/notepad/lang/eu-ES.rc
index 0923ac47c4d..bb082e9fbb6 100644
--- a/base/applications/notepad/lang/eu-ES.rc
+++ b/base/applications/notepad/lang/eu-ES.rc
@@ -161,6 +161,7 @@ memoria librearen\nkopurua handitzeko."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/fi-FI.rc
b/base/applications/notepad/lang/fi-FI.rc
index a12be32822e..d13c7ce9337 100644
--- a/base/applications/notepad/lang/fi-FI.rc
+++ b/base/applications/notepad/lang/fi-FI.rc
@@ -161,6 +161,7 @@ muistia."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/fr-FR.rc
b/base/applications/notepad/lang/fr-FR.rc
index 29bac1aa9c9..6fba3e8d9c0 100644
--- a/base/applications/notepad/lang/fr-FR.rc
+++ b/base/applications/notepad/lang/fr-FR.rc
@@ -161,6 +161,7 @@ de la mémoire."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/he-IL.rc
b/base/applications/notepad/lang/he-IL.rc
index 63c3a2c2f46..f4929cf8d5f 100644
--- a/base/applications/notepad/lang/he-IL.rc
+++ b/base/applications/notepad/lang/he-IL.rc
@@ -163,6 +163,7 @@ task.\nClose one or more applications to increase the amount of\nfree
memory."
STRING_UNICODE "יוניקוד"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "חלונות (CR + LF)"
STRING_LF "יוניקס (LF)"
STRING_CR "מקינטוש (CR)"
diff --git a/base/applications/notepad/lang/hi-IN.rc
b/base/applications/notepad/lang/hi-IN.rc
index abb0c2810fd..24ecb4b0094 100644
--- a/base/applications/notepad/lang/hi-IN.rc
+++ b/base/applications/notepad/lang/hi-IN.rc
@@ -167,6 +167,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/hr-HR.rc
b/base/applications/notepad/lang/hr-HR.rc
index fa683dd091d..92eeafd4af5 100644
--- a/base/applications/notepad/lang/hr-HR.rc
+++ b/base/applications/notepad/lang/hr-HR.rc
@@ -167,6 +167,7 @@ zadatak.\nZatvorite jednu ili više aplikacija da povećate\nslobodnu
memoriju."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/hu-HU.rc
b/base/applications/notepad/lang/hu-HU.rc
index 48d1086851f..e23208079ff 100644
--- a/base/applications/notepad/lang/hu-HU.rc
+++ b/base/applications/notepad/lang/hu-HU.rc
@@ -161,6 +161,7 @@ Szeretné menteni a változásokat?"
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/hy-AM.rc
b/base/applications/notepad/lang/hy-AM.rc
index 7c82d538f26..d14af947fd7 100644
--- a/base/applications/notepad/lang/hy-AM.rc
+++ b/base/applications/notepad/lang/hy-AM.rc
@@ -160,6 +160,7 @@ Would you like to save the changes ?"
STRING_UNICODE "Յունիկոդ"
STRING_UNICODE_BE "Յունիկոդ (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Պատւոհաններ (CR + LF)"
STRING_LF "Յունիքս (LF)"
STRING_CR "Մակինտոշ (CR)"
diff --git a/base/applications/notepad/lang/id-ID.rc
b/base/applications/notepad/lang/id-ID.rc
index 32f002e078a..594ddac068d 100644
--- a/base/applications/notepad/lang/id-ID.rc
+++ b/base/applications/notepad/lang/id-ID.rc
@@ -161,6 +161,7 @@ bebas."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/it-IT.rc
b/base/applications/notepad/lang/it-IT.rc
index b239f11b7e8..d06b07dceb9 100644
--- a/base/applications/notepad/lang/it-IT.rc
+++ b/base/applications/notepad/lang/it-IT.rc
@@ -161,6 +161,7 @@ di memoria libera."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/ja-JP.rc
b/base/applications/notepad/lang/ja-JP.rc
index ad1359f9aca..5b43cd0352e 100644
--- a/base/applications/notepad/lang/ja-JP.rc
+++ b/base/applications/notepad/lang/ja-JP.rc
@@ -161,6 +161,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/lt-LT.rc
b/base/applications/notepad/lang/lt-LT.rc
index 494161c1eb3..040a66a6755 100644
--- a/base/applications/notepad/lang/lt-LT.rc
+++ b/base/applications/notepad/lang/lt-LT.rc
@@ -160,6 +160,7 @@ Ar norite išsaugoti pakeitimus?"
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/ms-MY.rc
b/base/applications/notepad/lang/ms-MY.rc
index 26787eeb4ef..9674fdef67d 100644
--- a/base/applications/notepad/lang/ms-MY.rc
+++ b/base/applications/notepad/lang/ms-MY.rc
@@ -162,6 +162,7 @@ tugas ini.\nTutup satu atau lebih aplikasi untuk menambah
jumlah\ningatan kosong
STRING_UNICODE "Unikod"
STRING_UNICODE_BE "Unikod (endian besar)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/nl-NL.rc
b/base/applications/notepad/lang/nl-NL.rc
index d6c30f26403..a0ffe227096 100644
--- a/base/applications/notepad/lang/nl-NL.rc
+++ b/base/applications/notepad/lang/nl-NL.rc
@@ -160,6 +160,7 @@ Wilt u de wijzigingen opslaan?"
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/no-NO.rc
b/base/applications/notepad/lang/no-NO.rc
index ae83e8a270c..b58fdf6b475 100644
--- a/base/applications/notepad/lang/no-NO.rc
+++ b/base/applications/notepad/lang/no-NO.rc
@@ -161,6 +161,7 @@ minne."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/pl-PL.rc
b/base/applications/notepad/lang/pl-PL.rc
index 70c29377898..708ead6edfb 100644
--- a/base/applications/notepad/lang/pl-PL.rc
+++ b/base/applications/notepad/lang/pl-PL.rc
@@ -155,6 +155,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/pt-BR.rc
b/base/applications/notepad/lang/pt-BR.rc
index 1ba2f1788b5..08f8714b570 100644
--- a/base/applications/notepad/lang/pt-BR.rc
+++ b/base/applications/notepad/lang/pt-BR.rc
@@ -160,6 +160,7 @@ tarefa.\nFeche uma ou mais aplicações para aumentar a quantidade de
memória l
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/pt-PT.rc
b/base/applications/notepad/lang/pt-PT.rc
index 5e597417040..857c587bcb2 100644
--- a/base/applications/notepad/lang/pt-PT.rc
+++ b/base/applications/notepad/lang/pt-PT.rc
@@ -160,6 +160,7 @@ tarefa.\nFeche uma ou mais aplicações para aumentar a quantidade de
memória l
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/ro-RO.rc
b/base/applications/notepad/lang/ro-RO.rc
index a032dc0d67e..cfe4487fe18 100644
--- a/base/applications/notepad/lang/ro-RO.rc
+++ b/base/applications/notepad/lang/ro-RO.rc
@@ -165,6 +165,7 @@ Păstrați modificările aduse?"
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/ru-RU.rc
b/base/applications/notepad/lang/ru-RU.rc
index 4ebb9037727..c6c729b5fc9 100644
--- a/base/applications/notepad/lang/ru-RU.rc
+++ b/base/applications/notepad/lang/ru-RU.rc
@@ -160,6 +160,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (Big Endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Macintosh (CR)"
diff --git a/base/applications/notepad/lang/sk-SK.rc
b/base/applications/notepad/lang/sk-SK.rc
index 730ac82e4b9..7a272f3fb41 100644
--- a/base/applications/notepad/lang/sk-SK.rc
+++ b/base/applications/notepad/lang/sk-SK.rc
@@ -168,6 +168,7 @@ alebo viac aplikácií, aby sa uvoľnila pamäť a skúste to znova."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (veľký indián)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/sl-SI.rc
b/base/applications/notepad/lang/sl-SI.rc
index a694e53c068..5dacaf8b8a9 100644
--- a/base/applications/notepad/lang/sl-SI.rc
+++ b/base/applications/notepad/lang/sl-SI.rc
@@ -160,6 +160,7 @@ operacijo.\nÈe ga želite sprostiti, konèajte enega ali veè programov
in posk
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/sq-AL.rc
b/base/applications/notepad/lang/sq-AL.rc
index 542b5b93936..82c55454577 100644
--- a/base/applications/notepad/lang/sq-AL.rc
+++ b/base/applications/notepad/lang/sq-AL.rc
@@ -164,6 +164,7 @@ detyrë.\nMbyll nje ose me shume programe te rrisesh shumën
e\nmemories."
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/sv-SE.rc
b/base/applications/notepad/lang/sv-SE.rc
index 6536306b1e7..49160f0fc62 100644
--- a/base/applications/notepad/lang/sv-SE.rc
+++ b/base/applications/notepad/lang/sv-SE.rc
@@ -160,6 +160,7 @@ den här åtgärden.\nAvsluta ett eller flera program för att frigöra mer
minn
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/th-TH.rc
b/base/applications/notepad/lang/th-TH.rc
index ed6277314a8..ac24b8d2d5e 100644
--- a/base/applications/notepad/lang/th-TH.rc
+++ b/base/applications/notepad/lang/th-TH.rc
@@ -155,6 +155,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 (มี BOM)"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/tr-TR.rc
b/base/applications/notepad/lang/tr-TR.rc
index 391b0e70d83..5a862b887c0 100644
--- a/base/applications/notepad/lang/tr-TR.rc
+++ b/base/applications/notepad/lang/tr-TR.rc
@@ -158,6 +158,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (Büyük Sonlu)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/uk-UA.rc
b/base/applications/notepad/lang/uk-UA.rc
index 8c39417b9ec..a46758205ab 100644
--- a/base/applications/notepad/lang/uk-UA.rc
+++ b/base/applications/notepad/lang/uk-UA.rc
@@ -160,6 +160,7 @@ BEGIN
STRING_UNICODE "Юнікод"
STRING_UNICODE_BE "Юнікод (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/uz-UZ.rc
b/base/applications/notepad/lang/uz-UZ.rc
index e6857a5f546..abc5f6088ce 100644
--- a/base/applications/notepad/lang/uz-UZ.rc
+++ b/base/applications/notepad/lang/uz-UZ.rc
@@ -160,6 +160,7 @@ O‘zgarishlarni saqlashni istaysizmi?"
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Macintosh (CR)"
diff --git a/base/applications/notepad/lang/zh-CN.rc
b/base/applications/notepad/lang/zh-CN.rc
index de8877d9f17..5b02a2fd733 100644
--- a/base/applications/notepad/lang/zh-CN.rc
+++ b/base/applications/notepad/lang/zh-CN.rc
@@ -168,6 +168,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode(大端)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows(CR + LF)"
STRING_LF "Unix(LF)"
STRING_CR "Mac(CR)"
diff --git a/base/applications/notepad/lang/zh-HK.rc
b/base/applications/notepad/lang/zh-HK.rc
index 6a47644ff58..c5e455fa877 100644
--- a/base/applications/notepad/lang/zh-HK.rc
+++ b/base/applications/notepad/lang/zh-HK.rc
@@ -168,6 +168,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode(大端序)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/lang/zh-TW.rc
b/base/applications/notepad/lang/zh-TW.rc
index db550b17012..2cae1d75fd9 100644
--- a/base/applications/notepad/lang/zh-TW.rc
+++ b/base/applications/notepad/lang/zh-TW.rc
@@ -168,6 +168,7 @@ BEGIN
STRING_UNICODE "Unicode"
STRING_UNICODE_BE "Unicode (big endian)"
STRING_UTF8 "UTF-8"
+ STRING_UTF8_BOM "UTF-8 with BOM"
STRING_CRLF "Windows (CR + LF)"
STRING_LF "Unix (LF)"
STRING_CR "Mac (CR)"
diff --git a/base/applications/notepad/main.c b/base/applications/notepad/main.c
index 3fed529fb3e..42bf2493911 100644
--- a/base/applications/notepad/main.c
+++ b/base/applications/notepad/main.c
@@ -427,8 +427,13 @@ NOTEPAD_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
LOWORD(wParam),
SWP_NOZORDER);
- if (hdwp != NULL)
- EndDeferWindowPos(hdwp);
+ if (hdwp == NULL)
+ break;
+
+ EndDeferWindowPos(hdwp);
+
+ /* Align status bar parts, only if the status bar resize operation succeeds
*/
+ DIALOG_StatusBarAlignParts();
}
else
SetWindowPos(Globals.hEdit,
diff --git a/base/applications/notepad/main.h b/base/applications/notepad/main.h
index 349be218118..ce7fc850877 100644
--- a/base/applications/notepad/main.h
+++ b/base/applications/notepad/main.h
@@ -40,7 +40,8 @@ typedef enum
ENCODING_ANSI = 0,
ENCODING_UTF16LE = 1,
ENCODING_UTF16BE = 2,
- ENCODING_UTF8 = 3
+ ENCODING_UTF8 = 3,
+ ENCODING_UTF8BOM = 4
} ENCODING;
// #define MIN_ENCODING 0
diff --git a/base/applications/notepad/notepad_res.h
b/base/applications/notepad/notepad_res.h
index b53ff22cb57..7b463383dc8 100644
--- a/base/applications/notepad/notepad_res.h
+++ b/base/applications/notepad/notepad_res.h
@@ -88,17 +88,18 @@
#define STRING_OUT_OF_MEMORY 0x17C
#define STRING_CANNOTFIND 0x17D
-#define STRING_ANSI 0x17E
-#define STRING_UNICODE 0x17F
-#define STRING_UNICODE_BE 0x180
-#define STRING_UTF8 0x181
-
-#define STRING_CRLF 0x182
-#define STRING_LF 0x183
-#define STRING_CR 0x184
-
-#define STRING_LINE_COLUMN 0x186
-#define STRING_PRINTERROR 0x187
+#define STRING_ANSI 0x180
+#define STRING_UNICODE 0x181
+#define STRING_UNICODE_BE 0x182
+#define STRING_UTF8 0x183
+#define STRING_UTF8_BOM 0x184
+
+#define STRING_CRLF 0x185
+#define STRING_LF 0x186
+#define STRING_CR 0x187
+
+#define STRING_LINE_COLUMN 0x188
+#define STRING_PRINTERROR 0x189
#define STRING_TEXT_DOCUMENT 0x200
diff --git a/base/applications/notepad/text.c b/base/applications/notepad/text.c
index 0afdde89b6c..6a83a89d64f 100644
--- a/base/applications/notepad/text.c
+++ b/base/applications/notepad/text.c
@@ -140,7 +140,7 @@ ReadText(HANDLE hFile, LPWSTR *ppszText, DWORD *pdwTextLen, ENCODING
*pencFile,
}
else if ((dwSize >= 3) && (pBytes[0] == 0xEF) && (pBytes[1] ==
0xBB) && (pBytes[2] == 0xBF))
{
- encFile = ENCODING_UTF8;
+ encFile = ENCODING_UTF8BOM;
dwPos += 3;
}
else
@@ -166,10 +166,11 @@ ReadText(HANDLE hFile, LPWSTR *ppszText, DWORD *pdwTextLen, ENCODING
*pencFile,
case ENCODING_ANSI:
case ENCODING_UTF8:
- if (encFile == ENCODING_ANSI)
- iCodePage = CP_ACP;
- else if (encFile == ENCODING_UTF8)
+ case ENCODING_UTF8BOM:
+ if (encFile == ENCODING_UTF8 || encFile == ENCODING_UTF8BOM)
iCodePage = CP_UTF8;
+ else
+ iCodePage = CP_ACP;
if ((dwSize - dwPos) > 0)
{
@@ -312,10 +313,11 @@ static BOOL WriteEncodedText(HANDLE hFile, LPCWSTR pszText, DWORD
dwTextLen, ENC
case ENCODING_ANSI:
case ENCODING_UTF8:
- if (encFile == ENCODING_ANSI)
- iCodePage = CP_ACP;
- else if (encFile == ENCODING_UTF8)
+ case ENCODING_UTF8BOM:
+ if (encFile == ENCODING_UTF8 || encFile == ENCODING_UTF8BOM)
iCodePage = CP_UTF8;
+ else
+ iCodePage = CP_ACP;
iRequiredBytes = WideCharToMultiByte(iCodePage, 0, &pszText[dwPos],
dwTextLen - dwPos, NULL, 0, NULL, NULL);
if (iRequiredBytes <= 0)
@@ -371,8 +373,8 @@ BOOL WriteText(HANDLE hFile, LPCWSTR pszText, DWORD dwTextLen,
ENCODING encFile,
LPCWSTR pszLF = L"\n";
DWORD dwPos, dwNext;
- /* Write the proper byte order marks if not ANSI */
- if (encFile != ENCODING_ANSI)
+ /* Write the proper byte order marks if not ANSI or UTF-8 without BOM */
+ if (encFile != ENCODING_ANSI && encFile != ENCODING_UTF8)
{
wcBom = 0xFEFF;
if (!WriteEncodedText(hFile, &wcBom, 1, encFile))