From 572fdc6d206edcfbb126877ead43272e85634d17 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 5 Feb 2018 10:53:36 +0100 Subject: [PATCH 1/7] + fix: tidy up menu navigation via keyboard --- src/Notepad3.rc | 106 ++++++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 72ec29299..9a1dad275 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -77,7 +77,7 @@ BEGIN MENUITEM "Save &Copy...\tCtrl+F6", IDM_FILE_SAVECOPY MENUITEM "&Read Only", IDM_FILE_READONLY MENUITEM SEPARATOR - MENUITEM "Set Encryption Passphrase", IDM_SETPASS + MENUITEM "Set Encr&yption Passphrase", IDM_SETPASS MENUITEM SEPARATOR POPUP "&Launch" BEGIN @@ -125,7 +125,7 @@ BEGIN MENUITEM "Propert&ies...", IDM_FILE_PROPERTIES MENUITEM "Create &Desktop Link", IDM_FILE_CREATELINK MENUITEM SEPARATOR - MENUITEM "Browse...\tCtrl+M", IDM_FILE_BROWSE + MENUITEM "&Browse...\tCtrl+M", IDM_FILE_BROWSE POPUP "&Favorites" BEGIN MENUITEM "&Open Favorites...\tAlt+I", IDM_FILE_OPENFAV @@ -143,30 +143,30 @@ BEGIN MENUITEM SEPARATOR MENUITEM "Cu&t\tCtrl+X", IDM_EDIT_CUT MENUITEM "&Copy\tCtrl+C", IDM_EDIT_COPY - MENUITEM "Copy A&ll\tAlt+C", IDM_EDIT_COPYALL - MENUITEM "Copy &Add\tCtrl+E", IDM_EDIT_COPYADD + MENUITEM "C&opy All\tAlt+C", IDM_EDIT_COPYALL + MENUITEM "Cop&y Add\tCtrl+E", IDM_EDIT_COPYADD MENUITEM "&Paste\tCtrl+V", IDM_EDIT_PASTE - MENUITEM "S&wap\tCtrl+K", IDM_EDIT_SWAP - MENUITEM "Delete\tDel", IDM_EDIT_CLEAR + MENUITEM "&Swap\tCtrl+K", IDM_EDIT_SWAP + MENUITEM "&Delete\tDel", IDM_EDIT_CLEAR MENUITEM "Clear Clipboar&d", IDM_EDIT_CLEARCLIPBOARD - MENUITEM "&Select All\tCtrl+A", IDM_EDIT_SELECTALL + MENUITEM "Select &All\tCtrl+A", IDM_EDIT_SELECTALL MENUITEM SEPARATOR POPUP "&Words" BEGIN - MENUITEM "Complete Word\tCtrl+Alt+Enter", IDM_EDIT_COMPLETEWORD + MENUITEM "&Complete Word\tCtrl+Alt+Enter", IDM_EDIT_COMPLETEWORD MENUITEM SEPARATOR - MENUITEM "Cursor Word Left\tCtrl+Left", CMD_CTRLLEFT - MENUITEM "Cursor Word Right\tCtrl+Right", CMD_CTRLRIGHT - MENUITEM "Delete Word Left\tCtrl+Back", CMD_CTRLBACK - MENUITEM "Delete Word Right\tCtrl+Del", CMD_CTRLDEL + MENUITEM "Cursor Word &Left\tCtrl+Left", CMD_CTRLLEFT + MENUITEM "Cursor Word &Right\tCtrl+Right", CMD_CTRLRIGHT + MENUITEM "&Delete Word Left\tCtrl+Back", CMD_CTRLBACK + MENUITEM "Delete &Word Right\tCtrl+Del", CMD_CTRLDEL END - POPUP "L&ines" + POPUP "&Lines" BEGIN MENUITEM "Move &Up\tCtrl+Shift+Up", IDM_EDIT_MOVELINEUP MENUITEM "&Move Down\tCtrl+Shift+Down", IDM_EDIT_MOVELINEDOWN MENUITEM SEPARATOR - MENUITEM "&Cut Line\tCtrl+X,Ctrl+Shift+X", IDM_EDIT_CUTLINE - MENUITEM "C&opy Line\tCtrl+C,Ctrl+Shift+C", IDM_EDIT_COPYLINE + MENUITEM "Cut &Line\tCtrl+X,Ctrl+Shift+X", IDM_EDIT_CUTLINE + MENUITEM "&Copy Line\tCtrl+C,Ctrl+Shift+C", IDM_EDIT_COPYLINE MENUITEM "D&elete Line\tCtrl+Shift+D", IDM_EDIT_DELETELINE MENUITEM "&Duplicate Line\tCtrl+D", IDM_EDIT_DUPLICATELINE MENUITEM SEPARATOR @@ -208,8 +208,8 @@ BEGIN MENUITEM "&Remove Blank Lines\tAlt+R", IDM_EDIT_REMOVEBLANKLINES MENUITEM SEPARATOR MENUITEM "&Modify Lines...\tAlt+M", IDM_EDIT_MODIFYLINES - MENUITEM "Alig&n Lines...\tAlt+J", IDM_EDIT_ALIGN - MENUITEM "S&ort Lines...\tAlt+O", IDM_EDIT_SORTLINES + MENUITEM "&Align Lines...\tAlt+J", IDM_EDIT_ALIGN + MENUITEM "&Sort Lines...\tAlt+O", IDM_EDIT_SORTLINES END POPUP "C&onvert" BEGIN @@ -226,7 +226,7 @@ BEGIN MENUITEM "Ta&bify Indent\tCtrl+Alt+T", IDM_EDIT_CONVERTSPACES2 MENUITEM "Untabi&fy Indent\tCtrl+Alt+S", IDM_EDIT_CONVERTTABS2 END - POPUP "I&nsert" + POPUP "&Insert" BEGIN MENUITEM "&New Line Above\tCtrl+Enter", CMD_CTRLENTER MENUITEM SEPARATOR @@ -234,74 +234,74 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&Encoding Identifier\tCtrl+F8", IDM_EDIT_INSERT_ENCODING MENUITEM SEPARATOR - MENUITEM "Time/Date (&Short Form)\tCtrl+F5", IDM_EDIT_INSERT_SHORTDATE + MENUITEM "&Time/Date (Short Form)\tCtrl+F5", IDM_EDIT_INSERT_SHORTDATE MENUITEM "Time/Date (&Long Form)\tCtrl+Shift+F5", IDM_EDIT_INSERT_LONGDATE - MENUITEM "Update &Timestamps\tShift+F5", CMD_TIMESTAMPS + MENUITEM "&Update Timestamps\tShift+F5", CMD_TIMESTAMPS MENUITEM SEPARATOR MENUITEM "&Filename\tCtrl+F9", IDM_EDIT_INSERT_FILENAME MENUITEM "&Path and Filename\tCtrl+Shift+F9", IDM_EDIT_INSERT_PATHNAME MENUITEM SEPARATOR MENUITEM "&GUID\tCtrl+Shift+.", IDM_EDIT_INSERT_GUID END - POPUP "Spec&ial" + POPUP "&Miscellaneous" BEGIN - MENUITEM "Line Comment (&Toggle)\tCtrl+Q", IDM_EDIT_LINECOMMENT - MENUITEM "Stream &Comment\tCtrl+Shift+Q", IDM_EDIT_STREAMCOMMENT + MENUITEM "&Line Comment (Toggle)\tCtrl+Q", IDM_EDIT_LINECOMMENT + MENUITEM "&Stream Comment\tCtrl+Shift+Q", IDM_EDIT_STREAMCOMMENT MENUITEM SEPARATOR - MENUITEM "URL &Encode\tCtrl+Shift+E", IDM_EDIT_URLENCODE + MENUITEM "&URL Encode\tCtrl+Shift+E", IDM_EDIT_URLENCODE MENUITEM "URL &Decode\tCtrl+Shift+R", IDM_EDIT_URLDECODE MENUITEM SEPARATOR - MENUITEM "Esca&pe C Chars\tCtrl+Alt+E", IDM_EDIT_ESCAPECCHARS + MENUITEM "&Escape C Chars\tCtrl+Alt+E", IDM_EDIT_ESCAPECCHARS MENUITEM "&Unescape C Chars\tCtrl+Alt+R", IDM_EDIT_UNESCAPECCHARS MENUITEM SEPARATOR - MENUITEM "C&har To Hex\tCtrl+Alt+X", IDM_EDIT_CHAR2HEX - MENUITEM "Hex To Cha&r\tCtrl+Alt+C", IDM_EDIT_HEX2CHAR + MENUITEM "&Char To Hex\tCtrl+Alt+X", IDM_EDIT_CHAR2HEX + MENUITEM "&Hex To Char\tCtrl+Alt+C", IDM_EDIT_HEX2CHAR MENUITEM SEPARATOR MENUITEM "&Find Matching Brace\tCtrl+B", IDM_EDIT_FINDMATCHINGBRACE - MENUITEM "&Select To Matching Brace\tCtrl+Shift+B", IDM_EDIT_SELTOMATCHINGBRACE + MENUITEM "Select To &Matching Brace\tCtrl+Shift+B", IDM_EDIT_SELTOMATCHINGBRACE MENUITEM SEPARATOR - MENUITEM "Select To Ne&xt\tCtrl+Alt+F2", IDM_EDIT_SELTONEXT - MENUITEM "Select To Pre&vious\tCtrl+Alt+Shift+F2", IDM_EDIT_SELTOPREV + MENUITEM "Select To &Next\tCtrl+Alt+F2", IDM_EDIT_SELTONEXT + MENUITEM "Select To &Previous\tCtrl+Alt+Shift+F2", IDM_EDIT_SELTOPREV END MENUITEM SEPARATOR - POPUP "Bookmarks" + POPUP "Boo&kmarks" BEGIN - MENUITEM "Toggle\tCtrl+F2", BME_EDIT_BOOKMARKTOGGLE + MENUITEM "&Toggle\tCtrl+F2", BME_EDIT_BOOKMARKTOGGLE MENUITEM SEPARATOR - MENUITEM "Goto Next\tF2", BME_EDIT_BOOKMARKNEXT - MENUITEM "Goto Previous\tShift+F2", BME_EDIT_BOOKMARKPREV + MENUITEM "Goto &Next\tF2", BME_EDIT_BOOKMARKNEXT + MENUITEM "Goto &Previous\tShift+F2", BME_EDIT_BOOKMARKPREV MENUITEM SEPARATOR - MENUITEM "Clear All\tAlt+F2", BME_EDIT_BOOKMARKCLEAR + MENUITEM "&Clear All\tAlt+F2", BME_EDIT_BOOKMARKCLEAR END MENUITEM SEPARATOR MENUITEM "&Find...\tCtrl+F", IDM_EDIT_FIND MENUITEM "Sa&ve Find Text\tAlt+F3", IDM_EDIT_SAVEFIND - MENUITEM "Find Ne&xt\tF3", IDM_EDIT_FINDNEXT - MENUITEM "Find Pre&vious\tShift+F3", IDM_EDIT_FINDPREV + MENUITEM "Find &Next\tF3", IDM_EDIT_FINDNEXT + MENUITEM "Find Previous\tShift+F3", IDM_EDIT_FINDPREV MENUITEM "R&eplace...\tCtrl+H", IDM_EDIT_REPLACE MENUITEM "Replace Ne&xt\tF4", IDM_EDIT_REPLACENEXT MENUITEM "&Goto...\tCtrl+G", IDM_EDIT_GOTOLINE END POPUP "&View" BEGIN - MENUITEM "&Syntax Scheme...\tF12", IDM_VIEW_SCHEME + MENUITEM "Synta&x Scheme...\tF12", IDM_VIEW_SCHEME MENUITEM "&2nd Default Scheme\tShift+F12", IDM_VIEW_USE2NDDEFAULT MENUITEM "&Customize Schemes...\tCtrl+F12", IDM_VIEW_SCHEMECONFIG - MENUITEM "&Global Default Font...\tAlt+F12", IDM_VIEW_FONT - MENUITEM "Current Scheme's &Default Font...\tCtrl+Alt+F12", IDM_VIEW_CURRENTSCHEME + MENUITEM "Global &Default Font...\tAlt+F12", IDM_VIEW_FONT + MENUITEM "Current Sc&heme's Default Font...\tCtrl+Alt+F12", IDM_VIEW_CURRENTSCHEME MENUITEM SEPARATOR MENUITEM "Word W&rap\tCtrl+W", IDM_VIEW_WORDWRAP MENUITEM "&Long Line Marker\tCtrl+Shift+L", IDM_VIEW_LONGLINEMARKER - MENUITEM "Indentation &Guides\tCtrl+Shift+G", IDM_VIEW_SHOWINDENTGUIDES + MENUITEM "Indent&ation Guides\tCtrl+Shift+G", IDM_VIEW_SHOWINDENTGUIDES MENUITEM SEPARATOR MENUITEM "Show &Whitespace\tCtrl+Shift+8", IDM_VIEW_SHOWWHITESPACE MENUITEM "Show Line &Endings\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS - MENUITEM "Show Wrap S&ymbols\tCtrl+Shift+0", IDM_VIEW_WORDWRAPSYMBOLS + MENUITEM "Show Wra&p Symbols\tCtrl+Shift+0", IDM_VIEW_WORDWRAPSYMBOLS MENUITEM SEPARATOR - MENUITEM "Hyperlink Hotspots\tCtrl+Alt+H", IDM_VIEW_HYPERLINKHOTSPOTS - MENUITEM "Visual &Brace Matching\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES - MENUITEM "Highlight C&urrent Line\tCtrl+Shift+I", IDM_VIEW_HILITECURRENTLINE - POPUP "Mark &Occurrences" + MENUITEM "H&yperlink Hotspots\tCtrl+Alt+H", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Visual Brace Matching\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES + MENUITEM "Hi&ghlight Current Line\tCtrl+Shift+I", IDM_VIEW_HILITECURRENTLINE + POPUP "Mar&k Occurrences" BEGIN MENUITEM "&Active", IDM_VIEW_MARKOCCUR_ONOFF MENUITEM SEPARATOR @@ -322,9 +322,9 @@ BEGIN MENUITEM "Code &Folding\tCtrl+Shift+Alt+F", IDM_VIEW_FOLDING MENUITEM "&Toggle All Folds\tCtrl+Shift+F", IDM_VIEW_TOGGLEFOLDS MENUITEM SEPARATOR - MENUITEM "Sh&ow Toolbar", IDM_VIEW_TOOLBAR + MENUITEM "Show Tool&bar", IDM_VIEW_TOOLBAR MENUITEM "C&ustomize Toolbar...", IDM_VIEW_CUSTOMIZETB - MENUITEM "Sh&ow Statusbar", IDM_VIEW_STATUSBAR + MENUITEM "Show &Statusbar", IDM_VIEW_STATUSBAR MENUITEM SEPARATOR MENUITEM "Zoom &In\tCtrl++", IDM_VIEW_ZOOMIN MENUITEM "Zoom &Out\tCtrl+-", IDM_VIEW_ZOOMOUT @@ -338,8 +338,8 @@ BEGIN MENUITEM "&Long Line Settings...", IDM_VIEW_LONGLINESETTINGS MENUITEM "Auto In&dent Text", IDM_VIEW_AUTOINDENTTEXT MENUITEM "Auto Close &HTML/XML\tCtrl+Shift+H", IDM_VIEW_AUTOCLOSETAGS - MENUITEM "Auto Complete Wo&rds", IDM_VIEW_AUTOCOMPLETEWORDS - MENUITEM "&Accelerated Word Navigation", IDM_VIEW_ACCELWORDNAV + MENUITEM "A&uto Complete Words", IDM_VIEW_AUTOCOMPLETEWORDS + MENUITEM "Accelerated Word Navi&gation", IDM_VIEW_ACCELWORDNAV MENUITEM SEPARATOR MENUITEM "&Reuse Window", IDM_VIEW_REUSEWINDOW MENUITEM "Sticky Window &Position", IDM_VIEW_STICKYWINPOS @@ -362,9 +362,9 @@ BEGIN MENUITEM "&Minimize Notepad3", IDM_VIEW_ESCMINIMIZE MENUITEM "E&xit Notepad3", IDM_VIEW_ESCEXIT END - MENUITEM "Sa&ve Before Running Tools", IDM_VIEW_SAVEBEFORERUNNINGTOOLS + MENUITEM "Save &Before Running Tools", IDM_VIEW_SAVEBEFORERUNNINGTOOLS MENUITEM "Remember Recent F&iles", IDM_VIEW_NOSAVERECENT - MENUITEM "Preserve Caret &Position", IDM_VIEW_NOPRESERVECARET + MENUITEM "Preser&ve Caret Position", IDM_VIEW_NOPRESERVECARET MENUITEM "Remember S&earch Strings", IDM_VIEW_NOSAVEFINDREPL MENUITEM SEPARATOR MENUITEM "Save Settings On E&xit", IDM_VIEW_SAVESETTINGS @@ -377,7 +377,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&About...\tShift+F1", IDM_HELP_ABOUT MENUITEM "&Command Line Help", IDM_HELP_CMD - MENUITEM "Check for Updates", IDM_HELP_UPDATECHECK + MENUITEM "Check for &Updates", IDM_HELP_UPDATECHECK END END From 7808a073fe66b369814b1a79fbbecc78e9c7d5c5 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 5 Feb 2018 12:59:59 +0100 Subject: [PATCH 2/7] + fix: paste multi-line clipboard into rectangular selection --- src/Edit.c | 75 +++++++++++++++++++++++++++++++++++++------------- src/Notepad3.c | 4 --- src/SciCall.h | 2 ++ 3 files changed, 58 insertions(+), 23 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index ee284a818..590367a96 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -632,6 +632,7 @@ char* EditGetClipboardText(HWND hwnd,BOOL bCheckEncoding,int* pLineCount,int* pL // BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) { + int token = -1; int lineCount = 0; int lenLastLine = 0; @@ -641,39 +642,72 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) } const int clipLen = lstrlenA(pClip); - const int iCurPos = SciCall_GetCurrentPos(); - const int iAnchorPos = SciCall_GetAnchor(); - const BOOL bIsSelRect = SciCall_IsSelectionRectangle(); - const BOOL bIsSelEmpty = SciCall_IsSelectionEmpty(); + if (bSwapClipBoard) { + if (SciCall_IsSelectionEmpty()) + SciClearClipboard(); + else + SciCall_Copy(); + } - if (bIsSelRect) + if ((clipLen > 0) || !SciCall_IsSelectionEmpty()) { + token = BeginUndoAction(); + } + + if (SciCall_IsSelectionRectangle()) { EditEnterTargetTransaction(); - const int selCount = (int)SendMessage(hwnd, SCI_GETSELECTIONS, 0, 0); + if (lineCount <= 1) { + SciCall_SetMultiPaste(SC_MULTIPASTE_EACH); + SciCall_Paste(); + SciCall_SetMultiPaste(SC_MULTIPASTE_ONCE); + } + else { + const int selCount = (int)SendMessage(hwnd, SCI_GETSELECTIONS, 0, 0) - 1; // except last ln - for (int s = 0; s < selCount; ++s) - { - const int selCaret = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARET, (WPARAM)s, 0); - const int selAnchor = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHOR, (WPARAM)s, 0); + char* pClipLine = pClip; + for (int s = 0; s < selCount; ++s) { + // get lines from clip + char *ln = pClipLine; + int lnLen = 0; + while (*ln != '\0') { + if (*ln == '\n' || *ln == '\r') { + if ((*ln == '\r') && (*(ln + 1) == '\n')) { ++ln; } + ++ln; // next line + break; + } + else { ++ln; ++lnLen; } + } + + const int selCaret = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARET, (WPARAM)s, 0); + const int selAnchor = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHOR, (WPARAM)s, 0); + SciCall_SetTargetRange(selAnchor, selCaret); + SciCall_ReplaceTarget(lnLen, pClipLine); + + pClipLine = ln; + } + + // remove line-break from last line + if (*pClipLine != '\0') { StrTrimA(pClipLine, "\r\n"); } + + // replace last selection + const int selCaret = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARET, (WPARAM)selCount, 0); + const int selAnchor = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHOR, (WPARAM)selCount, 0); SciCall_SetTargetRange(selAnchor, selCaret); - SciCall_ReplaceTarget(clipLen, pClip); + SciCall_ReplaceTarget(lstrlenA(pClipLine), pClipLine); } EditLeaveTargetTransaction(); } - else if (bIsSelEmpty) + else if (SciCall_IsSelectionEmpty()) { SciCall_Paste(); - if (bSwapClipBoard) { - SciClearClipboard(); - } } else { - if (bSwapClipBoard) { - SciCall_Copy(); - } + const int iCurPos = SciCall_GetCurrentPos(); + const int iAnchorPos = SciCall_GetAnchor(); + SciCall_ReplaceSel(pClip); if (bSwapClipBoard) { @@ -682,10 +716,13 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) else EditSelectEx(hwnd, iAnchorPos, iAnchorPos + clipLen); } - else if (iCurPos < iAnchorPos) + else if (iCurPos < iAnchorPos) { EditSelectEx(hwnd, iCurPos, iCurPos); + } } + if (token >= 0) { EndUndoAction(token); } + LocalFree(pClip); return TRUE; } diff --git a/src/Notepad3.c b/src/Notepad3.c index cca2d081a..2ae1817cc 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -2942,9 +2942,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { if (flagPasteBoard) bLastCopyFromMe = TRUE; - int token = BeginUndoAction(); EditPaste(g_hwndEdit, FALSE); - EndUndoAction(token); UpdateToolbar(); UpdateStatusbar(); } @@ -2954,9 +2952,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam) { if (flagPasteBoard) bLastCopyFromMe = TRUE; - int token = BeginUndoAction(); EditPaste(g_hwndEdit, TRUE); - EndUndoAction(token); UpdateToolbar(); UpdateStatusbar(); } diff --git a/src/SciCall.h b/src/SciCall.h index 8715e9a21..7c5a51ec9 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -123,6 +123,8 @@ DeclareSciCallV2(ReplaceTarget, REPLACETARGET, DocPos, length, LPCCH, text); DeclareSciCallV1(SetAnchor, SETANCHOR, DocPos, position); DeclareSciCallV1(SetCurrentPos, SETCURRENTPOS, DocPos, position); +DeclareSciCallV1(SetMultiPaste, SETMULTIPASTE, int, option); + DeclareSciCallV1(GotoPos, GOTOPOS, DocPos, position); DeclareSciCallV1(GotoLine, GOTOLINE, DocPos, line); DeclareSciCallR1(PositionBefore, POSITIONBEFORE, DocPos, DocPos, position); From 78aa6cc1b4711d6433b53baf6139fa24dd492df9 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 5 Feb 2018 16:54:49 +0100 Subject: [PATCH 3/7] + fix: redo/undo on empty/virtual rectangular selection --- src/Edit.c | 27 +++++++++-------------- src/Notepad3.c | 59 +++++++++++++++++++++++++++----------------------- src/SciCall.h | 2 +- 3 files changed, 43 insertions(+), 45 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index 590367a96..c4695b884 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -632,7 +632,6 @@ char* EditGetClipboardText(HWND hwnd,BOOL bCheckEncoding,int* pLineCount,int* pL // BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) { - int token = -1; int lineCount = 0; int lenLastLine = 0; @@ -642,16 +641,9 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) } const int clipLen = lstrlenA(pClip); - if (bSwapClipBoard) { - if (SciCall_IsSelectionEmpty()) - SciClearClipboard(); - else - SciCall_Copy(); - } + int token = BeginUndoAction(); - if ((clipLen > 0) || !SciCall_IsSelectionEmpty()) { - token = BeginUndoAction(); - } + if (bSwapClipBoard) { SciCall_Copy(); } if (SciCall_IsSelectionRectangle()) { @@ -699,16 +691,17 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) EditLeaveTargetTransaction(); } - else if (SciCall_IsSelectionEmpty()) + else // Selection: SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN { - SciCall_Paste(); - } - else { - const int iCurPos = SciCall_GetCurrentPos(); const int iAnchorPos = SciCall_GetAnchor(); - SciCall_ReplaceSel(pClip); + if (SciCall_IsSelectionEmpty()) { + SciCall_Paste(); + } + else { + SciCall_ReplaceSel(pClip); + } if (bSwapClipBoard) { if (iCurPos < iAnchorPos) @@ -721,7 +714,7 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) } } - if (token >= 0) { EndUndoAction(token); } + EndUndoAction(token); LocalFree(pClip); return TRUE; diff --git a/src/Notepad3.c b/src/Notepad3.c index 2ae1817cc..c1c299a0d 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -5401,7 +5401,8 @@ LRESULT MsgNotify(HWND hwnd,WPARAM wParam,LPARAM lParam) if (pnmh->idFrom == IDC_EDIT) { if (pnmh->code == SCN_MODIFIED) { // check for ADDUNDOACTION step - if (scn->modificationType & SC_MOD_CONTAINER) { + if (scn->modificationType & SC_MOD_CONTAINER) + { if (scn->modificationType & SC_PERFORMED_UNDO) { RestoreAction(scn->token, UNDO); } @@ -7330,11 +7331,7 @@ int BeginUndoAction() sel.selMode_undo = (int)SendMessage(g_hwndEdit,SCI_GETSELECTIONMODE,0,0); sel.rectSelVS_undo = (int)SendMessage(g_hwndEdit,SCI_GETVIRTUALSPACEOPTIONS,0,0); - if ((sel.selMode_undo == SC_SEL_STREAM) || (sel.selMode_undo == SC_SEL_LINES)) { - sel.anchorPos_undo = SciCall_GetAnchor(); - sel.curPos_undo = SciCall_GetCurrentPos(); - } - else // SC_SEL_RECTANGLE | SC_SEL_THIN + if (sel.selMode_redo == SC_SEL_RECTANGLE) { sel.anchorPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHOR, 0, 0); sel.curPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARET, 0, 0); @@ -7343,6 +7340,11 @@ int BeginUndoAction() sel.curVS_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, 0, 0); } } + else // SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN + { + sel.anchorPos_undo = SciCall_GetAnchor(); + sel.curPos_undo = SciCall_GetCurrentPos(); + } token = UndoRedoActionMap(-1, &sel); if (token >= 0) { SendMessage(g_hwndEdit, SCI_BEGINUNDOACTION, 0, 0); @@ -7367,11 +7369,7 @@ void EndUndoAction(int token) sel.selMode_redo = (int)SendMessage(g_hwndEdit, SCI_GETSELECTIONMODE, 0, 0); sel.rectSelVS_redo = (int)SendMessage(g_hwndEdit, SCI_GETVIRTUALSPACEOPTIONS, 0, 0); - if ((sel.selMode_redo == SC_SEL_STREAM) || (sel.selMode_redo == SC_SEL_LINES)) { - sel.anchorPos_redo = SciCall_GetAnchor(); - sel.curPos_redo = SciCall_GetCurrentPos(); - } - else // SC_SEL_RECTANGLE | SC_SEL_THIN + if (sel.selMode_redo == SC_SEL_RECTANGLE) { sel.anchorPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHOR, 0, 0); sel.curPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARET, 0, 0); @@ -7380,6 +7378,11 @@ void EndUndoAction(int token) sel.curVS_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, 0, 0); } } + else // SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN + { + sel.anchorPos_redo = SciCall_GetAnchor(); + sel.curPos_redo = SciCall_GetCurrentPos(); + } } UndoRedoActionMap(token,&sel); // set with redo action filled SendMessage(g_hwndEdit, SCI_ENDUNDOACTION, 0, 0); @@ -7395,13 +7398,13 @@ void EndUndoAction(int token) void RestoreAction(int token, DoAction doAct) { UndoRedoSelection_t sel = { -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0 }; - if (UndoRedoActionMap(token,&sel) >= 0) + if (UndoRedoActionMap(token, &sel) >= 0) { - const int anchorPos = (doAct == UNDO ? sel.anchorPos_undo : sel.anchorPos_redo); - const int currPos = (doAct == UNDO ? sel.curPos_undo : sel.curPos_redo); - // we are inside undo/redo transaction, so do delayed PostMessage() instead of SendMessage() - #define ISSUE_MESSAGE PostMessage + #define ISSUE_MESSAGE PostMessage + + const int anchorPos = (doAct == UNDO ? sel.anchorPos_undo : sel.anchorPos_redo); + const int currPos = (doAct == UNDO ? sel.curPos_undo : sel.curPos_redo); // Ensure that the first and last lines of a selection are always unfolded // This needs to be done _before_ the SCI_SETSEL message @@ -7410,16 +7413,14 @@ void RestoreAction(int token, DoAction doAct) ISSUE_MESSAGE(g_hwndEdit, SCI_ENSUREVISIBLE, anchorPosLine, 0); if (anchorPosLine != currPosLine) { ISSUE_MESSAGE(g_hwndEdit, SCI_ENSUREVISIBLE, currPosLine, 0); } - const int selectionMode = (doAct == UNDO ? sel.selMode_undo : sel.selMode_redo); - ISSUE_MESSAGE(g_hwndEdit,SCI_SETSELECTIONMODE,(WPARAM)selectionMode,0); - const int virtualSpaceOpt = (doAct == UNDO ? sel.rectSelVS_undo : sel.rectSelVS_redo); - ISSUE_MESSAGE(g_hwndEdit,SCI_SETVIRTUALSPACEOPTIONS,(WPARAM)virtualSpaceOpt,0); + ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); // prepare - not needed ? - if ((selectionMode == SC_SEL_STREAM) || (selectionMode == SC_SEL_LINES)) { - ISSUE_MESSAGE(g_hwndEdit,SCI_SETANCHOR,(WPARAM)anchorPos,0); - ISSUE_MESSAGE(g_hwndEdit,SCI_SETCURRENTPOS,(WPARAM)currPos,0); - } - else // SC_SEL_RECTANGLE | SC_SEL_THIN + const int selectionMode = (doAct == UNDO ? sel.selMode_undo : sel.selMode_redo); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETSELECTIONMODE, (WPARAM)selectionMode, 0); + const int virtualSpaceOpt = (doAct == UNDO ? sel.rectSelVS_undo : sel.rectSelVS_redo); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (WPARAM)virtualSpaceOpt, 0); + + if (sel.selMode_redo == SC_SEL_RECTANGLE) { ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHOR, (WPARAM)anchorPos, 0); ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARET, (WPARAM)currPos, 0); @@ -7430,9 +7431,13 @@ void RestoreAction(int token, DoAction doAct) ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE, (WPARAM)currVS, 0); } } - ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); + else // SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN + { + ISSUE_MESSAGE(g_hwndEdit, SCI_SETANCHOR, (WPARAM)anchorPos, 0); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETCURRENTPOS, (WPARAM)currPos, 0); + } - #undef ISSUE_MASSAGE + #undef ISSUE_MASSAGE } } diff --git a/src/SciCall.h b/src/SciCall.h index 7c5a51ec9..a505d1984 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -240,7 +240,7 @@ DeclareSciCallV1(SetTechnology, SETTECHNOLOGY, int, technology); // // -#define SciClearClipboard() SciCall_CopyText(0, NULL) +#define SciClearClipboard() SciCall_CopyText(0, "") #define IsSingleLineSelection() \ (SciCall_LineFromPosition(SciCall_GetCurrentPos()) == SciCall_LineFromPosition(SciCall_GetAnchor())) From 29536b70bf46afe8279dd7a956f30e26034ee64a Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 5 Feb 2018 18:35:06 +0100 Subject: [PATCH 4/7] + fix: (No.: II) redo/undo on empty/virtual rectangular selection --- src/Notepad3.c | 63 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/src/Notepad3.c b/src/Notepad3.c index c1c299a0d..a462c8699 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -7331,19 +7331,23 @@ int BeginUndoAction() sel.selMode_undo = (int)SendMessage(g_hwndEdit,SCI_GETSELECTIONMODE,0,0); sel.rectSelVS_undo = (int)SendMessage(g_hwndEdit,SCI_GETVIRTUALSPACEOPTIONS,0,0); - if (sel.selMode_redo == SC_SEL_RECTANGLE) + switch (sel.selMode_undo) { + case SC_SEL_RECTANGLE: sel.anchorPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHOR, 0, 0); sel.curPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARET, 0, 0); - if ((sel.rectSelVS_undo & SCVS_RECTANGULARSELECTION) != 0) { + if (sel.rectSelVS_undo & SCVS_RECTANGULARSELECTION) { sel.anchorVS_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE, 0, 0); sel.curVS_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, 0, 0); } - } - else // SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN - { + break; + case SC_SEL_LINES: + case SC_SEL_STREAM: + case SC_SEL_THIN: + default: sel.anchorPos_undo = SciCall_GetAnchor(); sel.curPos_undo = SciCall_GetCurrentPos(); + break; } token = UndoRedoActionMap(-1, &sel); if (token >= 0) { @@ -7369,19 +7373,23 @@ void EndUndoAction(int token) sel.selMode_redo = (int)SendMessage(g_hwndEdit, SCI_GETSELECTIONMODE, 0, 0); sel.rectSelVS_redo = (int)SendMessage(g_hwndEdit, SCI_GETVIRTUALSPACEOPTIONS, 0, 0); - if (sel.selMode_redo == SC_SEL_RECTANGLE) + switch (sel.selMode_redo) { + case SC_SEL_RECTANGLE: sel.anchorPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHOR, 0, 0); sel.curPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARET, 0, 0); - if ((sel.rectSelVS_redo & SCVS_RECTANGULARSELECTION) != 0) { + if (sel.rectSelVS_redo & SCVS_RECTANGULARSELECTION) { sel.anchorVS_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE, 0, 0); sel.curVS_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, 0, 0); } - } - else // SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN - { + break; + case SC_SEL_LINES: + case SC_SEL_STREAM: + case SC_SEL_THIN: + default: sel.anchorPos_redo = SciCall_GetAnchor(); sel.curPos_redo = SciCall_GetCurrentPos(); + break; } } UndoRedoActionMap(token,&sel); // set with redo action filled @@ -7398,44 +7406,49 @@ void EndUndoAction(int token) void RestoreAction(int token, DoAction doAct) { UndoRedoSelection_t sel = { -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0 }; - if (UndoRedoActionMap(token, &sel) >= 0) + if (UndoRedoActionMap(token, &sel) >= 0) { // we are inside undo/redo transaction, so do delayed PostMessage() instead of SendMessage() #define ISSUE_MESSAGE PostMessage - const int anchorPos = (doAct == UNDO ? sel.anchorPos_undo : sel.anchorPos_redo); - const int currPos = (doAct == UNDO ? sel.curPos_undo : sel.curPos_redo); + const int _anchorPos = (doAct == UNDO ? sel.anchorPos_undo : sel.anchorPos_redo); + const int _curPos = (doAct == UNDO ? sel.curPos_undo : sel.curPos_redo); // Ensure that the first and last lines of a selection are always unfolded // This needs to be done _before_ the SCI_SETSEL message - const int anchorPosLine = SciCall_LineFromPosition(anchorPos); - const int currPosLine = SciCall_LineFromPosition(currPos); + const int anchorPosLine = SciCall_LineFromPosition(_anchorPos); + const int currPosLine = SciCall_LineFromPosition(_curPos); ISSUE_MESSAGE(g_hwndEdit, SCI_ENSUREVISIBLE, anchorPosLine, 0); if (anchorPosLine != currPosLine) { ISSUE_MESSAGE(g_hwndEdit, SCI_ENSUREVISIBLE, currPosLine, 0); } - ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); // prepare - not needed ? + //ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); // prepare - not needed ? const int selectionMode = (doAct == UNDO ? sel.selMode_undo : sel.selMode_redo); ISSUE_MESSAGE(g_hwndEdit, SCI_SETSELECTIONMODE, (WPARAM)selectionMode, 0); const int virtualSpaceOpt = (doAct == UNDO ? sel.rectSelVS_undo : sel.rectSelVS_redo); ISSUE_MESSAGE(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (WPARAM)virtualSpaceOpt, 0); - if (sel.selMode_redo == SC_SEL_RECTANGLE) + switch (selectionMode) { - ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHOR, (WPARAM)anchorPos, 0); - ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARET, (WPARAM)currPos, 0); - if ((virtualSpaceOpt & SCVS_RECTANGULARSELECTION) != 0) { + case SC_SEL_RECTANGLE: + ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHOR, (WPARAM)_anchorPos, 0); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARET, (WPARAM)_curPos, 0); + if (virtualSpaceOpt & SCVS_RECTANGULARSELECTION) { int anchorVS = (doAct == UNDO ? sel.anchorVS_undo : sel.anchorVS_redo); int currVS = (doAct == UNDO ? sel.curVS_undo : sel.curVS_redo); ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE, (WPARAM)anchorVS, 0); ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE, (WPARAM)currVS, 0); } + break; + case SC_SEL_LINES: + case SC_SEL_STREAM: + case SC_SEL_THIN: + default: + ISSUE_MESSAGE(g_hwndEdit, SCI_SETANCHOR, (WPARAM)_anchorPos, 0); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETCURRENTPOS, (WPARAM)_curPos, 0); + break; } - else // SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN - { - ISSUE_MESSAGE(g_hwndEdit, SCI_SETANCHOR, (WPARAM)anchorPos, 0); - ISSUE_MESSAGE(g_hwndEdit, SCI_SETCURRENTPOS, (WPARAM)currPos, 0); - } + //ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); #undef ISSUE_MASSAGE } From 6944e0af7ba013793ce16d348c873473d04a8f15 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Tue, 6 Feb 2018 11:38:13 +0100 Subject: [PATCH 5/7] + fix: (final?) copy/paste and redo/undo on empty/virtual rectangular selection --- src/Edit.c | 112 +++++++++++++++++++++++++++++++++---------------- src/Notepad3.c | 78 ++++++++++++++++++++-------------- src/Notepad3.h | 3 ++ src/SciCall.h | 22 ++++++---- 4 files changed, 140 insertions(+), 75 deletions(-) diff --git a/src/Edit.c b/src/Edit.c index c4695b884..d1488c401 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -647,6 +647,7 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) if (SciCall_IsSelectionRectangle()) { + IgnoreNotifyChangeEvent(); EditEnterTargetTransaction(); if (lineCount <= 1) { @@ -655,53 +656,92 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) SciCall_SetMultiPaste(SC_MULTIPASTE_ONCE); } else { - const int selCount = (int)SendMessage(hwnd, SCI_GETSELECTIONS, 0, 0) - 1; // except last ln + const int selCount = (int)SendMessage(hwnd, SCI_GETSELECTIONS, 0, 0); char* pClipLine = pClip; + + // remove line-break from last line + if (*pClipLine != '\0') { StrTrimA(pClipLine, "\r\n"); } + for (int s = 0; s < selCount; ++s) { // get lines from clip char *ln = pClipLine; int lnLen = 0; while (*ln != '\0') { - if (*ln == '\n' || *ln == '\r') { - if ((*ln == '\r') && (*(ln + 1) == '\n')) { ++ln; } - ++ln; // next line - break; + if (s < (selCount - 1)) { + if (*ln == '\n' || *ln == '\r') { + if ((*ln == '\r') && (*(ln + 1) == '\n')) { ++ln; } + ++ln; // next line + break; + } + else { ++ln; ++lnLen; } } - else { ++ln; ++lnLen; } + else { ++ln; ++lnLen; } // last line } - const int selCaret = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARET, (WPARAM)s, 0); - const int selAnchor = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHOR, (WPARAM)s, 0); - SciCall_SetTargetRange(selAnchor, selCaret); - SciCall_ReplaceTarget(lnLen, pClipLine); + const int selCaretPos = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARET, (WPARAM)s, 0); + const int selAnchorPos = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHOR, (WPARAM)s, 0); - pClipLine = ln; + int virtualSpaceLen = 0; + int selTargetStart = 0; + int selTargetEnd = 0; + if (selCaretPos < selAnchorPos) { + selTargetStart = selCaretPos; + selTargetEnd = selAnchorPos; + virtualSpaceLen = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARETVIRTUALSPACE, (WPARAM)s, 0); + } + else { + selTargetStart = selAnchorPos; + selTargetEnd = selCaretPos; + virtualSpaceLen = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHORVIRTUALSPACE, (WPARAM)s, 0); + } + + if (virtualSpaceLen > 0) { + char* pPadStr = LocalAlloc(LPTR, (virtualSpaceLen + clipLen + 1) * sizeof(char)); + if (pPadStr) { + SIZE_T size = LocalSize(pPadStr) - sizeof(char); + FillMemory(pPadStr, virtualSpaceLen, ' '); + pPadStr[virtualSpaceLen] = '\0'; + StringCchCatNA(pPadStr, size, pClipLine, lnLen); + SciCall_SetTargetRange(selTargetStart, selTargetEnd); + SciCall_ReplaceTarget(lstrlenA(pPadStr), pPadStr); + LocalFree(pPadStr); + } + else { + SciCall_SetTargetRange(selTargetStart, selTargetEnd); + SciCall_ReplaceTarget(lnLen, pClipLine); + } + } + else // no virtual space to pad + { + SciCall_SetTargetRange(selTargetStart, selTargetEnd); + SciCall_ReplaceTarget(lnLen, pClipLine); + } + + SendMessage(hwnd, SCI_SETSELECTIONNCARET, (WPARAM)s, (LPARAM)selTargetStart); + SendMessage(hwnd, SCI_SETSELECTIONNANCHOR, (WPARAM)s, (LPARAM)selTargetStart); + if (virtualSpaceLen > 0) { + SendMessage(hwnd, SCI_SETSELECTIONNCARETVIRTUALSPACE, (WPARAM)s, (LPARAM)virtualSpaceLen); + SendMessage(hwnd, SCI_SETSELECTIONNANCHORVIRTUALSPACE, (WPARAM)s, (LPARAM)virtualSpaceLen); + } + + pClipLine = ln; // next clip line } - - // remove line-break from last line - if (*pClipLine != '\0') { StrTrimA(pClipLine, "\r\n"); } - - // replace last selection - const int selCaret = (int)SendMessage(hwnd, SCI_GETSELECTIONNCARET, (WPARAM)selCount, 0); - const int selAnchor = (int)SendMessage(hwnd, SCI_GETSELECTIONNANCHOR, (WPARAM)selCount, 0); - SciCall_SetTargetRange(selAnchor, selCaret); - SciCall_ReplaceTarget(lstrlenA(pClipLine), pClipLine); } EditLeaveTargetTransaction(); + ObserveNotifyChangeEvent(); + } else // Selection: SC_SEL_STREAM, SC_SEL_LINES, SC_SEL_THIN { const int iCurPos = SciCall_GetCurrentPos(); const int iAnchorPos = SciCall_GetAnchor(); - if (SciCall_IsSelectionEmpty()) { + if (SciCall_IsSelectionEmpty()) SciCall_Paste(); - } - else { + else SciCall_ReplaceSel(pClip); - } if (bSwapClipBoard) { if (iCurPos < iAnchorPos) @@ -709,7 +749,8 @@ BOOL EditPaste(HWND hwnd, BOOL bSwapClipBoard) else EditSelectEx(hwnd, iAnchorPos, iAnchorPos + clipLen); } - else if (iCurPos < iAnchorPos) { + else if (iCurPos < iAnchorPos) + { EditSelectEx(hwnd, iCurPos, iCurPos); } } @@ -3176,14 +3217,14 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) } for (iLine = iLineStart; iLine <= iLineEnd; iLine++) { - int iPos = SciCall_GetLineEndPosition(iLine); + const int iPos = SciCall_GetLineEndPosition(iLine); iMaxColumn = max(iMaxColumn, SciCall_GetColumn(iPos)); } } else { - int iCurPos = SciCall_GetCurrentPos(); - int iAnchorPos = SciCall_GetAnchor(); + const int iCurPos = SciCall_GetCurrentPos(); + const int iAnchorPos = SciCall_GetAnchor(); iRcCurLine = SciCall_LineFromPosition(iCurPos); iRcAnchorLine = SciCall_LineFromPosition(iAnchorPos); @@ -3206,16 +3247,17 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) } pmszPadStr = LocalAlloc(LPTR, (iMaxColumn + 2) * sizeof(char)); - SIZE_T size = LocalSize(pmszPadStr) - sizeof(char); if (pmszPadStr) { + SIZE_T size = LocalSize(pmszPadStr) - sizeof(char); + FillMemory(pmszPadStr, size, ' '); pmszPadStr[size] = '\0'; - if (!bNoUndoGroup) + if (!bNoUndoGroup) { token = BeginUndoAction(); - + } IgnoreNotifyChangeEvent(); EditEnterTargetTransaction(); @@ -3243,15 +3285,15 @@ void EditPadWithSpaces(HWND hwnd,BOOL bSkipEmpty,BOOL bNoUndoGroup) pmszPadStr[iPadLen] = ' '; } + LocalFree(pmszPadStr); + EditLeaveTargetTransaction(); ObserveNotifyChangeEvent(); - - if (pmszPadStr) - LocalFree(pmszPadStr); } - if (!bNoUndoGroup && (token >= 0)) + if (!bNoUndoGroup && (token >= 0)) { EndUndoAction(token); + } if (!bIsRectangular && (SciCall_LineFromPosition(iSelStart) != SciCall_LineFromPosition(iSelEnd))) { diff --git a/src/Notepad3.c b/src/Notepad3.c index a462c8699..5c122872f 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -975,9 +975,9 @@ LRESULT CALLBACK MainWndProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) if (!bDenyVirtualSpaceAccess) { if (GetAsyncKeyState(VK_MENU) & SHRT_MIN) // ALT-KEY DOWN - SendMessage(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (SCVS_RECTANGULARSELECTION | SCVS_USERACCESSIBLE), 0); + SendMessage(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (SCVS_RECTANGULARSELECTION | SCVS_NOWRAPLINESTART | SCVS_USERACCESSIBLE), 0); else - SendMessage(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, SCVS_RECTANGULARSELECTION, 0); + SendMessage(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (SCVS_RECTANGULARSELECTION | SCVS_NOWRAPLINESTART), 0); } switch(umsg) @@ -1198,7 +1198,8 @@ LRESULT MsgCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) // Properties SendMessage(g_hwndEdit, SCI_SETYCARETPOLICY, CARET_SLOP | CARET_EVEN | CARET_STRICT, iCurrentLineVerticalSlop); - SendMessage(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (bDenyVirtualSpaceAccess ? SCVS_NONE : SCVS_RECTANGULARSELECTION), 0); + SendMessage(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, + (bDenyVirtualSpaceAccess ? SCVS_NONE : (SCVS_RECTANGULARSELECTION | SCVS_NOWRAPLINESTART)), 0); // Tabs SendMessage(g_hwndEdit,SCI_SETUSETABS,!bTabsAsSpaces,0); @@ -7327,13 +7328,14 @@ void InvalidateSelections() int BeginUndoAction() { int token = -1; - UndoRedoSelection_t sel = { -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0 }; + UndoRedoSelection_t sel = INIT_UNDOREDOSEL; sel.selMode_undo = (int)SendMessage(g_hwndEdit,SCI_GETSELECTIONMODE,0,0); sel.rectSelVS_undo = (int)SendMessage(g_hwndEdit,SCI_GETVIRTUALSPACEOPTIONS,0,0); switch (sel.selMode_undo) { case SC_SEL_RECTANGLE: + case SC_SEL_THIN: sel.anchorPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHOR, 0, 0); sel.curPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARET, 0, 0); if (sel.rectSelVS_undo & SCVS_RECTANGULARSELECTION) { @@ -7341,12 +7343,12 @@ int BeginUndoAction() sel.curVS_undo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, 0, 0); } break; + case SC_SEL_LINES: case SC_SEL_STREAM: - case SC_SEL_THIN: default: - sel.anchorPos_undo = SciCall_GetAnchor(); - sel.curPos_undo = SciCall_GetCurrentPos(); + sel.anchorPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETANCHOR, 0, 0); + sel.curPos_undo = (int)SendMessage(g_hwndEdit, SCI_GETCURRENTPOS, 0, 0); break; } token = UndoRedoActionMap(-1, &sel); @@ -7367,7 +7369,7 @@ int BeginUndoAction() void EndUndoAction(int token) { if (token >= 0) { - UndoRedoSelection_t sel = { -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0 }; + UndoRedoSelection_t sel = INIT_UNDOREDOSEL; if (UndoRedoActionMap(token, &sel) >= 0) { sel.selMode_redo = (int)SendMessage(g_hwndEdit, SCI_GETSELECTIONMODE, 0, 0); @@ -7376,6 +7378,7 @@ void EndUndoAction(int token) switch (sel.selMode_redo) { case SC_SEL_RECTANGLE: + case SC_SEL_THIN: sel.anchorPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONANCHOR, 0, 0); sel.curPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARET, 0, 0); if (sel.rectSelVS_redo & SCVS_RECTANGULARSELECTION) { @@ -7383,12 +7386,12 @@ void EndUndoAction(int token) sel.curVS_redo = (int)SendMessage(g_hwndEdit, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, 0, 0); } break; + case SC_SEL_LINES: case SC_SEL_STREAM: - case SC_SEL_THIN: default: - sel.anchorPos_redo = SciCall_GetAnchor(); - sel.curPos_redo = SciCall_GetCurrentPos(); + sel.anchorPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETANCHOR, 0, 0); + sel.curPos_redo = (int)SendMessage(g_hwndEdit, SCI_GETCURRENTPOS, 0, 0); break; } } @@ -7405,12 +7408,15 @@ void EndUndoAction(int token) // void RestoreAction(int token, DoAction doAct) { - UndoRedoSelection_t sel = { -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0 }; + UndoRedoSelection_t sel = INIT_UNDOREDOSEL; + if (UndoRedoActionMap(token, &sel) >= 0) { // we are inside undo/redo transaction, so do delayed PostMessage() instead of SendMessage() #define ISSUE_MESSAGE PostMessage + ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); // prepare - not needed ? + const int _anchorPos = (doAct == UNDO ? sel.anchorPos_undo : sel.anchorPos_redo); const int _curPos = (doAct == UNDO ? sel.curPos_undo : sel.curPos_redo); @@ -7421,33 +7427,45 @@ void RestoreAction(int token, DoAction doAct) ISSUE_MESSAGE(g_hwndEdit, SCI_ENSUREVISIBLE, anchorPosLine, 0); if (anchorPosLine != currPosLine) { ISSUE_MESSAGE(g_hwndEdit, SCI_ENSUREVISIBLE, currPosLine, 0); } - //ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); // prepare - not needed ? const int selectionMode = (doAct == UNDO ? sel.selMode_undo : sel.selMode_redo); ISSUE_MESSAGE(g_hwndEdit, SCI_SETSELECTIONMODE, (WPARAM)selectionMode, 0); const int virtualSpaceOpt = (doAct == UNDO ? sel.rectSelVS_undo : sel.rectSelVS_redo); ISSUE_MESSAGE(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, (WPARAM)virtualSpaceOpt, 0); + // independant from selection mode + ISSUE_MESSAGE(g_hwndEdit, SCI_SETANCHOR, (WPARAM)_anchorPos, 0); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETCURRENTPOS, (WPARAM)_curPos, 0); + switch (selectionMode) { - case SC_SEL_RECTANGLE: + case SC_SEL_RECTANGLE: ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHOR, (WPARAM)_anchorPos, 0); ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARET, (WPARAM)_curPos, 0); + // fall-through + + case SC_SEL_THIN: if (virtualSpaceOpt & SCVS_RECTANGULARSELECTION) { int anchorVS = (doAct == UNDO ? sel.anchorVS_undo : sel.anchorVS_redo); int currVS = (doAct == UNDO ? sel.curVS_undo : sel.curVS_redo); - ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE, (WPARAM)anchorVS, 0); - ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE, (WPARAM)currVS, 0); + if ((anchorVS != 0) || (currVS != 0)) { + ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE, (WPARAM)anchorVS, 0); + ISSUE_MESSAGE(g_hwndEdit, SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE, (WPARAM)currVS, 0); + } } break; + case SC_SEL_LINES: case SC_SEL_STREAM: - case SC_SEL_THIN: default: - ISSUE_MESSAGE(g_hwndEdit, SCI_SETANCHOR, (WPARAM)_anchorPos, 0); - ISSUE_MESSAGE(g_hwndEdit, SCI_SETCURRENTPOS, (WPARAM)_curPos, 0); + // nothing to do herer break; } + + // set current state + ISSUE_MESSAGE(g_hwndEdit, SCI_SETVIRTUALSPACEOPTIONS, + (bDenyVirtualSpaceAccess ? SCVS_NONE : (SCVS_RECTANGULARSELECTION | SCVS_NOWRAPLINESTART)), 0); + //ISSUE_MESSAGE(g_hwndEdit, SCI_CANCEL, 0, 0); #undef ISSUE_MASSAGE @@ -7462,8 +7480,7 @@ void RestoreAction(int token, DoAction doAct) // int UndoRedoActionMap(int token, UndoRedoSelection_t* selection) { - if (UndoRedoSelectionUTArray == NULL) - return -1; + if (UndoRedoSelectionUTArray == NULL) { return -1; } static unsigned int iTokenCnt = 0; @@ -7472,32 +7489,31 @@ int UndoRedoActionMap(int token, UndoRedoSelection_t* selection) if (selection == NULL) { // reset / clear - SendMessage(g_hwndEdit,SCI_EMPTYUNDOBUFFER,0,0); + SendMessage(g_hwndEdit, SCI_EMPTYUNDOBUFFER, 0, 0); utarray_clear(UndoRedoSelectionUTArray); - utarray_init(UndoRedoSelectionUTArray,&UndoRedoSelection_icd); + utarray_init(UndoRedoSelectionUTArray, &UndoRedoSelection_icd); iTokenCnt = 0U; return -1; } - if (!(BOOL)SendMessage(g_hwndEdit,SCI_GETUNDOCOLLECTION,0,0)) { - return -1; - } + if (!SciCall_GetUndoCollection()) { return -1; } // get or set map item request ? - if (token >= 0 && utoken < iTokenCnt) { + if ((token >= 0) && (utoken < iTokenCnt)) + { if (selection->anchorPos_undo < 0) { // this is a get request - *selection = *(UndoRedoSelection_t*)utarray_eltptr(UndoRedoSelectionUTArray,utoken); + *selection = *(UndoRedoSelection_t*)utarray_eltptr(UndoRedoSelectionUTArray, utoken); } else { // this is a set request (fill redo pos) - utarray_insert(UndoRedoSelectionUTArray,(void*)selection,utoken); + utarray_insert(UndoRedoSelectionUTArray, (void*)selection, utoken); } // don't clear map item here (token used in redo/undo again) } - else if (token < 0) { + else if (token < 0) { // set map new item request - utarray_insert(UndoRedoSelectionUTArray,(void*)selection,iTokenCnt); + utarray_insert(UndoRedoSelectionUTArray, (void*)selection, iTokenCnt); token = (int)iTokenCnt; iTokenCnt = (iTokenCnt < INT_MAX) ? (iTokenCnt + 1) : 0U; // round robin next } diff --git a/src/Notepad3.h b/src/Notepad3.h index 4a05ab5dd..947a37edd 100644 --- a/src/Notepad3.h +++ b/src/Notepad3.h @@ -70,6 +70,9 @@ typedef struct _undoSel } UndoRedoSelection_t; +#define INIT_UNDOREDOSEL { SC_SEL_STREAM, -1, -1, 0, 0, 0, SC_SEL_STREAM, -1, -1, 0, 0, 0 } + + typedef enum { UNDO = TRUE, REDO = FALSE diff --git a/src/SciCall.h b/src/SciCall.h index a505d1984..2a6ebbbdd 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -97,7 +97,6 @@ __forceinline LRESULT SciCall_##fn(type1 var1, type2 var2) { \ // // Selection, positions and information // -// DeclareSciCallR0(IsDocModified, GETMODIFY, bool); DeclareSciCallR0(IsSelectionEmpty, GETSELECTIONEMPTY, bool); DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool); @@ -152,7 +151,6 @@ DeclareSciCallR0(GetCharacterPointer, GETCHARACTERPOINTER, LPCCH); // // Scrolling and automatic scrolling // -// DeclareSciCallV0(ChooseCaret, CHOOSECARETX); DeclareSciCallV0(ScrollCaret, SCROLLCARET); DeclareSciCallV2(SetXCaretPolicy, SETXCARETPOLICY, int, caretPolicy, int, caretSlop); @@ -164,7 +162,6 @@ DeclareSciCallV2(ScrollRange, SCROLLRANGE, DocPos, secondaryPos, DocPos, primary // // Style definition // -// DeclareSciCallR1(StyleGetFore, STYLEGETFORE, COLORREF, int, styleNumber); DeclareSciCallR1(StyleGetBack, STYLEGETBACK, COLORREF, int, styleNumber); DeclareSciCallV2(SetStyling, SETSTYLING, DocPosCR, length, int, style); @@ -175,7 +172,6 @@ DeclareSciCallR0(GetEndStyled, GETENDSTYLED, int); // // Margins // -// DeclareSciCallV2(SetMarginType, SETMARGINTYPEN, int, margin, int, type); DeclareSciCallV2(SetMarginWidth, SETMARGINWIDTHN, int, margin, int, pixelWidth); DeclareSciCallV2(SetMarginMask, SETMARGINMASKN, int, margin, int, mask); @@ -188,7 +184,6 @@ DeclareSciCallV2(SetFoldMarginHiColour, SETFOLDMARGINHICOLOUR, bool, useSetting, // // Markers // -// DeclareSciCallV2(MarkerDefine, MARKERDEFINE, int, markerNumber, int, markerSymbols); DeclareSciCallV2(MarkerSetFore, MARKERSETFORE, int, markerNumber, COLORREF, colour); DeclareSciCallV2(MarkerSetBack, MARKERSETBACK, int, markerNumber, COLORREF, colour); @@ -198,7 +193,6 @@ DeclareSciCallV2(MarkerSetBack, MARKERSETBACK, int, markerNumber, COLORREF, colo // // Indicators // -// DeclareSciCallR2(IndicatorValueAt, INDICATORVALUEAT, int, int, indicatorID, DocPos, position); DeclareSciCallV2(IndicatorFillRange, INDICATORFILLRANGE, DocPos, position, DocPos, length); @@ -221,15 +215,21 @@ DeclareSciCallV1(EnsureVisible, ENSUREVISIBLE, int, line); // // Lexer // -// DeclareSciCallV2(SetProperty, SETPROPERTY, const char *, key, const char *, value); + +//============================================================================= +// +// Undo/Redo Stack +// +DeclareSciCallR0(GetUndoCollection, GETUNDOCOLLECTION, bool); + + //============================================================================= // // SetTechnology // -// DeclareSciCallV1(SetBufferedDraw, SETBUFFEREDDRAW, bool, value); DeclareSciCallV1(SetTechnology, SETTECHNOLOGY, int, technology); @@ -238,7 +238,6 @@ DeclareSciCallV1(SetTechnology, SETTECHNOLOGY, int, technology); // // Utilities // -// #define SciClearClipboard() SciCall_CopyText(0, "") @@ -247,4 +246,9 @@ DeclareSciCallV1(SetTechnology, SETTECHNOLOGY, int, technology); #define GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1) + + + +//============================================================================= + #endif //_NP3_SCICALL_H_ From f723b14cbc14fb2ad641bfd181ad8d66bba1a77b Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Tue, 6 Feb 2018 12:33:34 +0100 Subject: [PATCH 6/7] + enh: changed tab-stop order while navigating several dialogs --- src/Notepad3.rc | 198 ++++++++++++++++++++++++------------------------ 1 file changed, 101 insertions(+), 97 deletions(-) diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 9a1dad275..c37ce922a 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -12,7 +12,7 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Englisch (USA) resources +// English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US @@ -77,7 +77,7 @@ BEGIN MENUITEM "Save &Copy...\tCtrl+F6", IDM_FILE_SAVECOPY MENUITEM "&Read Only", IDM_FILE_READONLY MENUITEM SEPARATOR - MENUITEM "Set Encr&yption Passphrase", IDM_SETPASS + MENUITEM "Set Encr&yption Passphrase", IDM_SETPASS MENUITEM SEPARATOR POPUP "&Launch" BEGIN @@ -125,7 +125,7 @@ BEGIN MENUITEM "Propert&ies...", IDM_FILE_PROPERTIES MENUITEM "Create &Desktop Link", IDM_FILE_CREATELINK MENUITEM SEPARATOR - MENUITEM "&Browse...\tCtrl+M", IDM_FILE_BROWSE + MENUITEM "&Browse...\tCtrl+M", IDM_FILE_BROWSE POPUP "&Favorites" BEGIN MENUITEM "&Open Favorites...\tAlt+I", IDM_FILE_OPENFAV @@ -266,18 +266,18 @@ BEGIN MENUITEM SEPARATOR POPUP "Boo&kmarks" BEGIN - MENUITEM "&Toggle\tCtrl+F2", BME_EDIT_BOOKMARKTOGGLE + MENUITEM "&Toggle\tCtrl+F2", BME_EDIT_BOOKMARKTOGGLE MENUITEM SEPARATOR - MENUITEM "Goto &Next\tF2", BME_EDIT_BOOKMARKNEXT - MENUITEM "Goto &Previous\tShift+F2", BME_EDIT_BOOKMARKPREV + MENUITEM "Goto &Next\tF2", BME_EDIT_BOOKMARKNEXT + MENUITEM "Goto &Previous\tShift+F2", BME_EDIT_BOOKMARKPREV MENUITEM SEPARATOR - MENUITEM "&Clear All\tAlt+F2", BME_EDIT_BOOKMARKCLEAR + MENUITEM "&Clear All\tAlt+F2", BME_EDIT_BOOKMARKCLEAR END MENUITEM SEPARATOR MENUITEM "&Find...\tCtrl+F", IDM_EDIT_FIND MENUITEM "Sa&ve Find Text\tAlt+F3", IDM_EDIT_SAVEFIND MENUITEM "Find &Next\tF3", IDM_EDIT_FINDNEXT - MENUITEM "Find Previous\tShift+F3", IDM_EDIT_FINDPREV + MENUITEM "Find Previous\tShift+F3", IDM_EDIT_FINDPREV MENUITEM "R&eplace...\tCtrl+H", IDM_EDIT_REPLACE MENUITEM "Replace Ne&xt\tF4", IDM_EDIT_REPLACENEXT MENUITEM "&Goto...\tCtrl+G", IDM_EDIT_GOTOLINE @@ -377,7 +377,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "&About...\tShift+F1", IDM_HELP_ABOUT MENUITEM "&Command Line Help", IDM_HELP_CMD - MENUITEM "Check for &Updates", IDM_HELP_UPDATECHECK + MENUITEM "Check for &Updates", IDM_HELP_UPDATECHECK END END @@ -655,26 +655,26 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_NOFAILCREATE | WS_POPUP | WS CAPTION "Find Text" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "Search Strin&g:",IDC_STATIC,7,7,46,8 COMBOBOX IDC_FINDTEXT,7,17,192,116,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP CONTROL "Match &case",IDC_FINDCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,37,53,10 CONTROL "Match &whole word only",IDC_FINDWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,49,89,10 CONTROL "Match &beginning of word only",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,61,110,10 CONTROL "&Transform backslashes",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,73,85,10 + CONTROL "Regular &expression search",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,96,10 + CONTROL "Dot matches &all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,65,10 CONTROL "&Don't wrap around",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,37,75,10 CONTROL "C&lose after find",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,49,65,10 + CONTROL "Mark &Occurrences",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,61,73,10 + CONTROL "W&ildcard Search",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,85,63,10 DEFPUSHBUTTON "&Find Next",IDOK,216,7,50,14 PUSHBUTTON "Find &Previous",IDC_FINDPREV,216,24,50,14 PUSHBUTTON "Close",IDCANCEL,216,41,50,14 CONTROL "Goto Replace (Ctrl+H)",IDC_TOGGLEFINDREPLACE, "SysLink",0x0,125,104,74,10 + LTEXT "Search Strin&g:",IDC_STATIC,7,7,46,8 CONTROL "(?)",IDC_REGEXPHELP,"SysLink",0x0,106,85,14,10 CONTROL "(?)",IDC_BACKSLASHHELP,"SysLink",0x0,106,73,14,10 - CONTROL "W&ildcard Search",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,85,63,10 CONTROL "(?)",IDC_WILDCARDHELP,"SysLink",0x0,191,85,14,10 - CONTROL "Mark &Occurrences",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,61,73,10 - CONTROL "Regular &expression search",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,85,96,10 - CONTROL "Dot matches &all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,96,65,10 END IDD_REPLACE DIALOGEX 0, 0, 273, 147 @@ -682,17 +682,18 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_NOFAILCREATE | WS_POPUP | WS CAPTION "Replace Text" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "Search Strin&g:",IDC_STATIC,7,7,46,8 COMBOBOX IDC_FINDTEXT,7,17,192,116,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP - LTEXT "Replace wit&h:",IDC_STATIC,7,35,44,8 COMBOBOX IDC_REPLACETEXT,7,46,192,116,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP CONTROL "Match &case",IDC_FINDCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,66,53,10 CONTROL "Match &whole word only",IDC_FINDWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,78,89,10 CONTROL "Match &beginning of word only",IDC_FINDSTART,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,90,110,10 - CONTROL "Regular &expression search",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,114,97,10 CONTROL "&Transform backslashes",IDC_FINDTRANSFORMBS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,102,89,10 + CONTROL "Regular &expression search",IDC_FINDREGEXP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,114,97,10 + CONTROL "Dot matches &all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,125,65,10 CONTROL "&Don't wrap around",IDC_NOWRAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,66,75,10 CONTROL "C&lose after replace",IDC_FINDCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,78,77,10 + CONTROL "Mark &Occurrences",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,90,73,10 + CONTROL "W&ildcard Search",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,114,63,10 DEFPUSHBUTTON "&Find Next",IDOK,216,7,50,14 PUSHBUTTON "Find &Previous",IDC_FINDPREV,216,24,50,14 PUSHBUTTON "&Replace",IDC_REPLACE,216,41,50,14 @@ -702,12 +703,11 @@ BEGIN PUSHBUTTON "Close",IDCANCEL,216,127,50,14 CONTROL "Goto Find (Ctrl+F)",IDC_TOGGLEFINDREPLACE, "SysLink",0x0,125,131,74,10 + LTEXT "Search Strin&g:",IDC_STATIC,7,7,46,8 + LTEXT "Replace wit&h:",IDC_STATIC,7,35,44,8 CONTROL "(?)",IDC_REGEXPHELP,"SysLink",0x0,107,114,14,10 CONTROL "(?)",IDC_BACKSLASHHELP,"SysLink",0x0,107,102,14,10 - CONTROL "W&ildcard Search",IDC_WILDCARDSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,114,63,10 CONTROL "(?)",IDC_WILDCARDHELP,"SysLink",0x0,191,114,14,10 - CONTROL "Mark &Occurrences",IDC_ALL_OCCURRENCES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,125,90,73,10 - CONTROL "Dot matches &all",IDC_DOT_MATCH_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,125,65,10 END IDD_RUN DIALOGEX 0, 0, 229, 96 @@ -715,12 +715,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Run" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - ICON IDI_RUN,IDC_STATIC,10,7,21,20 - LTEXT "Type the name of a program, folder, document, or internet resource, and Windows will open it for you.",IDC_STATIC,39,7,179,17 EDITTEXT IDC_COMMANDLINE,10,35,208,13,ES_AUTOHSCROLL PUSHBUTTON "Browse...",IDC_SEARCHEXE,163,69,55,16 DEFPUSHBUTTON "OK",IDOK,47,69,55,16 PUSHBUTTON "Cancel",IDCANCEL,105,69,55,16 + ICON IDI_RUN,IDC_STATIC,10,7,20,20 + LTEXT "Type the name of a program, folder, document, or internet resource, and Windows will open it for you.",IDC_STATIC,39,7,179,17 END IDD_OPENWITH DIALOGEX 0, 0, 165, 129 @@ -730,9 +730,9 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CONTROL "",IDC_OPENWITHDIR,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,7,151,69 PUSHBUTTON "",IDC_GETOPENWITHDIR,7,83,13,13 - LTEXT "Click here to specify the directory with links to your favorite applications.",IDC_OPENWITHDESCR,26,83,132,18 DEFPUSHBUTTON "OK",IDOK,52,108,50,14 PUSHBUTTON "Cancel",IDCANCEL,108,108,50,14 + LTEXT "Click here to specify the directory with links to your favorite applications.",IDC_OPENWITHDESCR,26,83,132,18 SCROLLBAR IDC_RESIZEGRIP3,7,112,10,10 END @@ -741,7 +741,6 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Encoding" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - LTEXT "&Default encoding:",IDC_STATIC,7,7,58,8 CONTROL "",IDC_ENCODINGLIST,"ComboBoxEx32",CBS_DROPDOWNLIST | WS_CLIPSIBLINGS | WS_VSCROLL | WS_TABSTOP,7,20,166,128 CONTROL "Skip automatic &Unicode detection.",IDC_NOUNICODEDETECTION, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,43,124,10 @@ -753,6 +752,7 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,73,102,10 DEFPUSHBUTTON "OK",IDOK,68,97,50,14 PUSHBUTTON "Cancel",IDCANCEL,123,97,50,14 + LTEXT "&Default encoding:",IDC_STATIC,7,7,58,8 END IDD_DEFEOLMODE DIALOGEX 0, 0, 180, 78 @@ -760,7 +760,6 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Line Endings" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - LTEXT "&Default line ending mode:",IDC_STATIC,7,7,82,8 COMBOBOX 100,7,20,98,196,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "&Ensure consistent line endings when saving.",IDC_CONSISTENTEOLS, "Button",BS_AUTOCHECKBOX | BS_VCENTER | WS_TABSTOP,7,48,157,10 @@ -768,6 +767,7 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,60,121,10 DEFPUSHBUTTON "OK",IDOK,123,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,123,24,50,14 + LTEXT "&Default line ending mode:",IDC_STATIC,7,7,82,8 END IDD_LINENUM DIALOGEX 0, 0, 186, 47 @@ -775,12 +775,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Goto" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "&Line:",IDC_STATIC,7,7,16,8 EDITTEXT IDC_LINENUM,7,24,46,14,ES_AUTOHSCROLL - LTEXT "&Column:",IDC_STATIC,63,7,27,8 EDITTEXT IDC_COLNUM,63,24,46,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,129,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14 + LTEXT "&Line:",IDC_STATIC,7,7,16,8 + LTEXT "&Column:",IDC_STATIC,63,7,27,8 END IDD_FILEMRU DIALOGEX 0, 0, 269, 154 @@ -789,10 +789,10 @@ CAPTION "Open Recent File" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CONTROL "",IDC_FILEMRU,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,7,255,97 - CONTROL "&Save recent file list on exit.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,121,96,10 CONTROL "&Preserve caret position.",IDC_PRESERVECARET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,106,96,10 - DEFPUSHBUTTON "OK",IDOK,154,133,50,14,WS_DISABLED + CONTROL "&Save recent file list on exit.",IDC_SAVEMRU,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,121,96,10 PUSHBUTTON "Discard",IDC_REMOVE,212,106,50,14,WS_DISABLED + DEFPUSHBUTTON "OK",IDOK,154,133,50,14,WS_DISABLED PUSHBUTTON "Cancel",IDCANCEL,212,133,50,14 SCROLLBAR IDC_RESIZEGRIP,7,137,10,10 END @@ -831,7 +831,8 @@ CAPTION "Customize Schemes" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CONTROL "",IDC_STYLELIST,"SysTreeView32",TVS_SHOWSELALWAYS | TVS_SINGLEEXPAND | WS_BORDER | WS_HSCROLL | WS_TABSTOP,7,7,164,240 - LTEXT "",IDC_STYLELABEL,181,171,279,8 + EDITTEXT IDC_STYLEEDIT_ROOT,181,152,279,12,ES_AUTOHSCROLL + EDITTEXT IDC_STYLEEDIT,181,183,279,12,ES_AUTOHSCROLL PUSHBUTTON "For&e...",IDC_STYLEFORE,181,201,46,14 PUSHBUTTON "&Back...",IDC_STYLEBACK,232,201,46,14 PUSHBUTTON "&Font...",IDC_STYLEFONT,283,201,42,14 @@ -843,12 +844,11 @@ BEGIN PUSHBUTTON "E&xport...",IDC_EXPORT,237,233,50,14 DEFPUSHBUTTON "OK",IDOK,355,233,50,14 PUSHBUTTON "Cancel",IDCANCEL,410,233,50,14 + LTEXT "",IDC_STYLELABEL,181,171,279,8 GROUPBOX "Info",IDC_STATIC,180,7,280,127 ICON IDI_STYLES,IDC_STATIC,189,19,20,20 LTEXT "Customize Schemes",IDC_TITLE,220,25,200,12 LTEXT "Filename extensions must be separated by ;\n\nStyle format:\nfont:Name;size:nn;bold;italic;underline;fore:#ffffff;back:#bbbbbb;eolfilled\n\nStyle properties can be copied using copy and paste or drag and drop.\n\nThe ""Preview"" button will not apply any changes.",IDC_STATIC,197,50,252,70 - EDITTEXT IDC_STYLEEDIT,181,183,279,12,ES_AUTOHSCROLL - EDITTEXT IDC_STYLEEDIT_ROOT,181,152,279,12,ES_AUTOHSCROLL LTEXT "",IDC_STYLELABEL_ROOT,181,141,279,8 END @@ -857,15 +857,15 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Tab Settings" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "&Tabulator width:",IDC_STATIC,7,10,54,8 EDITTEXT 100,67,7,30,14,ES_AUTOHSCROLL - LTEXT "&Indentation size:",IDC_STATIC,7,30,55,8 EDITTEXT 101,67,27,30,14,ES_AUTOHSCROLL CONTROL "Insert tabs as &spaces.",102,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,47,87,10 CONTROL "Tab &key reformats indentation.",103,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,59,115,10 CONTROL "&Backspace key reformats indentation.",104,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,71,137,10 DEFPUSHBUTTON "OK",IDOK,117,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,117,24,50,14 + LTEXT "&Tabulator width:",IDC_STATIC,7,10,54,8 + LTEXT "&Indentation size:",IDC_STATIC,7,30,55,8 END IDD_LONGLINES DIALOGEX 0, 0, 184, 55 @@ -873,12 +873,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Long Lines" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "&Limit for long lines:",IDC_STATIC,7,10,60,8 EDITTEXT 100,77,7,30,14,ES_AUTOHSCROLL CONTROL "Show &edge line.",101,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,27,67,10 CONTROL "Change &background color.",102,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,7,38,100,10 DEFPUSHBUTTON "OK",IDOK,127,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,127,24,50,14 + LTEXT "&Limit for long lines:",IDC_STATIC,7,10,60,8 END IDD_WORDWRAP DIALOGEX 0, 0, 196, 100 @@ -903,38 +903,38 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Page Setup" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - GROUPBOX "Paper",1073,8,8,224,56,WS_GROUP - LTEXT "Si&ze:",1089,16,24,36,8 - COMBOBOX 1137,64,23,160,160,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "&Source:",1090,16,45,36,8 - COMBOBOX 1138,64,42,160,160,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - GROUPBOX "Orientation",1072,8,69,64,56,WS_GROUP + EDITTEXT 1155,120,82,28,12,WS_GROUP + EDITTEXT 1157,196,82,28,12,WS_GROUP + EDITTEXT 1156,120,103,28,12,WS_GROUP + EDITTEXT 1158,196,103,28,12,WS_GROUP CONTROL "P&ortrait",1056,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,82,52,12 CONTROL "L&andscape",1057,"Button",BS_AUTORADIOBUTTON,16,103,52,12 - GROUPBOX "Margins",1075,80,69,152,56,WS_GROUP - LTEXT "&Left:",1102,88,85,32,8 - EDITTEXT 1155,120,82,28,12,WS_GROUP - LTEXT "&Top:",1104,88,104,32,8 - EDITTEXT 1156,120,103,28,12,WS_GROUP - LTEXT "&Right:",1103,164,85,32,8 - EDITTEXT 1157,196,82,28,12,WS_GROUP - LTEXT "&Bottom:",1105,164,104,32,8 - EDITTEXT 1158,196,103,28,12,WS_GROUP - GROUPBOX "Headers and Footers",1074,8,130,224,56,WS_GROUP - LTEXT "&Header:",IDC_STATIC,16,146,36,8 COMBOBOX 32,64,145,160,160,CBS_DROPDOWNLIST | WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "&Footer:",IDC_STATIC,16,167,36,8 COMBOBOX 33,64,164,160,160,CBS_DROPDOWNLIST | WS_VSCROLL | WS_GROUP | WS_TABSTOP - GROUPBOX "Print Colors",1076,8,191,224,37,WS_GROUP - LTEXT "Mo&de:",IDC_STATIC,16,207,36,8 COMBOBOX 34,64,206,160,160,CBS_DROPDOWNLIST | WS_VSCROLL | WS_GROUP | WS_TABSTOP - GROUPBOX "Zoom",IDC_STATIC,240,170,108,58,WS_GROUP - LTEXT "Print zoo&m (-10 to +20):",IDC_STATIC,248,188,92,8 - EDITTEXT 30,298,206,42,12,ES_AUTOHSCROLL - CONTROL "",31,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,282,205,11,14 DEFPUSHBUTTON "OK",1,190,237,50,14,WS_GROUP PUSHBUTTON "Cancel",2,244,237,50,14 PUSHBUTTON "&Printer...",1026,298,237,50,14 + CONTROL "",31,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_HOTTRACK,282,205,11,14 + EDITTEXT 30,298,206,42,12,ES_AUTOHSCROLL + COMBOBOX 1137,64,23,160,160,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + COMBOBOX 1138,64,42,160,160,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + GROUPBOX "Paper",1073,8,8,224,56,WS_GROUP + LTEXT "Si&ze:",1089,16,24,36,8 + LTEXT "&Source:",1090,16,45,36,8 + GROUPBOX "Orientation",1072,8,69,64,56,WS_GROUP + GROUPBOX "Margins",1075,80,69,152,56,WS_GROUP + LTEXT "&Left:",1102,88,85,32,8 + LTEXT "&Top:",1104,88,104,32,8 + LTEXT "&Right:",1103,164,85,32,8 + LTEXT "&Bottom:",1105,164,104,32,8 + GROUPBOX "Headers and Footers",1074,8,130,224,56,WS_GROUP + LTEXT "&Header:",IDC_STATIC,16,146,36,8 + LTEXT "&Footer:",IDC_STATIC,16,167,36,8 + GROUPBOX "Print Colors",1076,8,191,224,37,WS_GROUP + LTEXT "Mo&de:",IDC_STATIC,16,207,36,8 + GROUPBOX "Zoom",IDC_STATIC,240,170,108,58,WS_GROUP + LTEXT "Print zoo&m (-10 to +20):",IDC_STATIC,248,188,92,8 GROUPBOX "Preview",IDC_STATIC,240,8,108,157 CONTROL "",1080,"Static",SS_WHITERECT,254,47,80,80 CONTROL "",1081,"Static",SS_GRAYRECT,334,51,4,80 @@ -948,9 +948,9 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN CONTROL "",IDC_FAVORITESDIR,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,7,151,69 PUSHBUTTON "",IDC_GETFAVORITESDIR,7,83,13,13 - LTEXT "Click here to specify the directory with links to your favorite files.",IDC_FAVORITESDESCR,26,83,132,18 DEFPUSHBUTTON "OK",IDOK,52,108,50,14 PUSHBUTTON "Cancel",IDCANCEL,108,108,50,14 + LTEXT "Click here to specify the directory with links to your favorite files.",IDC_FAVORITESDESCR,26,83,132,18 SCROLLBAR IDC_RESIZEGRIP3,7,112,10,10 END @@ -959,36 +959,36 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Add to Favorites" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - LTEXT "Enter the name for the new favorites item:",IDC_STATIC,7,7,158,8 EDITTEXT 100,7,22,158,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,59,45,50,14,WS_DISABLED PUSHBUTTON "Cancel",IDCANCEL,115,45,50,14 + LTEXT "Enter the name for the new favorites item:",IDC_STATIC,7,7,158,8 END -IDD_PASSWORDS DIALOG 0, 0, 311, 122 +IDD_PASSWORDS DIALOGEX 0, 0, 311, 122 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Encryption" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - DEFPUSHBUTTON "OK",IDOK,245,94,50,14 - PUSHBUTTON "Cancel",IDCANCEL,184,94,50,14 - CONTROL "Set New Master Key",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,60,84,10 EDITTEXT IDC_EDIT1,17,35,276,14,ES_AUTOHSCROLL | WS_GROUP EDITTEXT IDC_EDIT2,17,74,277,14 - LTEXT "Optional Master Key",IDC_STATIC,18,61,66,10,SS_SUNKEN | NOT WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,184,94,50,14 + DEFPUSHBUTTON "OK",IDOK,245,94,50,14 CONTROL "Encrypt using Passphrase",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,18,21,98,10 + CONTROL "Set New Master Key",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,107,60,84,10 CONTROL "Reuse Master Key",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,218,60,76,10 + LTEXT "Optional Master Key",IDC_STATIC,18,61,66,10,SS_SUNKEN | NOT WS_GROUP GROUPBOX "Passphrase",IDC_STATIC,7,7,297,108 END -IDD_READPW DIALOG 0, 0, 299, 84 +IDD_READPW DIALOGEX 0, 0, 299, 84 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Decrypt File" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN + EDITTEXT IDC_EDIT3,16,24,267,14,ES_PASSWORD | ES_AUTOHSCROLL | WS_GROUP DEFPUSHBUTTON "OK",IDOK,233,54,50,14 PUSHBUTTON "Cancel",IDCANCEL,175,54,50,14 - EDITTEXT IDC_EDIT3,16,24,267,14,ES_PASSWORD | ES_AUTOHSCROLL | WS_GROUP CONTROL "decrypt using the master key",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,60,148,10 LTEXT "This file has a master key",IDC_STATICPW,16,47,89,11,NOT WS_GROUP GROUPBOX "Passphrase",IDC_STATIC,7,7,285,70 @@ -999,10 +999,10 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Column Wrap" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "&Boundary:",IDC_STATIC,7,7,34,8 EDITTEXT IDC_COLUMNWRAP,7,24,46,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,73,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,73,24,50,14 + LTEXT "&Boundary:",IDC_STATIC,7,7,34,8 END IDD_MODIFYLINES DIALOGEX 0, 0, 182, 110 @@ -1010,21 +1010,21 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Modify Lines" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "&Prefix text to lines:",IDC_STATIC,7,7,62,8 EDITTEXT 100,7,18,98,14,ES_AUTOHSCROLL - LTEXT "&Append text to lines:",IDC_STATIC,7,37,68,8 EDITTEXT 101,7,48,98,14,ES_AUTOHSCROLL + LTEXT "$(L)",200,7,72,14,8 + LTEXT "$(N)",202,7,82,15,8 + LTEXT "$(I)",204,7,92,13,8 + LTEXT "$(0L)",201,30,72,18,8 + LTEXT "$(0N)",203,30,82,19,8 + LTEXT "$(0I)",205,30,92,17,8 + LTEXT "Document line number.",IDC_STATIC,57,72,74,8 + LTEXT "Continuous number.",IDC_STATIC,57,82,66,8 + LTEXT "Continuous number (zero-based).",IDC_STATIC,57,92,109,8 DEFPUSHBUTTON "OK",IDOK,125,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,125,24,50,14 - LTEXT "$(L)",200,7,72,14,8 - LTEXT "$(0L)",201,30,72,18,8 - LTEXT "Document line number.",IDC_STATIC,57,72,74,8 - LTEXT "$(N)",202,7,82,15,8 - LTEXT "$(0N)",203,30,82,19,8 - LTEXT "Continuous number.",IDC_STATIC,57,82,66,8 - LTEXT "$(I)",204,7,92,13,8 - LTEXT "$(0I)",205,30,92,17,8 - LTEXT "Continuous number (zero-based).",IDC_STATIC,57,92,109,8 + LTEXT "&Prefix text to lines:",IDC_STATIC,7,7,62,8 + LTEXT "&Append text to lines:",IDC_STATIC,7,37,68,8 END IDD_INSERTTAG DIALOGEX 0, 0, 182, 70 @@ -1032,12 +1032,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Insert HTML/XML Tag" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "&Opening tag (with attributes):",IDC_STATIC,7,7,97,8 EDITTEXT 100,7,18,98,14,ES_AUTOHSCROLL - LTEXT "&Closing tag (can be edited):",IDC_STATIC,7,37,90,8 EDITTEXT 101,7,48,98,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,125,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,125,24,50,14 + LTEXT "&Opening tag (with attributes):",IDC_STATIC,7,7,97,8 + LTEXT "&Closing tag (can be edited):",IDC_STATIC,7,37,90,8 END IDD_ENCLOSESELECTION DIALOGEX 0, 0, 182, 70 @@ -1045,12 +1045,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Enclose Selection" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - LTEXT "Insert &before selection:",IDC_STATIC,7,7,76,8 EDITTEXT 100,7,18,98,14,ES_AUTOHSCROLL - LTEXT "Insert &after selection:",IDC_STATIC,7,37,71,8 EDITTEXT 101,7,48,98,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,125,7,50,14 PUSHBUTTON "Cancel",IDCANCEL,125,24,50,14 + LTEXT "Insert &before selection:",IDC_STATIC,7,7,76,8 + LTEXT "Insert &after selection:",IDC_STATIC,7,37,71,8 END IDD_INFOBOX DIALOGEX 0, 0, 244, 71 @@ -1058,11 +1058,11 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Notepad3" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - ICON IDR_MAINWND,IDC_INFOBOXICON,7,7,21,20 - LTEXT "",IDC_INFOBOXTEXT,35,7,202,34 DEFPUSHBUTTON "OK",IDOK,187,50,50,14 CONTROL "&Don't display this message again.",IDC_INFOBOXCHECK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,54,122,10 + ICON IDR_MAINWND,IDC_INFOBOXICON,7,7,20,20 + LTEXT "",IDC_INFOBOXTEXT,35,7,202,34 END IDD_INFOBOX2 DIALOGEX 0, 0, 244, 71 @@ -1070,12 +1070,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Notepad3" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - ICON IDR_MAINWND,IDC_INFOBOXICON,7,7,21,20 - LTEXT "",IDC_INFOBOXTEXT,35,7,202,34 PUSHBUTTON "&Yes",IDYES,131,50,50,14 PUSHBUTTON "&No",IDNO,187,50,50,14 CONTROL "&Don't display this message again.",IDC_INFOBOXCHECK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,54,122,10 + ICON IDR_MAINWND,IDC_INFOBOXICON,7,7,20,20 + LTEXT "",IDC_INFOBOXTEXT,35,7,202,34 END IDD_INFOBOX3 DIALOGEX 0, 0, 244, 71 @@ -1083,12 +1083,12 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Notepad3" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - ICON IDR_MAINWND,IDC_INFOBOXICON,7,7,21,20 - LTEXT "",IDC_INFOBOXTEXT,35,7,202,34 DEFPUSHBUTTON "OK",IDOK,131,50,50,14 PUSHBUTTON "Cancel",IDCANCEL,187,50,50,14 CONTROL "&Don't display this message again.",IDC_INFOBOXCHECK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,54,122,10 + ICON IDR_MAINWND,IDC_INFOBOXICON,7,7,20,20 + LTEXT "",IDC_INFOBOXTEXT,35,7,202,34 END IDD_SORT DIALOGEX 0, 0, 184, 140 @@ -1114,10 +1114,10 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Recode" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - LTEXT "Select source &encoding to reload file:",IDC_STATIC,7,7,119,8 CONTROL "",IDC_ENCODINGLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,19,151,87 DEFPUSHBUTTON "OK",IDOK,53,114,50,14,WS_DISABLED PUSHBUTTON "Cancel",IDCANCEL,108,114,50,14 + LTEXT "Select source &encoding to reload file:",IDC_STATIC,7,7,119,8 SCROLLBAR IDC_RESIZEGRIP4,7,118,10,10 END @@ -1126,10 +1126,10 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Encoding" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - LTEXT "Select current file &encoding:",IDC_STATIC,7,7,90,8 CONTROL "",IDC_ENCODINGLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_AUTOARRANGE | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP,7,19,151,87 DEFPUSHBUTTON "OK",IDOK,53,114,50,14,WS_DISABLED PUSHBUTTON "Cancel",IDCANCEL,108,114,50,14 + LTEXT "Select current file &encoding:",IDC_STATIC,7,7,90,8 SCROLLBAR IDC_RESIZEGRIP4,7,118,10,10 END @@ -1310,6 +1310,10 @@ BEGIN BOTTOMMARGIN, 115 END + IDD_READPW, DIALOG + BEGIN + END + IDD_COLUMNWRAP, DIALOG BEGIN LEFTMARGIN, 7 @@ -1934,12 +1938,12 @@ BEGIN 63268 "Ordered List" END -#endif // Englisch (USA) resources +#endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// Deutsch (Schweiz) resources +// German (Switzerland) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DES) LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_SWISS @@ -1968,7 +1972,7 @@ END #endif // APSTUDIO_INVOKED -#endif // Deutsch (Schweiz) resources +#endif // German (Switzerland) resources ///////////////////////////////////////////////////////////////////////////// From 0d87419b2ba80d1324b9a9b7755de9641773849a Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Tue, 6 Feb 2018 13:15:12 +0100 Subject: [PATCH 7/7] + CR: add Accelerator Key (Alt+NK0) to launch new empty instance of NP3 (same as Alt+0) --- src/Notepad3.rc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Notepad3.rc b/src/Notepad3.rc index c37ce922a..1c7752cf9 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -584,6 +584,7 @@ BEGIN VK_DIVIDE, IDM_EDIT_LINECOMMENT, VIRTKEY, CONTROL, NOINVERT VK_DIVIDE, IDM_EDIT_STREAMCOMMENT, VIRTKEY, SHIFT, CONTROL, NOINVERT VK_NUMPAD0, IDM_VIEW_RESETZOOM, VIRTKEY, CONTROL, NOINVERT + VK_NUMPAD0, IDM_FILE_NEWWINDOW2, VIRTKEY, ALT, NOINVERT VK_MULTIPLY, IDM_VIEW_TRANSPARENT, VIRTKEY, CONTROL, NOINVERT VK_OEM_COMMA, CMD_JUMP2SELSTART, VIRTKEY, CONTROL, NOINVERT VK_OEM_MINUS, IDM_VIEW_ZOOMOUT, VIRTKEY, CONTROL, NOINVERT