diff --git a/Build/Changes.txt b/Build/Changes.txt
index 6a5bef4ff..f2aa230a7 100644
--- a/Build/Changes.txt
+++ b/Build/Changes.txt
@@ -33,14 +33,14 @@ UCD - (UCD)ARDET is an Encoding Detector Library
========================================================
-Current BETA/RC Version 5.21.525.(build_#) (2021-05-25)
+Current BETA/RC Version 5.21.527.(build_#) (2021-05-27)
========================================================
--------------------------------------------------------
NEW:
--------------------------------------------------------
[.###.#]- .
-[.525.1]- Add "Julia" lexer (new in Lexilla).
+[.525.1]- Add "Julia" lexer (new in Lexilla) (LEX).
[.506.1]- Base64 Encoding/Decoding.
[.428.1]- Custom ChooseColor resource definition.
[.426.1]- Prepare Application Manifest for to grant Identity for non-package desktop apps.
@@ -72,7 +72,9 @@ NEW:
CHANGES:
--------------------------------------------------------
[.###.#]- .
-[.525.1]- Update Lexilla Lib (bug fixes for Lexer: Markdown, Cmd/Batch).
+[.526.1]- Batch-Lexer + patching Markdown-Lexer (eolfilled header lines) (LEX).
+[.526.1]- Scheme-Dlg: dynamic (alloc) Style-Backup handling.
+[.525.1]- Update Lexilla Lib (bug fixes for Lexer: Markdown, Cmd/Batch) (LEX).
[.515.1]- "grepWinNP3" based on current grepWin ver (boost v1.76 , upd: sktoolslib).
[.515.1]- Add some more coding fonts to prefer over Consolas (if installed).
[.515.1]- Linker: hardware-enforced stack-protection.
@@ -118,6 +120,10 @@ CHANGES:
[.302.1]- Prevent Path to URL conversion, if Hyperlink RegEx pattern does not match.
[.301.1]- Enable Dark Mode feature for Win10 v21H1 insider beta.
[.301.1]- EOL-Mode: status-bar double-click : inverted cyclic change rotation CRLF -> LF -> CR.
+
+--------------------------------------------------------
+CHANGES Versions in Tools or Libraries:
+--------------------------------------------------------
[.515.1]- Update grepWinNP3 (GRE) version 2.1.7.37 (2021-05.14).
[.525.1]- Update Oniguruma Regex (ONI) engine version 7.0.0 (2021-05-17).
[.429.1]- Update Lexilla Library (LEX) version 5.0.2 (2021-04-23).
@@ -127,6 +133,8 @@ CHANGES:
FIXES:
--------------------------------------------------------
[.###.#]- .
+[.527.1]- Correct handling of F/R dialog pattern combo-box dropdown list.
+[.527.1]- Minor fixes Markdown-Lexer.
[.513.1]- Go to doc begin after global indentation change.
[.513.1]- Minor enhancements for selection scroll to view.
[.513.1]- Optimized handling of multi-step undo/redo notifications.
diff --git a/Versions/day.txt b/Versions/day.txt
index 642ea6f49..678dee3e1 100644
--- a/Versions/day.txt
+++ b/Versions/day.txt
@@ -1 +1 @@
-525
+527
diff --git a/language/np3_hu_hu/dialogs_hu_hu.rc b/language/np3_hu_hu/dialogs_hu_hu.rc
index 02ae08567..dc992c1f1 100644
--- a/language/np3_hu_hu/dialogs_hu_hu.rc
+++ b/language/np3_hu_hu/dialogs_hu_hu.rc
@@ -697,53 +697,53 @@ END
//
IDD_MUI_SYSFONT_WITHLINK DIALOGEX 13, 54, 243, 234
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Font"
+CAPTION "Betűtípus"
FONT 9, "Segoe UI", 0, 0, 0x0
BEGIN
- LTEXT "&Font:", stc1, 7, 7, 98, 9
+ LTEXT "&Betűtípus:", stc1, 7, 7, 98, 9
COMBOBOX cmb1, 7, 16, 98, 76,
CBS_SIMPLE | CBS_AUTOHSCROLL | CBS_DISABLENOSCROLL |
CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
CBS_OWNERDRAWFIXED
- LTEXT "Font st&yle:", stc2, 114, 7, 74, 9
+ LTEXT "Betű &stílusa:", stc2, 114, 7, 74, 9
COMBOBOX cmb2, 114, 16, 74, 76,
CBS_SIMPLE | CBS_AUTOHSCROLL | CBS_DISABLENOSCROLL |
WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
CBS_OWNERDRAWFIXED
- LTEXT "&Size:", stc3, 198, 7, 36, 9
+ LTEXT "&Méret:", stc3, 198, 7, 36, 9
COMBOBOX cmb3, 198, 16, 36, 76,
CBS_SIMPLE | CBS_AUTOHSCROLL | CBS_DISABLENOSCROLL |
CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_HASSTRINGS |
CBS_OWNERDRAWFIXED
- GROUPBOX "Effects", grp1, 7, 97, 98, 76, WS_GROUP
- AUTOCHECKBOX "Stri&keout", chx1, 13, 111, 90, 10, WS_TABSTOP
- AUTOCHECKBOX "&Underline", chx2, 13, 127, 90, 10
+ GROUPBOX "Effektusok", grp1, 7, 97, 98, 76, WS_GROUP
+ AUTOCHECKBOX "Át&húzott", chx1, 13, 111, 90, 10, WS_TABSTOP
+ AUTOCHECKBOX "&Aláhúzom", chx2, 13, 127, 90, 10
- LTEXT "&Color:", stc4, 13, 144, 89, 9
+ LTEXT "&Szín:", stc4, 13, 144, 89, 9
COMBOBOX cmb4, 13, 155, 85, 100,
CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL |
CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP
- GROUPBOX "Sample", grp2, 114, 97, 120, 43, WS_GROUP
+ GROUPBOX "Minta", grp2, 114, 97, 120, 43, WS_GROUP
CTEXT "AaBbYyZz", stc5, 116, 106, 117, 33,
SS_NOPREFIX | NOT WS_VISIBLE
LTEXT "", stc6, 7, 178, 227, 20, SS_NOPREFIX | NOT WS_GROUP
- LTEXT "Sc&ript:", stc7, 114, 145, 118, 9
+ LTEXT "Í&rott:", stc7, 114, 145, 118, 9
COMBOBOX cmb5, 114, 155, 120, 30, CBS_DROPDOWNLIST |
CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_HASSTRINGS |
WS_BORDER | WS_VSCROLL | WS_TABSTOP
- CONTROL "Show more fonts", IDC_MANAGE_LINK, "SysLink",
+ CONTROL "További betűtípusok", IDC_MANAGE_LINK, "SysLink",
WS_TABSTOP, 7, 199, 227, 9
DEFPUSHBUTTON "OK", IDOK, 141, 215, 45, 14, WS_GROUP
- PUSHBUTTON "Cancel", IDCANCEL, 190, 215, 45, 14, WS_GROUP
- PUSHBUTTON "&Apply", psh3, 92, 215, 45, 14, WS_GROUP
- PUSHBUTTON "&Help", pshHelp, 43, 215, 45, 14, WS_GROUP
+ PUSHBUTTON "Mégsem", IDCANCEL, 190, 215, 45, 14, WS_GROUP
+ PUSHBUTTON "&Alkalmaz", psh3, 92, 215, 45, 14, WS_GROUP
+ PUSHBUTTON "&Súgó", pshHelp, 43, 215, 45, 14, WS_GROUP
END
@@ -753,25 +753,25 @@ END
IDD_MUI_SYSCOLOR_DLG DIALOGEX LOADONCALL MOVEABLE DISCARDABLE 2, 0, 298, 184
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Choose Color"
+CAPTION "Válasszon színt"
FONT 9, "Segoe UI", 0, 0, 0x0
BEGIN
- LTEXT "&Basic colors:", -1, 4, 4, 140, 9
+ LTEXT "&Alap színek:", -1, 4, 4, 140, 9
CONTROL "", COLOR_BOX1, "static",
SS_SIMPLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
4, 14, 140, 86
- LTEXT "&Custom colors:", -1, 4, 106, 140, 9
+ LTEXT "&Egyéni színek:", -1, 4, 106, 140, 9
CONTROL "", COLOR_CUSTOM1, "static",
SS_SIMPLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
4, 116, 140, 28
- PUSHBUTTON "&Define Custom Colors >>" COLOR_MIX, 4, 150, 138, 14,
+ PUSHBUTTON "&Egyéni színek >>" COLOR_MIX, 4, 150, 138, 14,
WS_TABSTOP | WS_GROUP
DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, WS_GROUP | WS_TABSTOP
- PUSHBUTTON "Cancel", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
- PUSHBUTTON "&Help", pshHelp, 100, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Mégsem", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "&Súgó", pshHelp, 100, 166, 44, 14, WS_GROUP | WS_TABSTOP
CONTROL "", COLOR_RAINBOW, "static",
SS_SIMPLE | WS_CHILD, 152, 4, 118, 116
@@ -783,28 +783,28 @@ BEGIN
SS_SIMPLE | WS_CHILD, 152, 124, 40, 26
PUSHBUTTON "&o", COLOR_SOLID, 300, 200, 4, 14, WS_GROUP
- RTEXT "Color", COLOR_SOLID_LEFT, 152, 151, 20, 9
- LTEXT "|S&olid", COLOR_SOLID_RIGHT, 172, 151, 20, 9
+ RTEXT "Szín", COLOR_SOLID_LEFT, 152, 151, 20, 9
+ LTEXT "|&Teli", COLOR_SOLID_RIGHT, 172, 151, 20, 9
- RTEXT "Hu&e:", COLOR_HUEACCEL, 194, 126, 20, 9
+ RTEXT "Árn&y.:", COLOR_HUEACCEL, 194, 126, 20, 9
EDITTEXT, COLOR_HUE, 216, 124, 18, 12, WS_GROUP | WS_TABSTOP
- RTEXT "&Sat:", COLOR_SATACCEL, 194, 140, 20, 9
+ RTEXT "&Fény.:", COLOR_SATACCEL, 194, 140, 20, 9
EDITTEXT, COLOR_SAT, 216, 138, 18, 12, WS_GROUP | WS_TABSTOP
RTEXT "&Lum:", COLOR_LUMACCEL, 194, 154, 20, 9
EDITTEXT, COLOR_LUM, 216, 152, 18, 12, WS_GROUP | WS_TABSTOP
- RTEXT "&Red:", COLOR_REDACCEL, 243, 126, 24, 9
+ RTEXT "&Vörös:", COLOR_REDACCEL, 243, 126, 24, 9
EDITTEXT, COLOR_RED, 269, 124, 18, 12, WS_GROUP | WS_TABSTOP
- RTEXT "&Green:", COLOR_GREENACCEL, 243, 140, 24, 9
+ RTEXT "&Zöld:", COLOR_GREENACCEL, 243, 140, 24, 9
EDITTEXT, COLOR_GREEN, 269, 138, 18, 12, WS_GROUP | WS_TABSTOP
- RTEXT "Bl&ue:", COLOR_BLUEACCEL, 243, 154, 24, 9
+ RTEXT "&Kék:", COLOR_BLUEACCEL, 243, 154, 24, 9
EDITTEXT, COLOR_BLUE, 269, 152, 18, 12, WS_GROUP | WS_TABSTOP
- PUSHBUTTON "&Add to Custom Colors", COLOR_ADD, 152, 166, 142, 14,
+ PUSHBUTTON "&Hozzáadás az egyéni színekhez", COLOR_ADD, 152, 166, 142, 14,
WS_GROUP | WS_TABSTOP
END
diff --git a/language/np3_hu_hu/lexer_hu_hu.rc b/language/np3_hu_hu/lexer_hu_hu.rc
index 73829b3d0..f719d1b9b 100644
--- a/language/np3_hu_hu/lexer_hu_hu.rc
+++ b/language/np3_hu_hu/lexer_hu_hu.rc
@@ -469,7 +469,7 @@ BEGIN
IDS_LEX_STR_63367 "Unicode-Point Hover"
IDS_LEX_STR_63368 "2nd Unicode-Point Hover"
IDS_LEX_STR_63369 "Interface"
- IDS_LEX_STR_63370 "Annotation"
+ IDS_LEX_STR_63370 "Annotáció"
IDS_LEX_STR_63371 "Comment Doc Word"
END
diff --git a/language/np3_hu_hu/menu_hu_hu.rc b/language/np3_hu_hu/menu_hu_hu.rc
index b01b6c2ee..d43364809 100644
--- a/language/np3_hu_hu/menu_hu_hu.rc
+++ b/language/np3_hu_hu/menu_hu_hu.rc
@@ -77,10 +77,10 @@ BEGIN
END
POPUP "In&dítás"
BEGIN
- MENUITEM "Keresés &fájlokban\tCtrl+Shift+F", IDM_GREP_WIN_SEARCH
+ MENUITEM "Keresés &fájlokban\tCtrl+Shift+F", IDM_GREP_WIN_SEARCH
MENUITEM SEPARATOR
- MENUITEM "&New Empty Window\tAlt+N", IDM_FILE_NEWWINDOW
- MENUITEM "&Duplicate Instance\tAlt+Shift+N", IDM_FILE_NEWWINDOW2
+ MENUITEM "&Új üres ablak\tAlt+N", IDM_FILE_NEWWINDOW
+ MENUITEM "&Példány duplikálás\tAlt+Shift+N", IDM_FILE_NEWWINDOW2
MENUITEM SEPARATOR
MENUITEM "&Emelt szinten indítás", IDM_FILE_LAUNCH_ELEVATED
MENUITEM SEPARATOR
@@ -95,7 +95,7 @@ BEGIN
END
MENUITEM SEPARATOR
MENUITEM "&Visszaállás fájlból\tF5", IDM_FILE_REVERT
- MENUITEM "&Ignore File-Vars", CMD_IGNORE_FILE_VARS
+ MENUITEM "Fájl&változások kihagyása", CMD_IGNORE_FILE_VARS
POPUP "&Kódolás"
BEGIN
POPUP "Visszaállás fájlból másként&"
@@ -210,12 +210,12 @@ BEGIN
MENUITEM "&Behúzás", IDM_EDIT_INDENT
MENUITEM "Behúzás törlése", IDM_EDIT_UNINDENT
MENUITEM SEPARATOR
- POPUP "Line &Comment"
+ POPUP "S&or megjegyzés"
BEGIN
- MENUITEM "&Toggle\tCtrl+Q", IDM_EDIT_LINECOMMENT
- MENUITEM "&Add\tCtrl+Alt+Q", IDM_EDIT_LINECOMMENT_ADD
- MENUITEM "&Remove\tCtrl+Alt+Shift+Q", IDM_EDIT_LINECOMMENT_REMOVE
- MENUITEM "&Block Edit\tAlt+Shift+Q", IDM_EDIT_LINECOMMENT_BLOCKEDIT
+ MENUITEM "&Váltás\tCtrl+Q", IDM_EDIT_LINECOMMENT
+ MENUITEM "&Hozzáadás\tCtrl+Alt+Q", IDM_EDIT_LINECOMMENT_ADD
+ MENUITEM "&Eltávolítás\tCtrl+Alt+Shift+Q", IDM_EDIT_LINECOMMENT_REMOVE
+ MENUITEM "&Blokk szerkesztése\tAlt+Shift+Q", IDM_EDIT_LINECOMMENT_BLOCKEDIT
END
MENUITEM SEPARATOR
MENUITEM "&Blokk megjegyzés\tCtrl+Shift+Q", IDM_EDIT_STREAMCOMMENT
@@ -263,9 +263,9 @@ BEGIN
MENUITEM "Behúzás Tab&ulátorrá\tCtrl+Alt+T", IDM_EDIT_CONVERTSPACES2
MENUITEM "Behúzás Tab-m&entes\tCtrl+Alt+S", IDM_EDIT_CONVERTTABS2
MENUITEM SEPARATOR
- MENUITEM "Base&64 Encode", IDM_EDIT_BASE64ENCODE
- MENUITEM "Base6&4 Decode", IDM_EDIT_BASE64DECODE
- MENUITEM "Base64 Decode to codepage...", IDM_EDIT_B64DECODESEL
+ MENUITEM "Base&64 kódolás", IDM_EDIT_BASE64ENCODE
+ MENUITEM "Base6&4 dekódolás", IDM_EDIT_BASE64DECODE
+ MENUITEM "Base64 dekódolás kódlapra...", IDM_EDIT_B64DECODESEL
MENUITEM SEPARATOR
MENUITEM "&URL bekódolás\tCtrl+Shift+E", IDM_EDIT_URLENCODE
MENUITEM "U&RL kikódolás\tCtrl+Shift+R", IDM_EDIT_URLDECODE
diff --git a/language/np3_hu_hu/strings_hu_hu.rc b/language/np3_hu_hu/strings_hu_hu.rc
index 3cd89185a..a5b32a90c 100644
--- a/language/np3_hu_hu/strings_hu_hu.rc
+++ b/language/np3_hu_hu/strings_hu_hu.rc
@@ -196,10 +196,10 @@ BEGIN
IDS_MUI_EXPORT_FAIL "Hiba a színkiemelések beállításainak exportálásakor ide ""%s""."
IDS_MUI_REGEX_INVALID "Hiba a reguláris kifejezés feldolgozásakor. A kifejezés érvénytelen!"
IDS_MUI_DROP_NO_FILE "Nem sikerült érvényes fájlnevet kapni.\nHa egy 32 bites alkalmazásból lett átdobva,\nkérem, ejtse újra a Notepad3 eszköztárra."
- IDS_MUI_URL_DIR_EXISTS "URL specified directory exists!"
- IDS_MUI_URL_FILE_EXISTS "URL specified file exists!"
+ IDS_MUI_URL_DIR_EXISTS "Az URL-ben megadott könyvtár létezik!"
+ IDS_MUI_URL_FILE_EXISTS "Az URL-ben megadott fájl létezik!"
IDS_MUI_URL_PATH_NOT_FOUND
- "URL specified path not found!"
+ "Az URL-ben megadott útvonal nem létezik!"
IDS_MUI_URL_OPEN_FILE "\nAlt + Kattintás a fájl megnyitásához."
IDS_MUI_URL_OPEN_BROWSER "\nCtrl + Kattintás a böngészőben való megnyitáshoz."
IDS_MUI_INF_PRSVFILEMODTM
@@ -242,10 +242,10 @@ STRINGTABLE
BEGIN
IDS_MUI_TRANSL_AUTHOR "(hu-HU) Magyar fordítás: xsak"
IDS_MUI_TITLE_FIXBASE "BASE (%s)"
- IDS_MUI_TITLE_RELCUR "+++ %s: %s Style +++"
- IDS_MUI_TITLE_FIXCUR "%s: %s Style"
- IDS_MUI_TITLE_RELARB "+++ Style '%s' (%s) +++"
- IDS_MUI_TITLE_FIXARB "Style '%s' (%s)"
+ IDS_MUI_TITLE_RELCUR "+++ %s: %s Stílus +++"
+ IDS_MUI_TITLE_FIXCUR "%s: %s Stílus"
+ IDS_MUI_TITLE_RELARB "+++ Stílus '%s' (%s) +++"
+ IDS_MUI_TITLE_FIXARB "Stílus '%s' (%s)"
IDS_MUI_ASSOCIATED_EXT "Hozzárendelt kiterjesztések:"
IDS_MUI_ZERO_LEN_MATCH "^ Nulla hosszú egyezés"
IDS_MUI_GOTO_LINE "Sor (1 - %ti):"
@@ -272,13 +272,13 @@ END
STRINGTABLE
BEGIN
- IDS_MUI_SB_MARK_ALL_OCC "Mark All Occurrences..."
- IDS_MUI_SB_TOGGLE_VIEW "Toggle View..."
- IDS_MUI_SB_REPLACE_ALL "Replace all..."
- IDS_MUI_SB_WRAP_LINES "Wrap Lines..."
- IDS_MUI_SB_CONV_LNBRK "Convert Line Breaks..."
- IDS_MUI_SB_RECODING_DOC "Recoding Document..."
- IDS_MUI_SB_LEXER_STYLING "Apply Lexer Styling..."
+ IDS_MUI_SB_MARK_ALL_OCC "Minden találat jelölése..."
+ IDS_MUI_SB_TOGGLE_VIEW "Nézet váltása..."
+ IDS_MUI_SB_REPLACE_ALL "Összes cseréje..."
+ IDS_MUI_SB_WRAP_LINES "Sorok törése..."
+ IDS_MUI_SB_CONV_LNBRK "Sorvégek átalakítása..."
+ IDS_MUI_SB_RECODING_DOC "Dokumentum újrakódolása..."
+ IDS_MUI_SB_LEXER_STYLING "Lexer stílus alkalmazása..."
END
STRINGTABLE
@@ -379,4 +379,3 @@ END
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
-
diff --git a/lexilla/lexers_x/LexMarkdown.cxx b/lexilla/lexers_x/LexMarkdown.cxx
index 3fe5b4f19..923af3617 100644
--- a/lexilla/lexers_x/LexMarkdown.cxx
+++ b/lexilla/lexers_x/LexMarkdown.cxx
@@ -53,7 +53,7 @@
using namespace Lexilla;
-static inline bool IsNewline(const int ch) {
+constexpr bool IsNewline(const int ch) {
return (ch == '\n' || ch == '\r');
}
@@ -135,36 +135,45 @@ static bool HasPrevLineContent(StyleContext &sc) {
return false;
}
-static bool AtTermStart(StyleContext &sc) {
+constexpr bool AtTermStart(StyleContext &sc) {
return sc.currentPos == 0 || sc.chPrev == 0 || isspacechar(sc.chPrev);
}
-static bool IsValidHrule(const Sci_PositionU endPos, StyleContext &sc) {
+static bool IsValidHrule(const Sci_PositionU endPos, StyleContext& sc) {
int count = 1;
Sci_PositionU i = 0;
for (;;) {
++i;
- int c = sc.GetRelative(i);
- if (c == sc.ch)
+ int const ch = sc.GetRelative(i);
+ if (ch == sc.ch)
++count;
// hit a terminating character
- else if (!IsASpaceOrTab(c) || sc.currentPos + i == endPos) {
+ else if (!IsASpaceOrTab(ch) || (sc.currentPos + i) == endPos) {
// Are we a valid HRULE
- if ((IsNewline(c) || sc.currentPos + i == endPos) &&
- count >= 3 && !HasPrevLineContent(sc)) {
+ if ((IsNewline(ch) || (sc.currentPos + i) == endPos) &&
+ count >= 3 && !HasPrevLineContent(sc)) {
sc.SetState(SCE_MARKDOWN_HRULE);
sc.Forward(i);
- sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ //@@@sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ sc.SetState(SCE_MARKDOWN_DEFAULT);
return true;
}
else {
sc.SetState(SCE_MARKDOWN_DEFAULT);
- return false;
+ return false;
}
}
}
}
+constexpr bool IsInHeaderState(const int state) {
+ return (
+ state == SCE_MARKDOWN_HEADER1 || state == SCE_MARKDOWN_HEADER2 ||
+ state == SCE_MARKDOWN_HEADER3 || state == SCE_MARKDOWN_HEADER4 ||
+ state == SCE_MARKDOWN_HEADER5 || state == SCE_MARKDOWN_HEADER6
+ );
+}
+
static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,
WordList **, Accessor &styler) {
Sci_PositionU endPos = startPos + length;
@@ -178,16 +187,21 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
StyleContext sc(startPos, length, initStyle, styler);
while (sc.More()) {
+
// Skip past escaped characters
if (sc.ch == '\\') {
sc.Forward();
continue;
}
- // A blockquotes resets the line semantics
- if (sc.state == SCE_MARKDOWN_BLOCKQUOTE)
+ if (IsInHeaderState(sc.state) && sc.atLineStart) {
sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ }
+ // A blockquotes resets the line semantics
+ if (sc.state == SCE_MARKDOWN_BLOCKQUOTE) {
+ sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ }
// Conditional state-based actions
if (sc.state == SCE_MARKDOWN_CODE2) {
if (sc.Match("``") && sc.GetRelative(-2) != ' ') {
@@ -263,24 +277,36 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
}
else if (sc.state == SCE_MARKDOWN_LINE_BEGIN) {
// Header
- if (sc.Match("######"))
+ if (sc.Match("######")) {
SetStateAndZoom(SCE_MARKDOWN_HEADER6, 6, '#', sc);
- else if (sc.Match("#####"))
+ freezeCursor = true;
+ }
+ else if (sc.Match("#####")) {
SetStateAndZoom(SCE_MARKDOWN_HEADER5, 5, '#', sc);
- else if (sc.Match("####"))
- SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc);
- else if (sc.Match("###"))
+ freezeCursor = true;
+ }
+ else if (sc.Match("####")) {
+ SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc);
+ freezeCursor = true;
+ }
+ else if (sc.Match("###")) {
SetStateAndZoom(SCE_MARKDOWN_HEADER3, 3, '#', sc);
- else if (sc.Match("##"))
+ freezeCursor = true;
+ }
+ else if (sc.Match("##")) {
SetStateAndZoom(SCE_MARKDOWN_HEADER2, 2, '#', sc);
+ freezeCursor = true;
+ }
else if (sc.Match("#")) {
// Catch the special case of an unordered list
if (sc.chNext == '.' && IsASpaceOrTab(sc.GetRelative(2))) {
precharCount = 0;
sc.SetState(SCE_MARKDOWN_PRECHAR);
}
- else
+ else {
SetStateAndZoom(SCE_MARKDOWN_HEADER1, 1, '#', sc);
+ freezeCursor = true;
+ }
}
// Code block
else if (sc.Match("~~~")) {
@@ -303,20 +329,22 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
sc.SetState(SCE_MARKDOWN_PRECHAR);
}
}
- else if (IsNewline(sc.ch))
- sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ else if (sc.atLineEnd) {
+ sc.ForwardSetState(SCE_MARKDOWN_LINE_BEGIN);
+ freezeCursor = true;
+ }
else {
precharCount = 0;
sc.SetState(SCE_MARKDOWN_PRECHAR);
}
}
- // The header lasts until the newline
- else if (sc.state == SCE_MARKDOWN_HEADER1 || sc.state == SCE_MARKDOWN_HEADER2 ||
- sc.state == SCE_MARKDOWN_HEADER3 || sc.state == SCE_MARKDOWN_HEADER4 ||
- sc.state == SCE_MARKDOWN_HEADER5 || sc.state == SCE_MARKDOWN_HEADER6) {
- if (IsNewline(sc.ch))
- sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ // The header lasts beyond the newline (eolfilled)
+ else if (IsInHeaderState(sc.state)) {
+ if (sc.atLineEnd) {
+ sc.ForwardSetState(SCE_MARKDOWN_LINE_BEGIN);
+ freezeCursor = true;
+ }
}
// New state only within the initial whitespace
@@ -427,14 +455,16 @@ static void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int
sc.Forward();
}
// Beginning of line
- else if (IsNewline(sc.ch)) {
- sc.SetState(SCE_MARKDOWN_LINE_BEGIN);
+ else if (sc.atLineEnd) {
+ sc.ForwardSetState(SCE_MARKDOWN_LINE_BEGIN);
+ freezeCursor = true;
}
}
// Advance if not holding back the cursor for this iteration.
if (!freezeCursor)
sc.Forward();
- freezeCursor = false;
+ else
+ freezeCursor = false;
}
sc.Complete();
}
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index 89db2d3d0..ca5eef776 100644
--- a/res/Notepad3.exe.manifest.conf
+++ b/res/Notepad3.exe.manifest.conf
@@ -3,7 +3,7 @@
Notepad3 beta
diff --git a/src/DarkMode/DarkMode.cpp b/src/DarkMode/DarkMode.cpp
index d950b2057..a7fec6a5e 100644
--- a/src/DarkMode/DarkMode.cpp
+++ b/src/DarkMode/DarkMode.cpp
@@ -73,7 +73,7 @@ constexpr bool CheckBuildNumber(DWORD buildNumber)
case 19042: // Win10 v20H2
case 19043: // Win10 v21H1 Insider Beta and Release Preview Channels [2021-04-28]
// unknown, if working with these version(s) :-O
- case 21387: // Win10 v21H2 Insider Dev Channel [2021-05-18]
+ case 21390: // Win10 v21H2 Insider Dev Channel [2021-05-21]
return true;
default:
// not supported
diff --git a/src/Dialogs.c b/src/Dialogs.c
index 6dbbb2cf6..710af17fe 100644
--- a/src/Dialogs.c
+++ b/src/Dialogs.c
@@ -4970,18 +4970,21 @@ void SetWindowReadingRTL(HWND hwnd, bool bRTL)
// A2W: Convert Dialog Item Text form Unicode to UTF-8 and vice versa
//
-UINT ComboBox_GetTextLenth(HWND hDlg, int nIDDlgItem)
+UINT ComboBox_GetTextLengthEx(HWND hDlg, int nIDDlgItem)
{
return (UINT)ComboBox_GetTextLength(GetDlgItem(hDlg, nIDDlgItem));
}
-UINT ComboBox_GetTextW2MB(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount)
-{
+UINT ComboBox_GetCurSelEx(HWND hDlg, int nIDDlgItem) {
+ return (UINT)ComboBox_GetCurSel(GetDlgItem(hDlg, nIDDlgItem));
+}
+
+UINT ComboBox_GetTextW2MB(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount) {
WCHAR wsz[FNDRPL_BUFFER] = { L'\0' };
HWND const hwndCtl = GetDlgItem(hDlg, nIDDlgItem);
UINT const uRet = (UINT)ComboBox_GetTextLength(hwndCtl);
int const idx = ComboBox_GetCurSel(hwndCtl);
- if (-1 != idx) {
+ if (idx >= 0) {
if (uRet < COUNTOF(wsz)) {
ComboBox_GetLBText(hwndCtl, ComboBox_GetCurSel(hwndCtl), wsz);
}
@@ -5001,13 +5004,14 @@ void ComboBox_SetTextMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString)
//return SetDlgItemText(hDlg, nIDDlgItem, wsz);
}
-LRESULT ComboBox_AddStringMB2W(HWND hwnd, LPCSTR lpString)
+#if 0
+void ComboBox_AddStringMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString)
{
WCHAR wsz[FNDRPL_BUFFER] = { L'\0' };
MultiByteToWideChar(Encoding_SciCP, 0, lpString, -1, wsz, (int)COUNTOF(wsz));
- return SendMessageW(hwnd, CB_ADDSTRING, 0, (LPARAM)wsz);
+ ComboBox_AddString(GetDlgItem(hDlg, nIDDlgItem), wsz);
}
-
+#endif
//=============================================================================
//
diff --git a/src/Dialogs.h b/src/Dialogs.h
index 166e29f6d..0015e8a8f 100644
--- a/src/Dialogs.h
+++ b/src/Dialogs.h
@@ -89,10 +89,11 @@ void SetWindowTransparentMode(HWND hwnd, bool bTransparentMode, int iOpacityLeve
void SetWindowLayoutRTL(HWND hwnd, bool bRTL);
void SetWindowReadingRTL(HWND hwnd, bool bRTL);
-UINT ComboBox_GetTextLenth(HWND hDlg, int nIDDlgItem);
+UINT ComboBox_GetTextLengthEx(HWND hDlg, int nIDDlgItem);
+UINT ComboBox_GetCurSelEx(HWND hDlg, int nIDDlgItem);
UINT ComboBox_GetTextW2MB(HWND hDlg, int nIDDlgItem, LPSTR lpString, int nMaxCount);
void ComboBox_SetTextMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
-LRESULT ComboBox_AddStringMB2W(HWND hwnd, LPCSTR lpString);
+//void ComboBox_AddStringMB2W(HWND hDlg, int nIDDlgItem, LPCSTR lpString);
POINT GetCenterOfDlgInParent(const RECT* rcDlg, const RECT* rcParent);
HWND GetParentOrDesktop(HWND hDlg);
diff --git a/src/Edit.c b/src/Edit.c
index 827fa5dea..dc1243626 100644
--- a/src/Edit.c
+++ b/src/Edit.c
@@ -5442,196 +5442,194 @@ void EditGetExcerpt(HWND hwnd,LPWSTR lpszExcerpt,DWORD cchExcerpt)
//
static void _SetSearchFlags(HWND hwnd, LPEDITFINDREPLACE lpefr)
{
- if (lpefr) {
- if (hwnd) {
- char szBuf[FNDRPL_BUFFER] = { '\0' };
- bool bIsFindDlg = (GetDlgItem(Globals.hwndDlgFindReplace, IDC_REPLACE) == NULL);
+ if (hwnd && lpefr) {
- ComboBox_GetTextW2MB(hwnd, IDC_FINDTEXT, szBuf, COUNTOF(szBuf));
- if (StringCchCompareXA(szBuf, lpefr->szFind) != 0) {
- StringCchCopyA(lpefr->szFind, COUNTOF(lpefr->szFind), szBuf);
+ char szBuf[FNDRPL_BUFFER] = { '\0' };
+ bool bIsFindDlg = (GetDlgItem(Globals.hwndDlgFindReplace, IDC_REPLACE) == NULL);
+
+ ComboBox_GetTextW2MB(hwnd, IDC_FINDTEXT, szBuf, COUNTOF(szBuf));
+ if (StringCchCompareXA(szBuf, lpefr->szFind) != 0) {
+ StringCchCopyA(lpefr->szFind, COUNTOF(lpefr->szFind), szBuf);
+ lpefr->bStateChanged = true;
+ }
+
+ ComboBox_GetTextW2MB(hwnd, IDC_REPLACETEXT, szBuf, COUNTOF(szBuf));
+ if (StringCchCompareXA(szBuf, lpefr->szReplace) != 0) {
+ StringCchCopyA(lpefr->szReplace, COUNTOF(lpefr->szReplace), szBuf);
+ lpefr->bStateChanged = true;
+ }
+
+ bool bIsFlagSet = ((lpefr->fuFlags & SCFIND_MATCHCASE) != 0);
+ if (IsButtonChecked(hwnd, IDC_FINDCASE)) {
+ if (!bIsFlagSet) {
+ lpefr->fuFlags |= SCFIND_MATCHCASE;
lpefr->bStateChanged = true;
}
-
- ComboBox_GetTextW2MB(hwnd, IDC_REPLACETEXT, szBuf, COUNTOF(szBuf));
- if (StringCchCompareXA(szBuf, lpefr->szReplace) != 0) {
- StringCchCopyA(lpefr->szReplace, COUNTOF(lpefr->szReplace), szBuf);
+ } else {
+ if (bIsFlagSet) {
+ lpefr->fuFlags &= ~(SCFIND_MATCHCASE);
lpefr->bStateChanged = true;
}
+ }
+ bIsFlagSet = ((lpefr->fuFlags & SCFIND_WHOLEWORD) != 0);
+ if (IsButtonChecked(hwnd, IDC_FINDWORD)) {
+ if (!bIsFlagSet) {
+ lpefr->fuFlags |= SCFIND_WHOLEWORD;
+ lpefr->bStateChanged = true;
+ }
+ } else {
+ if (bIsFlagSet) {
+ lpefr->fuFlags &= ~(SCFIND_WHOLEWORD);
+ lpefr->bStateChanged = true;
+ }
+ }
- bool bIsFlagSet = ((lpefr->fuFlags & SCFIND_MATCHCASE) != 0);
- if (IsButtonChecked(hwnd, IDC_FINDCASE)) {
+ bIsFlagSet = ((lpefr->fuFlags & SCFIND_WORDSTART) != 0);
+ if (IsButtonChecked(hwnd, IDC_FINDSTART)) {
+ if (!bIsFlagSet) {
+ lpefr->fuFlags |= SCFIND_WORDSTART;
+ lpefr->bStateChanged = true;
+ }
+ } else {
+ if (bIsFlagSet) {
+ lpefr->fuFlags &= ~(SCFIND_WORDSTART);
+ lpefr->bStateChanged = true;
+ }
+ }
+
+ bIsFlagSet = lpefr->bRegExprSearch;
+ if (IsButtonChecked(hwnd, IDC_FINDREGEXP)) {
+ if (!bIsFlagSet) {
+ lpefr->bRegExprSearch = true;
+ lpefr->fuFlags |= SCFIND_REGEXP;
+ lpefr->bStateChanged = true;
+ }
+ } else {
+ if (bIsFlagSet) {
+ lpefr->bRegExprSearch = false;
+ lpefr->fuFlags &= ~SCFIND_REGEXP;
+ lpefr->bStateChanged = true;
+ }
+ }
+
+ if (IsDialogControlEnabled(hwnd, IDC_DOT_MATCH_ALL)) {
+ bIsFlagSet = ((lpefr->fuFlags & SCFIND_DOT_MATCH_ALL) != 0);
+ if (IsButtonChecked(hwnd, IDC_DOT_MATCH_ALL)) {
if (!bIsFlagSet) {
- lpefr->fuFlags |= SCFIND_MATCHCASE;
+ lpefr->fuFlags |= SCFIND_DOT_MATCH_ALL;
lpefr->bStateChanged = true;
}
} else {
if (bIsFlagSet) {
- lpefr->fuFlags &= ~(SCFIND_MATCHCASE);
+ lpefr->fuFlags &= ~SCFIND_DOT_MATCH_ALL;
lpefr->bStateChanged = true;
}
}
+ }
- bIsFlagSet = ((lpefr->fuFlags & SCFIND_WHOLEWORD) != 0);
- if (IsButtonChecked(hwnd, IDC_FINDWORD)) {
- if (!bIsFlagSet) {
- lpefr->fuFlags |= SCFIND_WHOLEWORD;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->fuFlags &= ~(SCFIND_WHOLEWORD);
- lpefr->bStateChanged = true;
- }
+ // force consistency
+ if (lpefr->bRegExprSearch) {
+ CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_UNCHECKED);
+ }
+ bIsFlagSet = lpefr->bWildcardSearch;
+ if (IsButtonChecked(hwnd, IDC_WILDCARDSEARCH)) {
+ if (!bIsFlagSet) {
+ lpefr->bWildcardSearch = true;
+ lpefr->fuFlags |= SCFIND_REGEXP; // Wildcard search based on RegExpr
+ lpefr->bStateChanged = true;
}
-
- bIsFlagSet = ((lpefr->fuFlags & SCFIND_WORDSTART) != 0);
- if (IsButtonChecked(hwnd, IDC_FINDSTART)) {
- if (!bIsFlagSet) {
- lpefr->fuFlags |= SCFIND_WORDSTART;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->fuFlags &= ~(SCFIND_WORDSTART);
- lpefr->bStateChanged = true;
- }
- }
-
- bIsFlagSet = lpefr->bRegExprSearch;
- if (IsButtonChecked(hwnd, IDC_FINDREGEXP)) {
- if (!bIsFlagSet) {
- lpefr->bRegExprSearch = true;
- lpefr->fuFlags |= SCFIND_REGEXP;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->bRegExprSearch = false;
+ } else {
+ if (bIsFlagSet) {
+ lpefr->bWildcardSearch = false;
+ if (!(lpefr->bRegExprSearch)) {
lpefr->fuFlags &= ~SCFIND_REGEXP;
- lpefr->bStateChanged = true;
}
+ lpefr->bStateChanged = true;
}
+ }
- if (IsDialogControlEnabled(hwnd, IDC_DOT_MATCH_ALL)) {
- bIsFlagSet = ((lpefr->fuFlags & SCFIND_DOT_MATCH_ALL) != 0);
- if (IsButtonChecked(hwnd, IDC_DOT_MATCH_ALL)) {
- if (!bIsFlagSet) {
- lpefr->fuFlags |= SCFIND_DOT_MATCH_ALL;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->fuFlags &= ~SCFIND_DOT_MATCH_ALL;
- lpefr->bStateChanged = true;
- }
- }
+ bIsFlagSet = lpefr->bOverlappingFind;
+ if (IsButtonChecked(hwnd, IDC_FIND_OVERLAPPING)) {
+ if (!bIsFlagSet) {
+ lpefr->bOverlappingFind = true;
+ lpefr->bStateChanged = false; // no effect on state
}
+ } else {
+ if (bIsFlagSet) {
+ lpefr->bOverlappingFind = false;
+ lpefr->bStateChanged = false; // no effect on state
+ }
+ }
- // force consistency
- if (lpefr->bRegExprSearch) {
- CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_UNCHECKED);
+ bIsFlagSet = lpefr->bNoFindWrap;
+ if (IsButtonChecked(hwnd, IDC_NOWRAP)) {
+ if (!bIsFlagSet) {
+ lpefr->bNoFindWrap = true;
+ lpefr->bStateChanged = true;
}
- bIsFlagSet = lpefr->bWildcardSearch;
- if (IsButtonChecked(hwnd, IDC_WILDCARDSEARCH)) {
+ } else {
+ if (bIsFlagSet) {
+ lpefr->bNoFindWrap = false;
+ lpefr->bStateChanged = true;
+ }
+ }
+
+ bIsFlagSet = lpefr->bMarkOccurences;
+ if (IsButtonChecked(hwnd, IDC_ALL_OCCURRENCES)) {
+ if (!bIsFlagSet) {
+ lpefr->bMarkOccurences = true;
+ lpefr->bStateChanged = true;
+ }
+ } else {
+ if (bIsFlagSet) {
+ lpefr->bMarkOccurences = false;
+ lpefr->bStateChanged = true;
+ }
+ }
+
+ if (IsDialogControlEnabled(hwnd, IDC_FINDTRANSFORMBS)) {
+ bIsFlagSet = lpefr->bTransformBS;
+ if (IsButtonChecked(hwnd, IDC_FINDTRANSFORMBS)) {
if (!bIsFlagSet) {
- lpefr->bWildcardSearch = true;
- lpefr->fuFlags |= SCFIND_REGEXP; // Wildcard search based on RegExpr
+ lpefr->bTransformBS = true;
lpefr->bStateChanged = true;
}
} else {
if (bIsFlagSet) {
- lpefr->bWildcardSearch = false;
- if (!(lpefr->bRegExprSearch)) {
- lpefr->fuFlags &= ~SCFIND_REGEXP;
- }
+ lpefr->bTransformBS = false;
lpefr->bStateChanged = true;
}
}
+ }
- bIsFlagSet = lpefr->bOverlappingFind;
- if (IsButtonChecked(hwnd, IDC_FIND_OVERLAPPING)) {
+ if (bIsFindDlg) {
+ bIsFlagSet = lpefr->bFindClose;
+ if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
if (!bIsFlagSet) {
- lpefr->bOverlappingFind = true;
- lpefr->bStateChanged = false; // no effect on state
- }
- } else {
- if (bIsFlagSet) {
- lpefr->bOverlappingFind = false;
- lpefr->bStateChanged = false; // no effect on state
- }
- }
-
- bIsFlagSet = lpefr->bNoFindWrap;
- if (IsButtonChecked(hwnd, IDC_NOWRAP)) {
- if (!bIsFlagSet) {
- lpefr->bNoFindWrap = true;
+ lpefr->bFindClose = true;
lpefr->bStateChanged = true;
}
} else {
if (bIsFlagSet) {
- lpefr->bNoFindWrap = false;
+ lpefr->bFindClose = false;
lpefr->bStateChanged = true;
}
}
-
- bIsFlagSet = lpefr->bMarkOccurences;
- if (IsButtonChecked(hwnd, IDC_ALL_OCCURRENCES)) {
+ } else { // replace close
+ bIsFlagSet = lpefr->bReplaceClose;
+ if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
if (!bIsFlagSet) {
- lpefr->bMarkOccurences = true;
+ lpefr->bReplaceClose = true;
lpefr->bStateChanged = true;
}
} else {
if (bIsFlagSet) {
- lpefr->bMarkOccurences = false;
+ lpefr->bReplaceClose = false;
lpefr->bStateChanged = true;
}
}
-
- if (IsDialogControlEnabled(hwnd, IDC_FINDTRANSFORMBS)) {
- bIsFlagSet = lpefr->bTransformBS;
- if (IsButtonChecked(hwnd, IDC_FINDTRANSFORMBS)) {
- if (!bIsFlagSet) {
- lpefr->bTransformBS = true;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->bTransformBS = false;
- lpefr->bStateChanged = true;
- }
- }
- }
-
- if (bIsFindDlg) {
- bIsFlagSet = lpefr->bFindClose;
- if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
- if (!bIsFlagSet) {
- lpefr->bFindClose = true;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->bFindClose = false;
- lpefr->bStateChanged = true;
- }
- }
- } else { // replace close
- bIsFlagSet = lpefr->bReplaceClose;
- if (IsButtonChecked(hwnd, IDC_FINDCLOSE)) {
- if (!bIsFlagSet) {
- lpefr->bReplaceClose = true;
- lpefr->bStateChanged = true;
- }
- } else {
- if (bIsFlagSet) {
- lpefr->bReplaceClose = false;
- lpefr->bStateChanged = true;
- }
- }
- }
- } // if hwnd
+ }
}
}
@@ -5895,6 +5893,29 @@ static void _ShowZeroLengthCallTip(DocPos iPosition)
}
+//=============================================================================
+//
+// _EnableFRDlgCtrls()
+//
+static bool _EnableFRDlgCtrls(HWND hwnd) {
+
+ //bool const bEmptyFnd = (ComboBox_GetTextLengthEx(hwnd, IDC_FINDTEXT) == 0 || ComboBox_GetCurSelEx(hwnd, IDC_FINDTEXT) != CB_ERR);
+ //bool const bEmptyRpl = (ComboBox_GetTextLengthEx(hwnd, IDC_REPLACETEXT) == 0 || ComboBox_GetCurSelEx(hwnd, IDC_REPLACETEXT) != CB_ERR);
+ bool const bEmptyFnd = ComboBox_GetTextLengthEx(hwnd, IDC_FINDTEXT) == 0;
+ bool const bEmptyRpl = ComboBox_GetTextLengthEx(hwnd, IDC_REPLACETEXT) == 0;
+ bool const bEmptySel = !(SciCall_IsSelectionEmpty() || Sci_IsMultiOrRectangleSelection());
+
+ DialogEnableControl(hwnd, IDOK, !bEmptyFnd);
+ DialogEnableControl(hwnd, IDC_FINDPREV, !bEmptyFnd);
+ DialogEnableControl(hwnd, IDC_REPLACE, !bEmptyFnd);
+ DialogEnableControl(hwnd, IDC_REPLACEALL, !bEmptyFnd);
+ DialogEnableControl(hwnd, IDC_REPLACEINSEL, !bEmptyFnd && !bEmptySel);
+ DialogEnableControl(hwnd, IDC_SWAPSTRG, !bEmptyFnd || !bEmptyRpl);
+
+ return !bEmptyFnd;
+}
+
+
//=============================================================================
//
// EditFindReplaceDlgProc()
@@ -6339,79 +6360,88 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
case IDC_FINDTEXT:
case IDC_REPLACETEXT: {
- bool bPatternChanged = false;
+ bool bFndPatternChanged = s_pEfrDataDlg->bStateChanged;
+
+ switch (HIWORD(wParam)) {
+
+ case CBN_CLOSEUP: {
+ LONG lSelEnd = 0;
+ SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETEDITSEL, 0, (LPARAM)&lSelEnd);
+ SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETEDITSEL, 0, MAKELPARAM(lSelEnd, lSelEnd));
+ }
+ break;
+
+ case CBN_EDITUPDATE:
+ if (SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETDROPPEDSTATE, 0, 0)) {
+ //~SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETCURSEL, (WPARAM)-1, 0); // clear
+ SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SHOWDROPDOWN, 0, 0); // hide
+ }
+ break;
+
+ case CBN_SELCHANGE: {
+ LRESULT const cursel = SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETCURSEL, 0, 0);
+ if (cursel != CB_ERR) {
+ SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETCURSEL, (WPARAM)cursel, 0);
+ }
+ }
+ // [fallthrough]
+ case CBN_SELENDOK:
+ case CBN_EDITCHANGE:
+ bFndPatternChanged = (LOWORD(wParam) == IDC_FINDTEXT);
+ LPSTR const buffer = bFndPatternChanged ? s_pEfrDataDlg->szFind : s_pEfrDataDlg->szReplace;
+ ComboBox_GetTextW2MB(hwnd, LOWORD(wParam), buffer, FNDRPL_BUFFER);
+ if (bFndPatternChanged) {
+ SetFindPatternMB(s_pEfrDataDlg->szFind);
+ }
+ break;
+
+ case CBN_KILLFOCUS:
+ case CBN_SELENDCANCEL:
+ default:
+ break;
+ }
+
if (Globals.bFindReplCopySelOrClip) {
- char* lpszSelection = NULL;
+ char *lpszSelection = NULL;
DocPos const cchSelection = SciCall_GetSelText(NULL);
if ((cchSelection > 1) && (LOWORD(wParam) != IDC_REPLACETEXT)) {
lpszSelection = AllocMem(cchSelection + 1, HEAP_ZERO_MEMORY);
SciCall_GetSelText(lpszSelection);
} else { // (cchSelection <= 1)
// nothing is selected in the editor:
- // if first time you bring up find/replace dialog,
- // use most recent search pattern to find box
lpszSelection = AllocMem(FNDRPL_BUFFER, HEAP_ZERO_MEMORY);
if (lpszSelection) {
+ // if first time you bring up find/replace dialog,
+ // use most recent search pattern to find box
+ // in case of no history: paste clipboard
_EditGetFindStrg(Globals.hwndEdit, s_pEfrDataDlg, lpszSelection, SizeOfMem(lpszSelection));
}
}
-
if (lpszSelection) {
ComboBox_SetTextMB2W(hwnd, IDC_FINDTEXT, lpszSelection);
FreeMem(lpszSelection);
lpszSelection = NULL;
- bPatternChanged = true;
+ bFndPatternChanged = true;
}
- s_InitialTopLine = -1; // reset
+ s_InitialTopLine = -1; // reset
s_anyMatch = NO_MATCH;
Globals.bFindReplCopySelOrClip = false;
} // Globals.bFindReplCopySelOrClip
- switch (HIWORD(wParam)) {
- case CBN_CLOSEUP:
- case CBN_EDITCHANGE:
- bPatternChanged = (LOWORD(wParam) == IDC_FINDTEXT);
- break;
- default:
- break;
+ // ------------------------
+ if (!bFndPatternChanged) {
+ break; // return
}
+ // ------------------------
- if (!bPatternChanged) {
- break;
- }
-
- bool const bEmptyFnd = (ComboBox_GetTextLenth(hwnd, IDC_FINDTEXT) ||
- CB_ERR != SendDlgItemMessage(hwnd, IDC_FINDTEXT, CB_GETCURSEL, 0, 0));
-
- bool const bEmptyRpl = (ComboBox_GetTextLenth(hwnd, IDC_REPLACETEXT) ||
- CB_ERR != SendDlgItemMessage(hwnd, IDC_REPLACETEXT, CB_GETCURSEL, 0, 0));
-
- bool const bEmptySel = !(SciCall_IsSelectionEmpty() || Sci_IsMultiOrRectangleSelection());
-
- DialogEnableControl(hwnd, IDOK, bEmptyFnd);
- DialogEnableControl(hwnd, IDC_FINDPREV, bEmptyFnd);
- DialogEnableControl(hwnd, IDC_REPLACE, bEmptyFnd);
- DialogEnableControl(hwnd, IDC_REPLACEALL, bEmptyFnd);
- DialogEnableControl(hwnd, IDC_REPLACEINSEL, bEmptyFnd && bEmptySel);
- DialogEnableControl(hwnd, IDC_SWAPSTRG, bEmptyFnd || bEmptyRpl);
-
- if (!bEmptyFnd) {
+ if (_EnableFRDlgCtrls(hwnd)) {
s_anyMatch = NO_MATCH;
EditSetSelectionEx(s_InitialAnchorPos, s_InitialCaretPos, -1, -1);
}
- if (HIWORD(wParam) == CBN_CLOSEUP) {
- LONG lSelEnd = 0;
- SendDlgItemMessage(hwnd, LOWORD(wParam), CB_GETEDITSEL, 0, (LPARAM)&lSelEnd);
- SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETEDITSEL, 0, MAKELPARAM(lSelEnd, lSelEnd));
- }
-
_SetSearchFlags(hwnd, s_pEfrDataDlg);
-
- if (StrIsEmptyA(s_pEfrDataDlg->szFind)) {
- SetFindPattern(L"");
- }
+ SetFindPatternMB(s_pEfrDataDlg->szFind);
DocPos start = s_InitialSearchStart;
DocPos end = Sci_GetDocEndPosition();
@@ -6581,16 +6611,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
CopyMemory(&s_efrSave, s_pEfrDataDlg, sizeof(EDITFINDREPLACE));
}
- if (!s_bSwitchedFindReplace &&
- !ComboBox_GetTextW2MB(hwnd, IDC_FINDTEXT, s_pEfrDataDlg->szFind, COUNTOF(s_pEfrDataDlg->szFind))) {
- DialogEnableControl(hwnd, IDOK, false);
- DialogEnableControl(hwnd, IDC_FINDPREV, false);
- DialogEnableControl(hwnd, IDC_REPLACE, false);
- DialogEnableControl(hwnd, IDC_REPLACEALL, false);
- DialogEnableControl(hwnd, IDC_REPLACEINSEL, false);
- if (!ComboBox_GetTextW2MB(hwnd, IDC_REPLACETEXT, s_pEfrDataDlg->szReplace, COUNTOF(s_pEfrDataDlg->szReplace))) {
- DialogEnableControl(hwnd, IDC_SWAPSTRG, false);
- }
+ if (!s_bSwitchedFindReplace && !_EnableFRDlgCtrls(hwnd)) {
return true;
}
diff --git a/src/Notepad3.c b/src/Notepad3.c
index 7904609c6..2845ec8ab 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -1177,7 +1177,7 @@ void SetFindPattern(LPCWSTR wchFindPattern)
//
void SetFindPatternMB(LPCSTR chFindPattern)
{
- MultiByteToWideCharEx(Encoding_SciCP, 0, chFindPattern, -1, sCurrentFindPattern, COUNTOF(sCurrentFindPattern));
+ MultiByteToWideChar(Encoding_SciCP, 0, chFindPattern, -1, sCurrentFindPattern, (int)COUNTOF(sCurrentFindPattern));
}
diff --git a/src/Version.h b/src/Version.h
index b886d295b..c04ab23c3 100644
--- a/src/Version.h
+++ b/src/Version.h
@@ -76,7 +76,11 @@
#undef VER_CPL
#if defined(_MSC_VER)
- #if (_MSC_VER == 1928)
+ #if (_MSC_VER == 1929)
+ #if (_MSC_FULL_VER >= 192930037)
+ #define VER_CPL MS Visual C++ 2019 v16.10.0
+ #endif
+ #elif (_MSC_VER == 1928)
#if (_MSC_FULL_VER >= 192829915)
#define VER_CPL MS Visual C++ 2019 v16.9.(5-6)
#elif (_MSC_FULL_VER >= 192829914)
diff --git a/src/VersionEx.h b/src/VersionEx.h
index f00c75c0f..0c24b5b0f 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -8,7 +8,7 @@
#define SAPPNAME "Notepad3"
#define VERSION_MAJOR 5
#define VERSION_MINOR 21
-#define VERSION_REV 525
+#define VERSION_REV 527
#define VERSION_BUILD 1
#define SCINTILLA_VER 502
#define LEXILLA_VER 502