Addresses reported flickering and rendering problems on ARM64 devices
running Windows 11 25H2 by implementing ARM64-specific rendering
defaults, build configuration fixes, and redraw optimizations.
Rendering fixes:
- Default to SC_TECHNOLOGY_DIRECTWRITERETAIN on ARM64 to preserve
back buffer between frames, avoiding blank flashes with Qualcomm
Adreno GPUs and Win11 25H2 DWM compositor changes
- Wrap MsgThemeChanged() in WM_SETREDRAW FALSE/TRUE to suppress
N intermediate repaints during heavy theme/DPI transitions
- Add WS_EX_COMPOSITED to main window on ARM64 for system-level
double-buffering
- Remove RDW_ERASE from DarkMode ListView/TreeView RedrawWindow()
calls to avoid background erase flash during theme changes
Build configuration fixes:
- Add _WIN64 preprocessor define to Scintilla, SciLexer, Lexilla
ARM64 configurations (was missing, could cause 32-bit code paths)
- Add TargetMachine=MachineARM64 to all ARM64 linker sections across
Notepad3, Scintilla, SciLexer, Lexilla projects
- Add CETCompat=false to Scintilla and SciLexer ARM64 configurations
(CET is x86/x64 only, not compatible with ARM64)
Platform code improvements:
- Add _M_ARM64 detection for GrepWin binary selection (ARM64 was
silently mapped to x64 binary via _WIN64 check)
- Add NP3_BUILD_ARM64 helper macro in TypeDefs.h for future
ARM64-specific code paths
- Document RenderingTechnology setting in Build/Notepad3.ini with
per-resolution override syntax and ARM64 troubleshooting tips
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Added MonitoringLog bool to Settings struct and implemented load/save
in Config.cpp. The setting is now restored from INI file on startup
and saved when settings are saved.
Changes:
- TypeDefs.h: Added MonitoringLog to SETTINGS_T struct
- Config.cpp: Added GET_BOOL_VALUE_FROM_INISECTION for loading
- Config.cpp: Added SAVE_VALUE_IF_NOT_EQ_DEFAULT for saving
- Notepad3.c: Initialize FileWatching.MonitoringLog from Settings
Fixes#5037
Changed CreateDirectoryW to SHCreateDirectoryExW in CreateIniFile() to
create all intermediate directories in the settings path. This fixes the
issue where Notepad3 cannot save settings if %APPDATA%\Rizonesoft\Notepad3
folder doesn't exist (e.g., when installed via Chocolatey under admin).
Fixes#5075