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>
Reverts the broken Scintilla 5.5.8 / Lexilla 5.4.6 upgrade from
commit 2e4889e82 which was inadvertently pulled during rebase.
This restores the last known working state before incremental
upgrade attempt.
- 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