Merge pull request #5723 from RaiKoHoff/dev_master

feat: option to stop Clipboard monitoring during runtime
This commit is contained in:
Rainer Kottenhoff 2026-04-21 08:42:13 +02:00 committed by GitHub
commit ba2aa303cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 50 additions and 5 deletions

View File

@ -190,6 +190,7 @@ No native ARM64 grepWin build exists. The ARM64 build uses `grepWin-x64_portable
- **Editor config**: `.editorconfig` enforces UTF-8/CRLF for source files, 4-space indentation for C/C++; Lexilla code uses tabs (preserved from upstream)
- **File encoding rules** (must be respected when creating or editing these files):
- `language\*\*.rc`**UTF-8 without BOM**. Never write or save these files with a UTF-8 BOM. Use `Build\rc_to_utf8.cmd` to strip accidental BOMs.
- **PowerShell pitfall**: `[System.Text.Encoding]::UTF8` writes **with** BOM. Always use `[System.Text.UTF8Encoding]::new($false)` when writing `.rc` files from PowerShell scripts.
- `Build\Notepad3.ini`, `Build\minipath.ini`**UTF-8 with BOM** (BOM = `EF BB BF`). These INI reference files must retain the BOM.
- **String safety**: Uses `strsafe.h` throughout; deprecated string functions are disabled

View File

@ -275,6 +275,7 @@ No native ARM64 grepWin build exists. The ARM64 build uses `grepWin-x64_portable
- `.editorconfig` enforces UTF-8/CRLF for source, 4-space indent for C/C++; Lexilla code uses tabs (preserved from upstream)
- **File encoding rules** (must be respected when creating or editing these files):
- `language\*\*.rc`**UTF-8 without BOM**. Never write or save these files with a UTF-8 BOM. Use `Build\rc_to_utf8.cmd` to strip accidental BOMs.
- **PowerShell pitfall**: `[System.Text.Encoding]::UTF8` writes **with** BOM. Always use `[System.Text.UTF8Encoding]::new($false)` when writing `.rc` files from PowerShell scripts.
- `Build\Notepad3.ini`, `Build\minipath.ini`**UTF-8 with BOM** (BOM = `EF BB BF`). These INI reference files must retain the BOM.
- String safety via `strsafe.h` throughout; deprecated string functions are disabled

View File

@ -873,6 +873,7 @@
#define IDM_TRAY_EXIT 43701
#define IDM_SETPASS 43702
#define IDM_EDIT_INSERT_GUID 43705
#define IDM_EDIT_STOP_PASTEBOARD 43706
#define IDS_ENC_ANSI 61000

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Wysig"
BEGIN
MENUITEM "Document &Read Only" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "O&ngedaan\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Oo&rdoen\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Праўка"
BEGIN
MENUITEM "Дакумент толькі для &чытання" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "Ад&мена\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Паўтор\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Bearbeiten"
BEGIN
MENUITEM "&Dokument Nur Lesen" IDM_VIEW_READONLY
MENUITEM "Zwischenablage &Überwachung abbrechen", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Rückgängig\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Wiederholen\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Επεξεργασία"
BEGIN
MENUITEM "Document &Read Only" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "Αναίρε&ση\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Επανάλη&ψη ενέργειας\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Edit"
BEGIN
MENUITEM "Document &Read Only" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Undo\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Redo\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Edit"
BEGIN
MENUITEM "Document &Read Only" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Undo\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Redo\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Edición"
BEGIN
MENUITEM "Documento &Sólo lectura" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Deshacer\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Re&hacer\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Muokkaa"
BEGIN
MENUITEM "Dokumentti Vain &luettavissa" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "K&umoa\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Tee uudelleen\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Edition"
BEGIN
MENUITEM "Document en &lecture seule" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "Défaire\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Rétablir\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "संपादन (&E)"
BEGIN
MENUITEM "दस्तावेज़ केवल पढ़ने योग्य (&R)" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "पूर्ववत करें (&U)\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "फिर से करें (&R)\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Szerkesztés"
BEGIN
MENUITEM "&Csak olvasható dokumentum" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Visszavonás\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Újra\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Sunting"
BEGIN
MENUITEM "Mode Hanya &Baca" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Urungkan\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Kem&balikan\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Modifica"
BEGIN
MENUITEM "Documento in sola &lettura" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Annulla\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Ripristina\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "編集(&E)"
BEGIN
MENUITEM "閲覧専用(&R)" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "元に戻す(&U)\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "やり直し(&R)\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "편집(&E)"
BEGIN
MENUITEM "읽기 전용 문서(&R)" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "실행 취소(&U)\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "다시 실행(&R)\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "Bew&erken"
BEGIN
MENUITEM "Document &Read Only" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Ongedaan maken\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Op&nieuw uitvoeren\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Edycja"
BEGIN
MENUITEM "Dokument &tylko do odczytu" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Cofnij\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Powtórz\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Editar"
BEGIN
MENUITEM "Documento somente leitu&ra" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Desfazer\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Refazer\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Editar"
BEGIN
MENUITEM "Documento só de leitu&ra" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "An&ular\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Refazer\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Правка"
BEGIN
MENUITEM "Документ только для чтени&я" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Отмена\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Повтор\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "&Upraviť"
BEGIN
MENUITEM "Dokument &Len na čítanie" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Späť\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Znova\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "Redigera"
BEGIN
MENUITEM "Skrivskydda dokument" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "Ångra\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Gör om\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "Dü&zenle"
BEGIN
MENUITEM "Belge salt &okunur" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "&Geri al\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "&Yinele\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "Chỉnh sửa(&E)"
BEGIN
MENUITEM "Tài liệu chỉ đọc(&R)" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "Hoàn tác(&U)\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "Làm lại(&R)\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "编辑(&E)"
BEGIN
MENUITEM "只读(&R)" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "撤销(&U)\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "重做(&R)\tCtrl+Y", IDM_EDIT_REDO

View File

@ -155,6 +155,7 @@ BEGIN
POPUP "編輯(&E)"
BEGIN
MENUITEM "唯讀(&R)" IDM_VIEW_READONLY
MENUITEM "Stop Clipboard &Monitoring", IDM_EDIT_STOP_PASTEBOARD
MENUITEM SEPARATOR
MENUITEM "復原(&U)\tCtrl+Z", IDM_EDIT_UNDO
MENUITEM "取消復原(&R)\tCtrl+Y", IDM_EDIT_REDO

View File

@ -2284,10 +2284,12 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
// break;
case WM_DRAWCLIPBOARD:
if (!s_bLastCopyFromMe) {
s_iLastCopyTime = GetTicks_ms();
} else {
s_bLastCopyFromMe = false;
if (s_flagPasteBoard) {
if (!s_bLastCopyFromMe) {
s_iLastCopyTime = GetTicks_ms();
} else {
s_bLastCopyFromMe = false;
}
}
if (s_hwndNextCBChain) {
@ -2300,7 +2302,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
s_hwndNextCBChain = (HWND)lParam;
}
if (s_hwndNextCBChain) {
SendMessage(s_hwndNextCBChain,WM_CHANGECBCHAIN,lParam,wParam);
SendMessage(s_hwndNextCBChain,WM_CHANGECBCHAIN,wParam,lParam);
}
break;
@ -4166,6 +4168,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
OpenClipboard(hwnd);
EnableCmd(hmenu, IDM_EDIT_CLEARCLIPBOARD, CountClipboardFormats());
CloseClipboard();
EnableCmd(hmenu, IDM_EDIT_STOP_PASTEBOARD, s_flagPasteBoard);
EnableCmd(hmenu, IDM_EDIT_MOVELINEUP, !ro);
EnableCmd(hmenu, IDM_EDIT_MOVELINEDOWN, !ro);
@ -5138,6 +5141,17 @@ static bool _HandleEditBasicCommands(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM
break;
case IDM_EDIT_STOP_PASTEBOARD:
KillTimer(Globals.hwndMain, ID_PASTEBOARDTIMER);
ChangeClipboardChain(Globals.hwndMain, s_hwndNextCBChain);
s_hwndNextCBChain = NULL;
s_flagPasteBoard = false;
s_iLastCopyTime = 0;
s_bLastCopyFromMe = false;
UpdateToolbar_Now(Globals.hwndMain);
break;
case IDM_EDIT_SELECTALL:
SciCall_SelectAll();
break;
@ -12294,6 +12308,8 @@ void CALLBACK PasteBoardTimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD
UNREFERENCED_PARAMETER(idEvent);
UNREFERENCED_PARAMETER(dwTime);
if (!s_flagPasteBoard) { return; }
if ((s_iLastCopyTime > 0) && ((GetTicks_ms() - s_iLastCopyTime) > 200)) {
if (SciCall_CanPaste()) {