Merge branch 'Dev_RC1' into Dev_DM_STD

This commit is contained in:
Rainer Kottenhoff 2021-05-27 19:24:58 +02:00
commit c20cb096ea
15 changed files with 366 additions and 299 deletions

View File

@ -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.

View File

@ -1 +1 @@
525
527

View File

@ -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 "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink",
CONTROL "<A>További betűtípusok</A>", 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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();
}

View File

@ -3,7 +3,7 @@
<assemblyIdentity
name="Rizonesoft.Notepad3"
processorArchitecture="*"
version="5.21.525.1"
version="5.21.527.1"
type="win32"
/>
<description>Notepad3 beta</description>

View File

@ -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

View File

@ -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
//=============================================================================
//

View File

@ -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);

View File

@ -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;
}

View File

@ -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));
}

View File

@ -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)

View File

@ -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