feat(autofill): lazy mode - une barrette de deux boutons pour remplir a la souris
Menu du tray -> "Lazy mode". Deux boutons Full / Password qui flottent au-dessus de tout et font ce que font Ctrl+Shift+L / Ctrl+Shift+P. WS_EX_NOACTIVATE est toute l'astuce : une fenetre ordinaire prendrait le premier plan au clic, le champ que l'utilisateur vient de cliquer perdrait son curseur, et GetForegroundWindow nous designerait nous-memes comme cible. Le clic ne deplace donc jamais le premier plan. Le corps du handler WM_HOTKEY est extrait dans FireAutofillRequest : hotkey et barrette partagent la capture de la cible, le matching de titre et le picker. Un seul chemin, deux gestes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -160,6 +160,32 @@ Retour Delphi → JS via `WebBrowser.ExecuteJavaScript('Bridge.onX(...)')`.
|
||||
Combos autofill configurables depuis Settings (synced en DB
|
||||
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`.
|
||||
|
||||
**`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
|
||||
curseur, et `GetForegroundWindow` nous désignerait nous-mêmes comme cible.
|
||||
NOACTIVATE veut dire que le clic ne déplace jamais le premier plan : le
|
||||
navigateur reste actif, son champ reste focalisé, et la capture voit exactement
|
||||
ce que voit le chemin hotkey.
|
||||
|
||||
Détails :
|
||||
- Fenêtre créée par un **second** `AllocateHWnd` (`FLazyWnd`), séparée de la
|
||||
fenêtre message-only : `WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE`,
|
||||
deux enfants `BUTTON` (IDs 101/102) → `WM_COMMAND` → `FireAutofillRequest`.
|
||||
- `FireAutofillRequest(AKind)` est le corps **extrait** du handler `WM_HOTKEY` :
|
||||
hotkey et barrette partagent capture de la cible, matching de titre et picker.
|
||||
Un seul chemin, deux gestes.
|
||||
- `WM_NCHITTEST` → `HTCAPTION` : toute la barrette est sa propre barre de titre
|
||||
(elle finit par se poser sur le champ qu'elle remplit, il faut pouvoir la
|
||||
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**.
|
||||
|
||||
## Debug mode
|
||||
|
||||
Fichier `config.txt` à côté de l'exe (tous champs optionnels) :
|
||||
|
||||
Reference in New Issue
Block a user