feat(autofill): un troisieme bouton 2FA, et la barrette suit le theme

SetPreferredAppMode(ForceDark) ne themise que ce que le systeme dessine
lui-meme - menus, ascenseurs, infobulles. Un bouton Win32 standard reste
donc gris clair sur fond sombre, ce que la capture montrait.

BS_OWNERDRAW + WM_DRAWITEM : le systeme garde le suivi de la souris et
l'etat enfonce, nous ne reprenons que les couleurs, recopiees des
variables de css/style.css. Le cadre passe dans WM_ERASEBKGND plutot que
par WS_BORDER, qui se sert dans les couleurs systeme.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-26 15:49:49 +01:00
parent 09bbd3fe9e
commit 52f5024de0
2 changed files with 104 additions and 12 deletions
+11 -3
View File
@@ -162,9 +162,9 @@ via `settings_json`).
## Lazy mode (remplir à la souris)
Menu du tray → **Lazy mode (fill with the mouse)** : une barrette de deux
boutons *Full* / *Password* qui flotte au-dessus de tout et fait exactement ce
que font `Ctrl+Shift+L` / `Ctrl+Shift+P`.
Menu du tray → **Lazy mode (fill with the mouse)** : une barrette de trois
boutons *Full* / *Password* / *2FA* qui flotte au-dessus de tout et fait
exactement ce que font `Ctrl+Shift+L` / `Ctrl+Shift+P` / `Ctrl+Shift+T`.
**`WS_EX_NOACTIVATE` est toute l'astuce.** Une fenêtre ordinaire prendrait le
premier plan au clic — le champ que l'utilisateur vient de cliquer perdrait son
@@ -185,6 +185,14 @@ Détails :
pousser). `WM_ERASEBKGND` peint le fond — la classe `TPUtilWindow`
d'`AllocateHWnd` n'a **pas** de brosse de fond.
- Position : coin bas-droit de la *work area* au démarrage, **pas persistée**.
- **Thème** : boutons `BS_OWNERDRAW` + `WM_DRAWITEM`, palette recopiée des
variables de `css/style.css` en COLORREF (`$00BBGGRR` — octets **inversés**
par rapport à l'hexa CSS). `SetPreferredAppMode(ForceDark)` ne themise que ce
que le système dessine lui-même (menus, ascenseurs, infobulles) : un bouton
Win32 standard reste gris clair sur fond sombre. `ApplyTitleBarTheme` mémorise
le mode dans `FDarkTheme` et `RedrawWindow(… RDW_ALLCHILDREN)` la barrette.
Le cadre est peint dans `WM_ERASEBKGND` plutôt que par `WS_BORDER`, qui se
sert dans les couleurs système.
## Debug mode