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>
- Updated Scintilla from 5.5.7 to 5.5.8
- Updated Lexilla from 5.4.5 to 5.4.6
- Preserved NP3 customizations (oniguruma regex, lexers_x, Scintilla.h patches)
- Documented all Scintilla.h NP3 patches in research doc
- Added _upgrade_backup to .gitignore
- Updated Changes.txt with upgrade entry
Changes:
- Moved installer scripts to Build\Installer folder with local language files
- Fixed user config setup to run as original user context (ExecAsOriginalUser)
- Added Segment Heap memory optimization (PR #5490)
- Updated .gitignore to exclude .agent folder
- Created todo folder with Scintilla/Lexilla upgrade research