feat(autofill): un bouton Open, et le menu ne passe plus sous la barrette

Quand la barrette est allumee, elle est souvent la seule chose de
l'application a l'ecran : revenir au coffre ne doit pas demander de
retrouver l'icone du tray.

Le menu d'opacite passait derriere : le battement qui repose la barrette
en tete de la bande TOPMOST cinq fois par seconde recouvrait le menu que
la barrette venait d'ouvrir - lui aussi dans cette bande. TrackPopupMenu
est modal, donc le minuteur battait pendant tout ce temps. Il s'arrete
maintenant le temps du menu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-26 17:35:36 +01:00
parent 6b908e73a5
commit 0604cca148
2 changed files with 25 additions and 6 deletions
+9 -4
View File
@@ -164,9 +164,10 @@ via `settings_json`).
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`. Un
quatrième bouton `X` la referme — elle flotte au-dessus de tout, s'en
débarrasser doit pouvoir se faire là où elle est, pas seulement depuis le tray.
exactement ce que font `Ctrl+Shift+L` / `Ctrl+Shift+P` / `Ctrl+Shift+T`. Deux
boutons de plus, *Open* et `X` : quand la barrette est allumée, elle est souvent
la seule chose de l'application à l'écran — revenir au coffre ou s'en
débarrasser ne doit pas obliger à retrouver l'icône du tray.
**`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
@@ -210,7 +211,11 @@ Détails :
aussi, et cliquer son fond vide la remonte en tête de cette bande — une
barrette posée dessus passe **derrière** et semble avoir disparu. Le même
battement de 200 ms la repose (`SetWindowPos … SWP_NOMOVE or SWP_NOSIZE`) ;
sans mouvement ni taille à changer, l'appel ne repeint rien.
sans mouvement ni taille à changer, l'appel ne repeint rien. **Ce battement
s'arrête pendant le menu d'opacité** (`KillTimer` / `SetTimer` autour de
`TrackPopupMenu`, qui est modal) : le menu déroulant est lui aussi dans la
bande `TOPMOST`, et se faisait donc recouvrir par la barrette qui venait de
l'ouvrir.
- **Traîner depuis un bouton** : les boutons sont subclassés (`GWLP_WNDPROC`,
une seule proc d'origine — même classe). Sur `WM_LBUTTONDOWN`, **`DragDetect`**
tranche entre clic et glissement en respectant le seuil réglé par